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 enemiesDict={} var playerStats={ "health": 100, "meleeDamage": 20, "rangeDamage": 20 } # Called when the node enters the scene tree for the first time. func _ready() -> void: get_window().grab_focus() # 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: if body is Crate: destroySignal.emit(body) destroySignal.emit(bullet) if body is Slime: #damage the slime enemiesDict[body]["health"] -= playerStats.rangeDamage if(enemiesDict[body]["health"] <=0): print("enemy dead") destroySignal.emit(body) destroySignal.emit(bullet) removeEnemyFromLevel(body) else: print("enemy damaged") destroySignal.emit(bullet) damageSignal.emit(body) func crateTotal(amount)->void: numberOfCrates = amount if numberOfCrates<=0: print("YOU WON!!!") func coinTotal(amount)->void: 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 attacked player for "+str(enemiesDict[slime].meleeDamage)) playerStats.health -= enemiesDict[slime].meleeDamage if playerStats.health <=0: #kill the player destroySignal.emit(body) else: #damage the player print("you took damage") damageSignal.emit(body) func addEnemyToLevel(enemy:Slime)->void: #make some stats for the bad guy var stats = { "health": 100, "meleeDamage": 10 } #add em to a dictionary of enemies enemiesDict[enemy]=stats func removeEnemyFromLevel(enemy)->void: enemiesDict.erase(enemy) func levelChange()->void: print("change levels (reload)") get_tree().reload_current_scene()