class_name GameController extends Node2D signal destroySignal(body) signal fanTriggerSignal(body, fanDirection) signal teleportTriggerSignal(body) var numberOfCrates = 2 var timeAvailable = 50 var timer = Timer.new() # 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", countdown) timer.start() func countdown() -> void: # reduce time left timeAvailable -= 1 if timeAvailable <= 0 and numberOfCrates > 0: print("LOSER!!!") get_tree().reload_current_scene() # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: pass func _on_trigger(body: Variant, trigger: Variant, intent: String) -> void: print("Game controller knows trigger fired") match intent: "destroy": destroySignal.emit(body) "fan": fanTriggerSignal.emit(body,Vector2(0,-1)*100*9) print("fan effect") "teleport": print("teleport effect") teleportTriggerSignal.emit(body) func crateTotal(numOfCrates): numberOfCrates = numOfCrates print("Game controller knows about crates - there are: " + str(numOfCrates)) if numberOfCrates == 0: print("WINNER!!!") get_tree().reload_current_scene() func bulletDamage(body, _bullet) -> void: if body.is_in_group("shootable"): destroySignal.emit(body) destroySignal.emit(_bullet)