attempt to make stop n go gamemode
This commit is contained in:
@@ -41,9 +41,14 @@ signal scarcity_mode_changed(mode: String)
|
||||
# Character and area selection
|
||||
var available_characters: Array[String] = ["Copper", "Dabro", "Gatot", "Pip", "Random"]
|
||||
var available_areas: Array[String] = ["Desert", "Forest", "City", "Factory"]
|
||||
var available_game_modes: Array[String] = ["Freemode", "Stop n Go"]
|
||||
var selected_area: String = "Desert" # Host-controlled
|
||||
var game_mode: String = "Freemode" # Host-controlled
|
||||
var local_character_index: int = 0 # Local player's character index
|
||||
|
||||
# Signals
|
||||
signal game_mode_changed(mode: String)
|
||||
|
||||
# Ready to start game check
|
||||
var _all_ready: bool = false
|
||||
|
||||
@@ -345,6 +350,29 @@ func sync_area(area_name: String) -> void:
|
||||
selected_area = area_name
|
||||
emit_signal("area_changed", area_name)
|
||||
|
||||
# =============================================================================
|
||||
# Game Mode Selection (Host Only)
|
||||
# =============================================================================
|
||||
|
||||
func set_game_mode(mode: String) -> void:
|
||||
"""Host sets the game mode. Syncs to all clients."""
|
||||
if not is_host:
|
||||
push_warning("Only host can change game mode")
|
||||
return
|
||||
|
||||
if mode not in available_game_modes:
|
||||
push_error("Invalid game mode: " + mode)
|
||||
return
|
||||
|
||||
game_mode = mode
|
||||
rpc("sync_game_mode", mode)
|
||||
|
||||
@rpc("authority", "call_local", "reliable")
|
||||
func sync_game_mode(mode: String) -> void:
|
||||
"""Sync game mode selection from host to clients."""
|
||||
game_mode = mode
|
||||
emit_signal("game_mode_changed", mode)
|
||||
|
||||
func start_game() -> void:
|
||||
"""Host triggers game start (transitions all players to main.tscn)."""
|
||||
if not is_host:
|
||||
@@ -361,6 +389,8 @@ func start_game() -> void:
|
||||
rpc("sync_enable_cycle_timer", enable_cycle_timer)
|
||||
# Sync scarcity mode
|
||||
rpc("sync_scarcity_mode", scarcity_mode)
|
||||
# Sync game mode
|
||||
rpc("sync_game_mode", game_mode)
|
||||
|
||||
# Notify all clients to start
|
||||
rpc("_on_game_starting")
|
||||
@@ -484,3 +514,4 @@ func reset() -> void:
|
||||
selected_area = "Desert"
|
||||
local_character_index = 0 # Default to "Copper"
|
||||
enable_cycle_timer = false
|
||||
game_mode = "Freemode"
|
||||
|
||||
Reference in New Issue
Block a user