feat(mvp): complete M13 clean-up milestone (real usernames, avatar studio redesign, pause menu, audio manager)
checkpoint / checkpoint (push) Successful in 6m22s

This commit is contained in:
2026-09-18 21:54:01 +00:00
parent 4c8a60fbc8
commit ee4006d217
31 changed files with 2394 additions and 262 deletions
+37 -1
View File
@@ -101,6 +101,19 @@ func _on_connected() -> void:
_server_root.add_child(_player_proxy)
connected_to_server.emit()
if pending_loadout.is_empty():
var api := _get_api_client()
var cur_username: String = ""
var cur_user_id: int = 0
if api != null:
cur_username = str(api.get("current_username"))
cur_user_id = int(api.get("current_user_id"))
if not cur_username.is_empty():
var default_loadout: Dictionary = {"username": cur_username}
if cur_user_id > 0:
default_loadout["user_id"] = cur_user_id
pending_loadout = default_loadout
if not pending_loadout.is_empty():
_player_proxy.rpc_id(1, "rpc_set_loadout", pending_loadout)
@@ -266,7 +279,30 @@ func send_input(move_x: float, move_z: float, jump: bool, look_yaw: float) -> vo
## Send the local player's avatar loadout to the server so it can be replicated
## to other clients.
func send_loadout(loadout_dict: Dictionary) -> void:
pending_loadout = loadout_dict.duplicate(true)
var copy: Dictionary = loadout_dict.duplicate(true)
var api := _get_api_client()
var cur_username: String = ""
var cur_user_id: int = 0
if api != null:
cur_username = str(api.get("current_username"))
cur_user_id = int(api.get("current_user_id"))
if not copy.has("username"):
if not cur_username.is_empty():
copy["username"] = cur_username
else:
copy["username"] = "Player_%d" % my_peer_id
if cur_user_id > 0 and not copy.has("user_id"):
copy["user_id"] = cur_user_id
pending_loadout = copy
if _player_proxy and is_instance_valid(_player_proxy):
_player_proxy.rpc_id(1, "rpc_set_loadout", pending_loadout)
func _get_api_client() -> Node:
if has_node("/root/ApiClient"):
return get_node("/root/ApiClient")
return null