ChessBuilder/Systems/Game/Game.gd
2025-03-01 21:38:01 -06:00

64 lines
No EOL
2.1 KiB
GDScript

class_name Game extends Node
# This script can be attached to your main Game node that contains both
# the menu and the chess game components
@onready var menuContainer = $MenuContainer
@onready var chessGame = $ChessGame
@onready var stateMachine = $StateMachine
func _ready():
# Show menu on startup
if menuContainer:
menuContainer.visible = true
# Hide chess game initially
if chessGame:
chessGame.visible = false
# Connect menu signals
if menuContainer and menuContainer.has_signal("new_game_requested"):
menuContainer.connect("new_game_requested", Callable(self, "_on_new_game_started"))
func _on_new_game_started():
print("Starting new game...")
# Show chess game
if chessGame:
chessGame.visible = true
# You can add additional game initialization logic here if needed
# For example, configuring game options based on menu selections
# Ensure the chess game is properly initialized
if !chessGame.is_inside_tree():
await chessGame.ready
# Start game logic
_start_game_logic()
func _start_game_logic():
# If StateMachine is already initialized in the Chess game, this may not be needed
if stateMachine and stateMachine.has_method("transitionToNextState"):
stateMachine.transitionToNextState(Constants.WHITE_TURN)
# Add any additional game start logic here
# If you need to open a specific scene or create nodes dynamically:
# var chess_scene = load("res://Scenes/ChessGame.tscn").instantiate()
# add_child(chess_scene)
# Handle escape key to show menu during game
func _unhandled_input(event):
if event is InputEventKey:
if event.pressed and event.keycode == KEY_ESCAPE:
_toggle_menu()
func _toggle_menu():
if menuContainer:
menuContainer.visible = !menuContainer.visible
# Optional: Pause game when menu is visible
if menuContainer.visible and chessGame:
# You might want to pause the game or disable input
pass