ChessBuilder/Systems/Game/Lobby/LobbyScreen.gd

85 lines
2.2 KiB
GDScript

extends Control
class_name LobbyScreen
signal vanilla_selected
signal shop_selected(options)
signal deeper_selected
signal back_pressed
# Node references
@onready var vanilla_button = $BottomContainer/VanillaButton
@onready var shop_button = $CenterContainer/ShopButton
@onready var deeper_button = $BottomContainer/DeeperButton
@onready var back_button = $BackButton
@onready var run_count_label = $TopBar/RunCountLabel
@onready var token_label = $TopBar/TokenContainer/TokenLabel
var game: ChessGame
var player: Player
func _ready():
# Connect button signals
if vanilla_button:
vanilla_button.connect("pressed", Callable(self, "_on_vanilla_button_pressed"))
if shop_button:
shop_button.connect("pressed", Callable(self, "_on_shop_button_pressed"))
if deeper_button:
deeper_button.connect("pressed", Callable(self, "_on_deeper_button_pressed"))
if back_button:
back_button.connect("pressed", Callable(self, "_on_back_button_pressed"))
func initialize(options = null):
game = get_node_or_null("/root/Board") as ChessGame
if game and "player" in game:
player = game.player
update_display()
func update_display():
if player:
if run_count_label:
run_count_label.text = "RUN #" + str(player.get_run_count() + 1)
if token_label:
token_label.text = str(player.tokens) + " TOKENS"
func _on_vanilla_button_pressed():
emit_signal("vanilla_selected")
self.visible = false
func _on_shop_button_pressed():
emit_signal("shop_selected", {})
self.visible = false
func _on_deeper_button_pressed():
emit_signal("deeper_selected")
self.visible = false
func _on_back_button_pressed():
emit_signal("back_pressed")
# self.visible = false
func show_screen():
initialize()
self.visible = true
# Notification
func _notification(what):
if what == NOTIFICATION_VISIBILITY_CHANGED:
_on_visibility_changed(visible)
func _on_visibility_changed(is_visible):
print("Lobby Screen visibility changed to: ", is_visible)
if is_visible:
update_display()
else:
print("Lobby Screen is now invisible")
emit_signal("lobby_screen_visibility_changed", is_visible)