init game files

This commit is contained in:
2026-01-24 16:29:11 -05:00
commit ea2028cf13
171 changed files with 191733 additions and 0 deletions

107
scripts/GameController.gd Normal file
View File

@@ -0,0 +1,107 @@
extends Node
## GameController - Top-level controller managing menu and game states
enum State {
MENU,
PLAYING,
PAUSED
}
var current_state: State = State.MENU
# Scene references
var main_menu: MainMenu = null
var game_scene: Node3D = null
var pause_menu: PauseMenu = null
# Preload the main game scene script
const MainScript = preload("res://scripts/Main.gd")
func _ready() -> void:
process_mode = Node.PROCESS_MODE_ALWAYS
_show_main_menu()
func _input(event: InputEvent) -> void:
if event is InputEventKey and event.pressed:
if event.keycode == KEY_ESCAPE:
match current_state:
State.PLAYING:
_show_pause_menu()
State.PAUSED:
_hide_pause_menu()
func _show_main_menu() -> void:
# Clean up any existing game
if game_scene:
game_scene.queue_free()
game_scene = null
if pause_menu:
pause_menu.queue_free()
pause_menu = null
# Create main menu
if not main_menu:
main_menu = MainMenu.new()
add_child(main_menu)
main_menu.start_game.connect(_on_start_game)
main_menu.visible = true
current_state = State.MENU
func _on_start_game() -> void:
# Hide menu
if main_menu:
main_menu.visible = false
# Create game scene
_start_new_game()
func _start_new_game() -> void:
# Make sure game isn't paused
get_tree().paused = false
# Clean up existing game
if game_scene:
game_scene.queue_free()
game_scene = null
# Reset GameManager state
if GameManager:
GameManager.is_game_active = false
GameManager.game_state = null
# Create new game scene
game_scene = Node3D.new()
game_scene.set_script(MainScript)
add_child(game_scene)
# Create pause menu
if not pause_menu:
pause_menu = PauseMenu.new()
add_child(pause_menu)
pause_menu.resume_game.connect(_on_resume_game)
pause_menu.restart_game.connect(_on_restart_game)
pause_menu.return_to_menu.connect(_on_return_to_menu)
current_state = State.PLAYING
func _show_pause_menu() -> void:
if pause_menu:
pause_menu.show_menu()
current_state = State.PAUSED
func _hide_pause_menu() -> void:
if pause_menu:
pause_menu.hide_menu()
current_state = State.PLAYING
func _on_resume_game() -> void:
current_state = State.PLAYING
func _on_restart_game() -> void:
_start_new_game()
func _on_return_to_menu() -> void:
_show_main_menu()