feat: Implement core game managers, player movement logic, and initial UI scenes.

This commit is contained in:
2025-12-27 05:45:57 +08:00
parent 6870016ba6
commit c5e9d073fa
23 changed files with 1456 additions and 97 deletions
+19
View File
@@ -12,6 +12,7 @@ signal ready_state_changed(player_id: int, is_ready: bool)
signal all_players_ready()
signal game_starting()
signal match_duration_changed(duration_seconds: int)
signal randomize_spawn_changed(enabled: bool)
signal character_changed(player_id: int, character_name: String)
signal area_changed(area_name: String)
signal player_list_changed()
@@ -26,6 +27,9 @@ var local_player_name: String = "Player"
# Match duration in seconds (configurable in lobby by host)
var match_duration: int = 180 # Default 3 minutes
# Randomize spawn locations (configurable in lobby by host)
var randomize_spawn: bool = true # Default enabled
# Character and area selection
var available_characters: Array[String] = ["Bob", "Gatot", "Masbro", "Oldpop"]
var available_areas: Array[String] = ["Desert", "Forest", "City", "Factory"]
@@ -161,6 +165,21 @@ func sync_match_duration(duration_seconds: int) -> void:
func get_match_duration() -> int:
return match_duration
func set_randomize_spawn(enabled: bool) -> void:
"""Host sets randomize spawn. Syncs to all clients."""
randomize_spawn = enabled
if is_host:
rpc("sync_randomize_spawn", enabled)
@rpc("authority", "call_local", "reliable")
func sync_randomize_spawn(enabled: bool) -> void:
"""Sync randomize spawn from host to clients."""
randomize_spawn = enabled
emit_signal("randomize_spawn_changed", enabled)
func get_randomize_spawn() -> bool:
return randomize_spawn
# =============================================================================
# Character Selection
# =============================================================================