feat: directly retrieve files to restore missing functions from commit

This commit is contained in:
2026-07-14 15:22:28 +08:00
parent 5ac4256972
commit b01ccf88b0
6 changed files with 246 additions and 114 deletions
+22 -19
View File
@@ -1,11 +1,10 @@
extends Node
# Standard Nakama Configuration
var nakama_server_key = "defaultkey"
var nakama_host = "thunderobot.tapir-atria.ts.net"
var nakama_port = 7350
var nakama_scheme = "https"
var nakama_port_funnel = 443
var nakama_server_key = OS.get_environment("NAKAMA_SERVER_KEY") if OS.has_environment("NAKAMA_SERVER_KEY") else ProjectSettings.get_setting("network/nakama/server_key", "defaultkey")
var nakama_host = OS.get_environment("NAKAMA_HOST") if OS.has_environment("NAKAMA_HOST") else ProjectSettings.get_setting("network/nakama/host", "tektondash.vps.webdock.cloud")
var nakama_port = OS.get_environment("NAKAMA_PORT").to_int() if OS.has_environment("NAKAMA_PORT") else ProjectSettings.get_setting("network/nakama/port", 7350)
var nakama_scheme = OS.get_environment("NAKAMA_SCHEME") if OS.has_environment("NAKAMA_SCHEME") else ProjectSettings.get_setting("network/nakama/scheme", "http")
# Core Nakama Variables
var client: NakamaClient
@@ -30,10 +29,7 @@ func _ready():
set_process(true)
func _init_client():
if nakama_host == "thunderobot.tapir-atria.ts.net":
client = Nakama.create_client(nakama_server_key, nakama_host, 443, "https")
else:
client = Nakama.create_client(nakama_server_key, nakama_host, nakama_port, nakama_scheme)
client = Nakama.create_client(nakama_server_key, nakama_host, nakama_port, nakama_scheme)
func set_server(host: String, port: int = 7350):
# Clean up the host string
@@ -127,8 +123,16 @@ func connect_to_nakama_async(email: String = "", password: String = "") -> bool:
return false
elif socket_result.is_exception():
var err = socket_result.get_exception()
printerr("[NakamaManager] Socket Error: %s (Code: %s)" % [err.message, err.status_code])
emit_signal("connection_failed", err.message)
var err_msg = "Socket connection failed"
if err and not err.message.is_empty():
err_msg = err.message
elif err and err.status_code >= 0:
err_msg = "Socket connection failed with code %s" % err.status_code
printerr("[NakamaManager] Socket Error: %s (Code: %s)" % [err_msg, err.status_code if err else -1])
emit_signal("connection_failed", err_msg)
if socket:
socket.close()
socket = null
return false
# 3. Initialize Multiplayer Bridge
@@ -184,8 +188,10 @@ func host_game(room_meta: Dictionary = {}):
printerr("Cannot host: Bridge not initialized")
return
print("Hosting match via Nakama Bridge...")
await bridge.create_match()
# Errors are emitted via bridge's match_join_error signal
var result = await bridge.create_match()
if result and result.is_exception():
emit_signal("match_join_error", result.get_exception().message)
return
# Store room metadata in Nakama storage so other players can see it in listings
if session and current_match_id and room_meta.size() > 0:
var meta_json = JSON.stringify(room_meta)
@@ -211,13 +217,10 @@ func join_game(match_id: String):
# Wait a bit for cleanup
await get_tree().create_timer(0.2).timeout
if not bridge:
printerr("Cannot join: Bridge became null while waiting")
return
print("Joining match: ", match_id)
await bridge.join_match(match_id)
# Errors are emitted via bridge's match_join_error signal
var result = await bridge.join_match(match_id)
if result and result.is_exception():
emit_signal("match_join_error", result.get_exception().message)
# --- Callbacks ---