feat: Implement core player movement with advanced pushing mechanics, define game modes, and introduce various new managers and UI components.
This commit is contained in:
@@ -143,10 +143,10 @@ func _get_device_id() -> String:
|
||||
# Try to load saved device ID for consistent guest identity
|
||||
var id_file := "user://device_id.txt"
|
||||
if FileAccess.file_exists(id_file):
|
||||
var file := FileAccess.open(id_file, FileAccess.READ)
|
||||
if file:
|
||||
var saved_id := file.get_as_text().strip_edges()
|
||||
file.close()
|
||||
var file_read := FileAccess.open(id_file, FileAccess.READ)
|
||||
if file_read:
|
||||
var saved_id := file_read.get_as_text().strip_edges()
|
||||
file_read.close()
|
||||
if not saved_id.is_empty():
|
||||
return saved_id
|
||||
|
||||
@@ -156,10 +156,10 @@ func _get_device_id() -> String:
|
||||
device_id = str(randi()) + str(Time.get_ticks_msec())
|
||||
|
||||
# Save for future use
|
||||
var file := FileAccess.open(id_file, FileAccess.WRITE)
|
||||
if file:
|
||||
file.store_string(device_id)
|
||||
file.close()
|
||||
var file_write := FileAccess.open(id_file, FileAccess.WRITE)
|
||||
if file_write:
|
||||
file_write.store_string(device_id)
|
||||
file_write.close()
|
||||
|
||||
return device_id
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
extends Node
|
||||
|
||||
|
||||
|
||||
# CameraContextManager - Smoothly follows player and clamps to arena edges
|
||||
|
||||
var camera: Camera3D
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
extends Node
|
||||
|
||||
|
||||
|
||||
# LobbyManager - Manages room/lobby state across scenes
|
||||
|
||||
# Signals
|
||||
|
||||
@@ -38,7 +38,7 @@ const MESSAGES = {
|
||||
"USED_SPECIAL_POWER": "Used a special power!"
|
||||
}
|
||||
|
||||
static func send_message(target: Node, message: String, type: int = MessageType.NORMAL):
|
||||
static func send_message(target: Node, message: String, _type: int = MessageType.NORMAL):
|
||||
if is_instance_valid(target) and target.has_method("rpc"):
|
||||
# Check if the text is empty, do nothing
|
||||
if message.is_empty():
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
extends Node
|
||||
|
||||
|
||||
|
||||
var player: Node3D
|
||||
var movement_manager: Node
|
||||
var race_manager: Node
|
||||
@@ -98,6 +100,10 @@ func handle_unhandled_input(event):
|
||||
var mode = LobbyManager.get_game_mode()
|
||||
var is_sng = mode == GameMode.Mode.STOP_N_GO
|
||||
|
||||
# Safety check for SettingsManager
|
||||
if not SettingsManager:
|
||||
return
|
||||
|
||||
# Get dynamic keybinds
|
||||
var key_p1 = SettingsManager.get_control_keycode("powerup_1")
|
||||
var key_p2 = SettingsManager.get_control_keycode("powerup_2")
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
extends Node
|
||||
|
||||
|
||||
|
||||
var player: Node3D
|
||||
var enhanced_gridmap: Node
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
extends Node
|
||||
|
||||
|
||||
|
||||
# PlayerboardManager - Handles all playerboard operations including grab, put, arrange
|
||||
|
||||
var player: Node3D
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
extends Node
|
||||
|
||||
|
||||
|
||||
# SpecialTilesManager - Handles special effects triggered by holo tile pickups
|
||||
|
||||
# Holo tile indices (11-14) trigger special effects
|
||||
|
||||
@@ -31,8 +31,8 @@ func _ready() -> void:
|
||||
auth.auth_completed.connect(_on_auth_completed)
|
||||
auth.logged_out.connect(_on_logged_out)
|
||||
|
||||
func _on_auth_completed(_success: bool, user_data: Dictionary) -> void:
|
||||
if _success:
|
||||
func _on_auth_completed(success: bool, _user_data: Dictionary) -> void:
|
||||
if success:
|
||||
await load_profile()
|
||||
|
||||
func _on_logged_out() -> void:
|
||||
|
||||
Reference in New Issue
Block a user