update BG, tile
This commit is contained in:
@@ -40,9 +40,9 @@ 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_areas: Array[String] = []
|
||||
var available_game_modes: Array[String] = ["Freemode", "Stop n Go", "Tekton Doors"]
|
||||
var selected_area: String = "Desert" # Host-controlled
|
||||
var selected_area: String = "Classic" # Host-controlled
|
||||
var game_mode: String = "Freemode" # Host-controlled
|
||||
var local_character_index: int = 0 # Local player's character index
|
||||
|
||||
@@ -59,11 +59,24 @@ signal game_mode_changed(mode: String)
|
||||
var _all_ready: bool = false
|
||||
|
||||
func _ready():
|
||||
_update_available_areas(game_mode)
|
||||
|
||||
# Connect to Nakama signals
|
||||
NakamaManager.match_joined.connect(_on_match_joined)
|
||||
multiplayer.peer_connected.connect(_on_peer_connected)
|
||||
multiplayer.peer_disconnected.connect(_on_peer_disconnected)
|
||||
|
||||
func _update_available_areas(mode: String) -> void:
|
||||
match mode:
|
||||
"Freemode":
|
||||
available_areas = ["Classic", "Colloseum"]
|
||||
"Stop n Go":
|
||||
available_areas = ["Stop N Go Arena"]
|
||||
"Tekton Doors":
|
||||
available_areas = ["Tekton Doors Arena"]
|
||||
_:
|
||||
available_areas = ["Classic"]
|
||||
|
||||
# =============================================================================
|
||||
# Room Creation / Joining
|
||||
# =============================================================================
|
||||
@@ -106,6 +119,9 @@ func leave_room() -> void:
|
||||
# Disconnect from Nakama match
|
||||
if NakamaManager.socket:
|
||||
NakamaManager.socket.close()
|
||||
|
||||
# Important: Clean up game state as well to prevent ghost players
|
||||
GameStateManager.reset()
|
||||
|
||||
emit_signal("room_left")
|
||||
|
||||
@@ -384,11 +400,16 @@ func set_game_mode(mode: String) -> void:
|
||||
|
||||
game_mode = mode
|
||||
rpc("sync_game_mode", mode)
|
||||
|
||||
_update_available_areas(mode)
|
||||
if selected_area not in available_areas:
|
||||
set_area(available_areas[0])
|
||||
|
||||
@rpc("authority", "call_local", "reliable")
|
||||
func sync_game_mode(mode: String) -> void:
|
||||
"""Sync game mode selection from host to clients."""
|
||||
game_mode = mode
|
||||
_update_available_areas(mode)
|
||||
emit_signal("game_mode_changed", mode)
|
||||
|
||||
func start_game() -> void:
|
||||
@@ -540,7 +561,8 @@ func reset() -> void:
|
||||
is_host = false
|
||||
_all_ready = false
|
||||
match_duration = 180 # Reset to default 3 minutes
|
||||
selected_area = "Desert"
|
||||
game_mode = "Freemode"
|
||||
_update_available_areas(game_mode)
|
||||
selected_area = available_areas[0]
|
||||
local_character_index = 0 # Default to "Copper"
|
||||
enable_cycle_timer = false
|
||||
game_mode = "Freemode"
|
||||
|
||||
Reference in New Issue
Block a user