extends Node2D var totalCoinsAvailable =0 var timer = Timer.new() var timeAvailable = 5 var level="res://scenes/game.tscn" var levelTwo = "res://scenes/level2.tscn" var levels = ["res://scenes/game.tscn","res://scenes/level2.tscn","res://scenes/level3.tscn"] var timers = [10,15,9] var currentLevel = 0 signal destroySignal(body) signal levelChangeSignal(level) signal playerTakeDamageSignal(health) signal playerDiesSignal var player:CharacterStats var enemy:CharacterStats var playerHealth:int # Called when the node enters the scene tree for the first time. func _ready() -> void: player = load("res://scripts/rscs/playerStats.tres") enemy = load("res://scripts/rscs/slimeStats.tres") playerHealth = player.starting_health add_child(timer) timer.wait_time = 1 timer.one_shot = false timer.connect("timeout", secondCounter) timer.start() func secondCounter() -> void: timeAvailable -=1 if timeAvailable <= 0: print("YOU LOSE") #reload the current scene levelChangeSignal.emit(levels[currentLevel]) func reset() -> void: timeAvailable = timers[currentLevel] # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: pass func _on_areatrigger(effect, body) -> void: print("Game controller knows about trigger") if effect == "destroy": print("Destroy this thing") body.queue_free() if effect == "lavaBurn": if body is Player: playerHealth -= 10 print("Player health is now "+str(playerHealth)) func totalCoinCount(totalCoins): totalCoinsAvailable = totalCoins func coinCollected(body, coin): destroySignal.emit(coin) totalCoinsAvailable -=1 if totalCoinsAvailable <= 0: print("YOU WIN") currentLevel +=1 if currentLevel >= levels.size(): currentLevel = 0 levelChangeSignal.emit(levels[currentLevel]) func playerAttacked(body, slime): print("GC knows player attacked") playerHealth -= enemy.meleeDamage if playerHealth <=0: playerDiesSignal.emit() else: playerTakeDamageSignal.emit(playerHealth)