forked from datawhale/whale-town-front
- 添加登录场景(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>
67 lines
1.9 KiB
GDScript
67 lines
1.9 KiB
GDScript
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]
|