update BG, tile

This commit is contained in:
2026-03-10 23:13:24 +08:00
parent d53e4601e4
commit 884ce60cf1
19 changed files with 273 additions and 18 deletions
+26 -4
View File
@@ -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"