feat: add Stop n Go game mode with new arena, assets, and manager script.
This commit is contained in:
Binary file not shown.
+9
-3
@@ -21,6 +21,12 @@ var portal_mode_manager
|
||||
var _connection_check_timer: float = 0.0
|
||||
var reserved_static_positions: Array[Vector2i] = []
|
||||
|
||||
func _can_rpc() -> bool:
|
||||
if not is_inside_tree(): return false
|
||||
if not multiplayer.has_multiplayer_peer(): return false
|
||||
if multiplayer.multiplayer_peer.get_class() == "OfflineMultiplayerPeer": return false
|
||||
if multiplayer.multiplayer_peer.get_connection_status() != MultiplayerPeer.CONNECTION_CONNECTED: return false
|
||||
return true
|
||||
|
||||
func _ready():
|
||||
# Initialize scene managers
|
||||
@@ -93,7 +99,7 @@ func _setup_multiplayer_spawners():
|
||||
func _apply_arena_background():
|
||||
var arena_bg = get_node_or_null("ArenaBG")
|
||||
|
||||
var selected_area = LobbyManager.get_selected_area()
|
||||
var selected_area = LobbyManager.selected_area
|
||||
var texture_path = ""
|
||||
|
||||
match selected_area:
|
||||
@@ -1411,10 +1417,10 @@ func request_full_player_sync(requesting_peer_id: int):
|
||||
"name": player.display_name,
|
||||
"goals": player.goals,
|
||||
"playerboard": player.playerboard,
|
||||
"is_bot": player.is_bot || player.is_in_group("Bots"),
|
||||
"spawn_point_selected": player.spawn_point_selected
|
||||
}
|
||||
rpc_id(requesting_peer_id, "create_specific_player", player_data)
|
||||
if _can_rpc():
|
||||
rpc_id(requesting_peer_id, "create_specific_player", player_data)
|
||||
await get_tree().create_timer(0.1).timeout
|
||||
|
||||
@rpc("reliable")
|
||||
|
||||
+5
-2
@@ -33,7 +33,9 @@ var display_name: String:
|
||||
|
||||
# Helper to check network status
|
||||
func can_rpc() -> bool:
|
||||
return multiplayer.has_multiplayer_peer() and multiplayer.multiplayer_peer.get_connection_status() == MultiplayerPeer.CONNECTION_CONNECTED
|
||||
if not multiplayer.has_multiplayer_peer(): return false
|
||||
if multiplayer.multiplayer_peer.get_class() == "OfflineMultiplayerPeer": return false
|
||||
return multiplayer.multiplayer_peer.get_connection_status() == MultiplayerPeer.CONNECTION_CONNECTED
|
||||
|
||||
# Special effect states
|
||||
var is_frozen: bool = false
|
||||
@@ -1131,7 +1133,8 @@ func _physics_process(delta):
|
||||
# Use a slightly larger threshold (0.05) to ignore micro-vibrations
|
||||
if current_world_pos.distance_to(last_sent_pos) > 0.05:
|
||||
set_meta("_last_sent_pos", current_world_pos)
|
||||
rpc("remote_set_position", current_world_pos, Time.get_ticks_msec())
|
||||
if can_rpc():
|
||||
rpc("remote_set_position", current_world_pos, Time.get_ticks_msec())
|
||||
|
||||
# NOTE: Finish line checking removed - game uses cycle-based goals system now
|
||||
|
||||
|
||||
Reference in New Issue
Block a user