/**网络变量基类*/ export class NetBase { private _id: string; public get Id(): string { return this._id }; private dataMap: { [key: string]: any } = {}; private dirtyMap: { [key: string]: any } = {}; private _dirty: boolean = false; constructor(id: string) { this._id = id; this.dataMap = {}; } /**初始变量值*/ public initValue(data: { [key: string]: any }): void { this.dataMap = data ?? {}; } /**修改某个键的值*/ protected setValue(key: string, value: any): void { this.dataMap[key] = value; } protected setValueDirty(key: string, value: any): void { this.dirtyMap[key] = value; this._dirty = true; } /**获取数据的值*/ protected getValue(key: string): any { return this.dataMap[key]; } /**处理脏数据*/ private doDirtyData(f: (data: { [key: string]: any }) => void): void { if (!this._dirty) return; f(this.dirtyMap); this.dirtyMap = {}; this._dirty = false; } protected dispose(): void { this.dataMap = {}; this.dirtyMap = {}; this._dirty = false; } } export function transUserDataform(data: any): UserData { data.hid = Number.parseInt(data.hid); data.province = chsdk.provinceCode2Name(data.hid) ?? '其它'; data.userId = Number.parseInt(data.userId); data.loginTime = Number.parseInt(data.loginTime); data.registerTime = Number.parseInt(data.registerTime); data.nickName = data.nickName || '玩家' + data.userId; return data; } export function transUserExtraDataform(data: string): T | null { return data ? JSON.parse(data) as T : null } /**玩家信息*/ export interface UserData { gid: string, head: string, hid: number, ip: string, loginTime: number, nickName: string, openId: string, option: string, pf: string, registerTime: number, userId: number, province: string } export interface Elements { /**排名*/Rank: number, /**段位信息*/Level: Level, /**玩家基本信息*/UserData: UserData } /**段位信息*/ export interface Level { /**段位*/ LowerRank: number, /**该段位下的级别*/ Rank: number, /**该段位下星星数*/ Star: number } export interface results { /**玩家Id*/Id: string, /**变动星星数*/AddScore: number, /**是否完成*/IsFinish: boolean, /**本局排名*/Rank: number, /**最终星星数*/Score: number, /**段位排名*/TotalRank: number, /**段位信息*/Level: Level, /**玩家基本信息*/UserData: UserData, /**相近排名玩家信息*/Elements: Elements[], } export interface RankHistory { /**是否处理过奖励 */IsReceive: boolean, /**排名*/Rank: number, /**分数*/Score: number, /**所在赛季*/Season: number } export interface SeasonInfo { /**当前赛季的编号 */Season: number, /**赛季结束时间的时间戳 */SeasonEndTime: number, /**赛季结束时间的时间戳 */SeasonStartTime: number, /**历史赛季数组 */RankHistory: RankHistory[] } export interface UserRank { /**玩家基本信息*/UserData: UserData, /**玩家扩展数据*/UserDataExtra: T, /**段位信息*/ Level: Level, /**排名*/ Rank: number, } export interface Ranks { /**排名列表*/list: UserRank[], /**玩家自己的排名*/own: UserRank, }