class_name GameController extends Node2D var totalCrates = 3 var timeLimit = 10 var timer = Timer.new() var coinsCollectedTotal := 0 var levels = ["res://scenes/game.tscn","res://scenes/level2.tscn","res://scenes/level3.tscn"] var timers = [10, 15, 25] var currentLevel = 0 var playerHealth = 100 signal levelCompleteSignal(level) signal destroySignal(body) signal playerDamage signal playerDeath # Called when the node enters the scene tree for the first time. func _ready() -> void: add_child(timer) timer.wait_time = 1 timer.one_shot = false timer.connect("timeout", secondCounter) timer.start() func secondCounter(): timeLimit -=1 if timeLimit <= 0: #loser!!!! levelCompleteSignal.emit(levels[currentLevel]) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: if totalCrates == 0: print("YOU WIN!") currentLevel +=1 if currentLevel >= levels.size(): currentLevel = 0 levelCompleteSignal.emit(levels[currentLevel]) func _on_trigger_fired(effect: Variant, body: Variant) -> void: print("Game controller knows :: "+effect) if effect=="destroy": if body is Crate: print("Crates Remaining " + str(totalCrates) ) destroySignal.emit(body) func _on_coin_collected(body, coin): coinsCollectedTotal += 1 destroySignal.emit(coin) print("GC knows coin collected") func _on_player_damage(body, enemy): if enemy is Slime: print("slime attack!!!") playerHealth -= 10 if playerHealth >0: print("Player damaged") playerDamage.emit() else: print("Player dead") playerDeath.emit() func numberOfCrates(value): totalCrates = value print("Total crates at GC: "+str(totalCrates) ) func bulletDamage(body, bullet): print("Game controller knows about bullet hit") func reset(): timeLimit = timers[currentLevel] playerHealth = 100 func death(): print("player death animation complete")