合并主场景和个人小屋

This commit is contained in:
王浩
2026-02-07 14:11:00 +08:00
parent 603e7d9fc6
commit 326ab7ce5c
360 changed files with 4913 additions and 21701 deletions

View File

@@ -68,6 +68,9 @@ enum LoginMode {
# ============ 成员变量 ============
# 当前用户ID静态变量用于BaseLevel等场景访问
static var current_user_id: String = ""
# 登录状态
var current_login_mode: LoginMode = LoginMode.PASSWORD
var is_processing: bool = false
@@ -91,14 +94,13 @@ var _refresh_token: String = "" # JWT刷新令牌长期用于获取
var _user_info: Dictionary = {} # 用户信息
var _token_expiry: float = 0.0 # access_token过期时间Unix时间戳
# 游戏 token兼容旧代码,保留但标记为废弃)
# 游戏 token废弃,保留供旧接口
var _game_token: String = "" # @deprecated 使用 _access_token 替代
# ============ 生命周期方法 ============
# 初始化管理器
func _init() -> void:
print("AuthManager 初始化完成")
_load_auth_data()
# 清理资源
@@ -121,7 +123,7 @@ func cleanup() -> void:
# - 保存用户信息
func _save_tokens_to_memory(data: Dictionary) -> void:
if not data.has("data"):
print("⚠️ 登录响应中没有 data 字段")
push_warning("AuthManager: 登录响应中没有 data 字段")
return
var token_data: Dictionary = data.data
@@ -130,12 +132,11 @@ func _save_tokens_to_memory(data: Dictionary) -> void:
_user_info = token_data.get("user", {})
_token_expiry = Time.get_unix_time_from_system() + float(token_data.get("expires_in", 0))
# 保持兼容性:设置 _game_token
_game_token = _access_token
# 设置当前用户ID用于BaseLevel等场景
if _user_info.has("id"):
AuthManager.current_user_id = str(_user_info.id)
print("✅ Token已保存到内存")
print(" Access Token: ", _access_token.substr(0, 20) + "...")
print(" 用户: ", _user_info.get("username", "未知"))
_game_token = _access_token
# 保存 Token 到本地ConfigFile
#
@@ -165,10 +166,8 @@ func _save_tokens_to_local(data: Dictionary) -> void:
config.set_value("auth", "saved_at", auth_data["saved_at"])
var error: Error = config.save(AUTH_CONFIG_PATH)
if error == OK:
print("✅ Token已保存到本地: ", AUTH_CONFIG_PATH)
else:
print("❌ 保存Token到本地失败错误码: ", error)
if error != OK:
push_error("AuthManager: 保存Token到本地失败错误码: %d" % error)
# 从本地加载 Token游戏启动时调用
#
@@ -177,14 +176,13 @@ func _save_tokens_to_local(data: Dictionary) -> void:
# - access_token 需要通过 refresh_token 刷新获取
func _load_auth_data() -> void:
if not FileAccess.file_exists(AUTH_CONFIG_PATH):
print(" 本地不存在认证数据")
return
var config: ConfigFile = ConfigFile.new()
var error: Error = config.load(AUTH_CONFIG_PATH)
if error != OK:
print(" 加载本地认证数据失败,错误码: ", error)
push_error("AuthManager: 加载本地认证数据失败,错误码: %d" % error)
return
_refresh_token = config.get_value("auth", "refresh_token", "")
@@ -196,10 +194,8 @@ func _load_auth_data() -> void:
"id": user_id,
"username": username
}
print("✅ 已从本地加载认证数据")
print(" 用户: ", username)
else:
print("⚠️ 本地认证数据无效(没有 refresh_token")
push_warning("AuthManager: 本地认证数据无效(没有 refresh_token")
# 清除本地认证数据(登出时调用)
#
@@ -215,11 +211,10 @@ func _clear_auth_data() -> void:
if FileAccess.file_exists(AUTH_CONFIG_PATH):
DirAccess.remove_absolute(AUTH_CONFIG_PATH)
print("✅ 已清除本地认证数据")
# ============ Token 访问方法 ============
# 设置游戏 token兼容旧代码,推荐使用 _save_tokens_to_memory
# 设置游戏 token建议优先使用 _save_tokens_to_memory
#
# 参数:
# token: String - 游戏认证 token
@@ -230,7 +225,6 @@ func _clear_auth_data() -> void:
func set_game_token(token: String) -> void:
_game_token = token
_access_token = token # 同步更新 access_token
print("AuthManager: 游戏 token 已设置")
# 获取游戏 token
#
@@ -768,4 +762,4 @@ func _is_valid_identifier(identifier: String) -> bool:
func _is_valid_phone(phone: String) -> bool:
var regex = RegEx.new()
regex.compile("^\\+?[1-9]\\d{1,14}$")
return regex.search(phone) != null
return regex.search(phone) != null