update BG, tile
This commit is contained in:
@@ -358,8 +358,8 @@ func link_google(id_token: String) -> bool:
|
||||
func logout() -> void:
|
||||
print("[AuthManager] Logging out...")
|
||||
|
||||
if NakamaManager.socket:
|
||||
NakamaManager.socket.close()
|
||||
# FULL CLEANUP: close socket, leave bridge, clear multiplayer peer
|
||||
NakamaManager.cleanup()
|
||||
|
||||
clear_session()
|
||||
|
||||
|
||||
@@ -50,3 +50,4 @@ func reset():
|
||||
bots.clear()
|
||||
game_started_flag = false
|
||||
local_player_character = null
|
||||
emit_signal("game_state_changed")
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -46,6 +46,7 @@ const TILE_START = 3 # Start Line
|
||||
const TILE_FINISH = 3 # Finish Line
|
||||
const TILE_SAFE = 2 # Green Safe Zone
|
||||
const TILE_OBSTACLE = 4 # Wall
|
||||
const TILE_LIGHTNING_STONE = 15 # Ancient Rock with Lightning Symbol
|
||||
|
||||
var hud_layer: CanvasLayer
|
||||
var mission_label: Label
|
||||
@@ -709,8 +710,8 @@ func _spawn_powerup_tiles():
|
||||
for i in range(PERMANENT_POWERUP_LOCATIONS.size()):
|
||||
var pos = PERMANENT_POWERUP_LOCATIONS[i]
|
||||
|
||||
# Set Floor 0 beneath power-up to ID 1 (Hover pattern) - Static PADS
|
||||
gridmap.set_cell_item(Vector3i(pos.x, 0, pos.y), 1)
|
||||
# Set Floor 0 beneath power-up to ID 15 (Ancient Lightning Stone)
|
||||
gridmap.set_cell_item(Vector3i(pos.x, 0, pos.y), TILE_LIGHTNING_STONE)
|
||||
|
||||
# Cycle through the available power-up types
|
||||
var tile_id = POWERUP_TILES[i % POWERUP_TILES.size()]
|
||||
@@ -720,7 +721,7 @@ func _spawn_powerup_tiles():
|
||||
|
||||
# Sync both floor and tile to all clients and host
|
||||
if can_rpc():
|
||||
main.rpc("sync_grid_item", pos.x, 0, pos.y, 1) # Sync floor change (Pad on)
|
||||
main.rpc("sync_grid_item", pos.x, 0, pos.y, TILE_LIGHTNING_STONE) # Sync floor change (Stone on)
|
||||
main.rpc("sync_grid_item", pos.x, 1, pos.y, tile_id) # Sync power-up
|
||||
|
||||
powerups_spawned = true
|
||||
|
||||
Reference in New Issue
Block a user