class_name GameController extends Node2D var crateTotal = 0 signal destroySignal(body) signal teleportSignal(body) signal levelChangeSignal(level) var currentScene:String = "res://scenes/game.tscn" var timer := Timer.new() var timeAvailable := 10 # Called when the node enters the scene tree for the first time. func _ready() -> void: get_window().grab_focus() 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 BABY!!") levelChangeSignal.emit(currentScene) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: pass #Signals from Triggers! func _on_trigger(body: Variant, effect, trigger) -> void: #Crate triggers if body is Crate: match effect: "destroy": destroySignal.emit(body) "teleport": print("GC teleport an object") teleportSignal.emit(body) #Player triggers if body is Player: match effect: "powerup": print("GC knows about powerup") timeAvailable +=5 destroySignal.emit(trigger) func crateUpdate(cratesAmount)->void: crateTotal = cratesAmount if crateTotal <=0: print("You WON!!!") levelChangeSignal.emit(currentScene) func bulletDamage(body:Node2D, bullet:Bullet)->void: print("GC knows bullet hit") if body is Crate: #destroy the crate? destroySignal.emit(body) #destroy the bullet? destroySignal.emit(bullet)