class_name GameController extends Node2D signal teleportSignal(body:RigidBody2D) signal destroySignal(body) signal damageSignal(body) var numberOfCrates = 2 var totalCoins = 0 var coinsRemaining = 0 var coinsCollected = 0 var enemy:CharacterStats var player:CharacterStats var enemiesDict={} var playerStats={} # level information var levelArray = ["res://scenes/game.tscn", "res://scenes/level2.tscn", "res://scenes/level3.tscn"] var currentLevel = 0 # Called when the node enters the scene tree for the first time. func _ready() -> void: get_window().grab_focus() enemy = load("res://scripts/rscs/slimeStats.tres") player = load("res://scripts/rscs/playerStats.tres") func reset()->void: playerStats={ "health":player.currentHealth, "meleeAttack":player.meleeDamage, "rangeAttack":player.rangeDamage } coinsCollected = 0 # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: pass func _on_trigger(effect: Variant, Object: Variant) -> void: print("GC knows about trigger") match effect: "destroy": if not Object is Player: destroySignal.emit(Object) "teleport": print("Trigger wants to teleport") if Object is Crate: teleportSignal.emit(Object) func _on_bullet_hit(body, bullet) -> void: #print("GC knows bullet hit") if body is Crate: destroySignal.emit(body) destroySignal.emit(bullet) if body is Slime: enemiesDict[body]["health"] -= playerStats.rangeAttack if enemiesDict[body]["health"] <= 0: print("Enemy is dead") destroySignal.emit(body) destroySignal.emit(bullet) removeEnemyFromLevel(body) else: print("Enemy takes damage") destroySignal.emit(bullet) damageSignal.emit(body) func crateTotal(amount)->void: numberOfCrates = amount if numberOfCrates<=0: print("YOU WON!!!") if currentLevelvoid: if totalCoins == 0: totalCoins = amount coinsRemaining = amount print("Collected "+str(totalCoins-coinsRemaining)+" of "+str(totalCoins) ) func coinCollected(body, coin)->void: if body is Player: #give them a coin coinsCollected +=1 destroySignal.emit(coin) func slimeAttack(body, slime)->void: print("GC knows slime attacking") playerStats.health -= enemiesDict[slime].meleeDamage if playerStats.health >0: print("player takes damage") damageSignal.emit(body) else: print("player is dead!!") destroySignal.emit(body) func addEnemyToLevel(slime)->void: print("Adding enemy to level") var stat={ "health":enemy.currentHealth + randi_range(0,10), "meleeDamage":enemy.meleeDamage+ randi_range(0,10) } enemiesDict[slime]=stat func removeEnemyFromLevel(enemy)->void: print("removeEnemyFromLevel") enemiesDict.erase(enemy) func levelChange()-> void: get_tree().change_scene_to_file(levelArray[currentLevel])