ld58-collector/world.gd
2025-10-05 22:04:08 -07:00

56 lines
1.5 KiB
GDScript

extends Control
enum GameState { MAIN_MENU, GAME, LOSS, WIN }
var current_game_state: GameState = GameState.MAIN_MENU
var manager
var main_menu_scene = preload("res://main_menu.tscn")
var game_scene = preload("res://main.tscn")
var score_screen_scene = preload("res://score_screen.tscn")
func _ready():
$MainMenu.main_menu_interacted.connect(_on_main_menu_interacted)
func transition(new_state: GameState):
# Clean up current scene
if new_state == GameState.MAIN_MENU:
var main_menu_instance = main_menu_scene.instantiate()
add_child(main_menu_scene)
elif new_state == GameState.GAME:
var game_instance = game_scene.instantiate()
add_child(game_instance)
elif new_state == GameState.LOSS:
var score_screen_instance = score_screen_scene.instantiate()
add_child(score_screen_instance)
score_screen_instance.win()
elif new_state == GameState.WIN:
pass
# Clean up old scene
match (current_game_state):
GameState.MAIN_MENU:
var main_menu_instance = $MainMenu
var main_menu_instance.destroy()
GameState.GAME:
var main_instance = $Main
main_instance.destroy()
GameState.LOSS:
var score_screen_instance = $ScoreScreen
score_screen_instance.destroy()
GameState.WIN:
var score_screen_instance = $ScoreScreen
score_screen_instance.destroy()
current_game_state = new_state
func _on_main_menu_interacted():
transition(GameState.GAME)
add_child(manager)
manager.failed.connect(_on_loss)
func _on_loss():
transition(GameState.LOSS)
func _on_win():
transition(GameState.WIN)