extends Control # now we're cookin with bacon! var current_floor := 10 var saved_count := 0 var doors_closing := false # threshold increases as you descend! var base_threshold := 2 var threshold_increase_interval := 2 # +1 required every x floors # scoring var score := 0 var points_per_person := 100 # placeholder until henry's system provides real count var people_in_elevator := 3 # placeholder until hnry's collision signal is ready var floor_time_limit := 10.0 var floor_timer: Timer signal floor_changed(floor_num: int) signal saved_changed(count: int) signal score_changed(new_score: int) signal people_changed(count: int, threshold: int) signal game_won signal game_lost func get_threshold() -> int: var floors_cleared := 10 - current_floor return base_threshold + floors_cleared / threshold_increase_interval func _ready(): $PanelMargin/PanelColumn/CloseButton.pressed.connect(_on_close_pressed) floor_timer = Timer.new() floor_timer.one_shot = true floor_timer.wait_time = floor_time_limit floor_timer.timeout.connect(_on_timer_expired) add_child(floor_timer) floor_timer.start() floor_changed.emit(current_floor) people_changed.emit(people_in_elevator, get_threshold()) func _unhandled_input(event): if event is InputEventKey and event.pressed and event.keycode == KEY_SPACE: _on_close_pressed() func _on_timer_expired(): if doors_closing: return doors_closing = true var screen = $PanelMargin/PanelColumn/Screen screen.show_loss("TOO LATE :[") game_lost.emit() func _on_close_pressed(): if doors_closing: return var screen = $PanelMargin/PanelColumn/Screen var success = screen.attempt_hack() if success: doors_closing = true floor_timer.stop() if people_in_elevator < get_threshold(): screen.show_loss("TOO FEW :[[") game_lost.emit() return # base points per person, bonus for each person above threshold?? var bonus: int = max(0, people_in_elevator - get_threshold()) * points_per_person score += people_in_elevator * points_per_person + bonus score_changed.emit(score) saved_count += people_in_elevator current_floor -= 1 saved_changed.emit(saved_count) floor_changed.emit(current_floor) if current_floor <= 1: screen.show_win() game_won.emit() else: screen.show_countdown() var tween = create_tween() tween.tween_callback(func(): screen.reset_hack() doors_closing = false people_in_elevator = 3 # placeholder people_changed.emit(people_in_elevator, get_threshold()) floor_timer.start() ).set_delay(2.0) else: print("MISSED! AI is faster now!")