extends Node2D signal playerDamage signal destroySignal(body) signal levelChangeSignal(level: String) var coinCount : int = 0 var score:int = 0 var timer = Timer.new() var timeAvailable:int = 5 var levels = [ "res://scenes/game.tscn", "res://scenes/level2.tscn", "res://scenes/level3.tscn" ] var timers = [30, 50, 30] var currentLevel: int = 0 var enemy: CharacterStats var playerStats: CharacterStats func _ready(): enemy = load("res://scripts/resources/slimeStats.tres") playerStats = load("res://scripts/resources/playerStats.tres") add_child(timer) timer.wait_time = 1 timer.one_shot = false timer.connect("timeout", secondCounter) timer.start() timeAvailable = timers[currentLevel] func secondCounter(): timeAvailable -= 1 print("second") if timeAvailable <= 0: print("dead") levelChangeSignal.emit(levels[currentLevel]) Gamecontroller.reset() func _on_area_2d_area_trigger_signal(effect: String, body: Node2D) -> void: if body.name == "world-boundary": return if body is Player && effect == "player_hurt": playerDamage.emit() body.health -= 1 print(body.health) return if body is Player: return print("GC sees trigger " + effect + " on " + body.name) body.queue_free() func bulletDamage(target: Node2D, bullet: Node2D): print("game controller sees hit") target.queue_free() bullet.visible = false func coin_collected(coin: Coin): #coin.queue_free() destroySignal.emit(coin) score += 1 coinCount -= 1 if coinCount == 0: currentLevel = (currentLevel + 1) % len(levels) levelChangeSignal.emit(levels[currentLevel]) print("Win!") func totalCoinCount(count: int): print("count is "+ str(count)) coinCount = count func reset(): score = 0 timeAvailable = timers[currentLevel] func playerAttacked(body, slime): playerStats.health -= enemy.meleDamage print("enemy did " + str(enemy.meleDamage) + " damage, player has " + str(playerStats.health) + " health") print("GC knows slime attacked")