extends Node2D signal destroy(body) signal level_change_signal(level) var levels = ["res://scenes/level1.tscn","res://scenes/level2.tscn","res://scenes/level3.tscn"] var current_level_index = 0 var level_times = [15,20,25] var time_available = 0 var timer = Timer.new() var player:Player; var enemies = {} func _ready(): get_window().grab_focus() # Replace with function body. reset() add_child(timer) timer.wait_time = 1 timer.one_shot = false timer.connect("timeout", timer_tick) timer.start() func timer_tick(): time_available -= 1 if time_available <= 0: print("you lose") level_change_signal.emit(levels[current_level_index]) reset() func reset(): time_available = level_times[current_level_index] if player: player.health = 5 func stop(): timer.stop() func _process(delta): pass func _on_area_2d_trigger_active_signal(body, intentMessage): print("game controller received trigger") if intentMessage == "destroy" and body.is_in_group("destructable"): destroy.emit(body) var crate_num : int = 0 func set_crate_num(count: int): crate_num = count # print("number of crates: " + str(crate_num)) if crate_num <= 0: current_level_index += 1 if current_level_index == levels.size(): print("You Win!") stop() else: level_change_signal.emit(levels[current_level_index]) reset() func _on_slime_damage(body, slime): print("game controller sees slime damage") player.health -= enemies[slime]["damage"] if player.health <= 0: print("dead") level_change_signal.emit(levels[current_level_index]) func add_enemy(slime): var enemy_stat = { "health": 5, "damage": 3 } enemies[slime] = enemy_stat func _on_slime_struck(body, slime): print("game controller sees slime struck")