ed-april-game/scripts/game_controller.gd

76 lines
1.7 KiB
GDScript3
Raw Normal View History

extends Node2D
2026-04-28 01:06:17 +00:00
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 = {}
2026-04-21 01:09:00 +00:00
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()
2026-04-21 01:09:00 +00:00
func reset():
time_available = level_times[current_level_index]
if player:
player.health = 5
func stop():
timer.stop()
2026-04-21 01:09:00 +00:00
func _process(delta):
pass
func _on_area_2d_trigger_active_signal(body, intentMessage):
print("game controller received trigger")
2026-04-28 01:06:17 +00:00
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))
2026-04-28 01:06:17 +00:00
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")