Files
Billiards/scenes/data_bridge/game_state.gd

58 lines
1.5 KiB
GDScript3
Raw Normal View History

2026-08-07 02:50:54 -05:00
class_name GameState extends Node
@warning_ignore_start("unused_signal")
signal update_cue_cam_position
signal balls_stopped_moving
signal white_ball_sunk
signal white_ball_needs_hard_reset
signal reload_scene
signal process_ball
signal reap_ball
@warning_ignore_restore("unused_signal")
func _init() -> void:
Globals.game_state = self
func load_game_scene(scene_str: String) -> void:
var scene = load(scene_str).instantiate()
var target = get_tree().root.get_node("billiards/scene")
target.add_child(scene)
func set_game_scene(scene_str: String) -> void:
var scene = load(scene_str).instantiate()
var target = get_tree().root.get_node("billiards/scene")
if "game" in scene_str:
scene.name = "game"
elif "lobby" in scene_str:
scene.name = "lobby_screen"
elif "start" in scene_str:
scene.name = "start_screen"
clear_game_scene(target)
target.add_child(scene)
func clear_game_scene(container: Node) -> void:
for child in container.get_children():
child.queue_free()
await get_tree().process_frame
func switch_active_player() -> void:
# TODO: Move away from using client ID or mask it with a map ID
if Globals.multiplayer_data.current_turn_player_id == Globals.game_data.client1:
Globals.multiplayer_data.rpc(
"set_active_player_id",
Globals.game_data.client2
)
elif Globals.multiplayer_data.current_turn_player_id == Globals.game_data.client2:
Globals.multiplayer_data.rpc(
"set_active_player_id",
Globals.game_data.client1
)