feat:实现登录系统和用户认证功能

- 添加登录场景(login_scene.tscn)和主菜单场景(main_menu_scene.tscn)
- 实现认证管理器(AuthManager)用于用户登录和会话管理
- 添加核心服务:加密服务、存储服务、网络服务
- 配置项目主场景为登录场景
- 添加自动加载服务到项目配置
- 添加开发环境配置(VSCode、Claude)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-23 01:15:33 +08:00
parent 8ed260b413
commit d623c705b6
28 changed files with 1455 additions and 0 deletions

66
scripts/data/UserData.gd Normal file
View File

@@ -0,0 +1,66 @@
class_name UserData
## 用户数据类
## 用于存储用户的基本信息
var id: String = ""
var username: String = ""
var nickname: String = ""
var email: String = ""
var phone: String = ""
var avatarUrl: String = ""
var role: int = 1
var createdAt: String = ""
# 兼容旧字段
var level: int = 1
var exp: int = 0
var createTime: int = 0
## 从字典创建 UserData 对象
static func fromDict(data: Dictionary) -> UserData:
var userData = UserData.new()
# 新字段(处理可能为 null 的值)
userData.id = str(data.get("id", ""))
userData.username = _getStringOrEmpty(data, "username")
userData.nickname = _getStringOrEmpty(data, "nickname")
userData.email = _getStringOrEmpty(data, "email")
userData.phone = _getStringOrEmpty(data, "phone")
userData.avatarUrl = _getStringOrEmpty(data, "avatar_url", _getStringOrEmpty(data, "avatarUrl"))
userData.role = int(data.get("role", 1))
userData.createdAt = _getStringOrEmpty(data, "created_at", _getStringOrEmpty(data, "createdAt"))
# 兼容旧字段
userData.level = data.get("level", 1)
userData.exp = data.get("exp", 0)
userData.createTime = data.get("create_time", data.get("createTime", 0))
return userData
## 辅助方法:从字典中获取字符串,如果为 null 则返回空字符串
static func _getStringOrEmpty(data: Dictionary, key: String, defaultValue: String = "") -> String:
var value = data.get(key, defaultValue)
if value == null:
return ""
return str(value)
## 转换为字典
func toDict() -> Dictionary:
return {
"id": id,
"username": username,
"nickname": nickname,
"email": email,
"phone": phone,
"avatar_url": avatarUrl,
"role": role,
"created_at": createdAt,
"level": level,
"exp": exp,
"create_time": createTime
}
## 打印用户信息(用于调试)
func toString() -> String:
return "UserData(id=%s, username=%s, nickname=%s, role=%d)" % [id, username, nickname, role]