NetBase.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /**网络变量基类*/
  2. export class NetBase {
  3. private _id: string;
  4. public get Id(): string { return this._id };
  5. private dataMap: { [key: string]: any } = {};
  6. private dirtyMap: { [key: string]: any } = {};
  7. private _dirty: boolean = false;
  8. constructor(id: string) {
  9. this._id = id;
  10. this.dataMap = {};
  11. }
  12. /**初始变量值*/
  13. public initValue(data: { [key: string]: any }): void {
  14. this.dataMap = data ?? {};
  15. }
  16. /**修改某个键的值*/
  17. protected setValue(key: string, value: any): void {
  18. this.dataMap[key] = value;
  19. }
  20. protected setValueDirty(key: string, value: any): void {
  21. this.dirtyMap[key] = value;
  22. this._dirty = true;
  23. }
  24. /**获取数据的值*/
  25. protected getValue(key: string): any {
  26. return this.dataMap[key];
  27. }
  28. /**处理脏数据*/
  29. private doDirtyData(f: (data: { [key: string]: any }) => void): void {
  30. if (!this._dirty) return;
  31. f(this.dirtyMap);
  32. this.dirtyMap = {};
  33. this._dirty = false;
  34. }
  35. protected dispose(): void {
  36. this.dataMap = {};
  37. this.dirtyMap = {};
  38. this._dirty = false;
  39. }
  40. }
  41. export function transUserDataform(data: any): UserData {
  42. data.hid = Number.parseInt(data.hid);
  43. data.province = chsdk.provinceCode2Name(data.hid) ?? '其它';
  44. data.userId = Number.parseInt(data.userId);
  45. data.loginTime = Number.parseInt(data.loginTime);
  46. data.registerTime = Number.parseInt(data.registerTime);
  47. data.nickName = data.nickName || '玩家' + data.userId;
  48. return data;
  49. }
  50. export function transUserExtraDataform<T>(data: string): T | null {
  51. return data ? JSON.parse(data) as T : null
  52. }
  53. /**玩家信息*/
  54. export interface UserData {
  55. gid: string,
  56. head: string,
  57. hid: number,
  58. ip: string,
  59. loginTime: number,
  60. nickName: string,
  61. openId: string,
  62. option: string,
  63. pf: string,
  64. registerTime: number,
  65. userId: number,
  66. province: string
  67. }
  68. export interface Elements {
  69. /**排名*/Rank: number,
  70. /**段位信息*/Level: Level,
  71. /**玩家基本信息*/UserData: UserData
  72. }
  73. /**段位信息*/
  74. export interface Level {
  75. /**段位*/ LowerRank: number,
  76. /**该段位下的级别*/ Rank: number,
  77. /**该段位下星星数*/ Star: number
  78. }
  79. export interface results {
  80. /**玩家Id*/Id: string,
  81. /**变动星星数*/AddScore: number,
  82. /**是否完成*/IsFinish: boolean,
  83. /**本局排名*/Rank: number,
  84. /**最终星星数*/Score: number,
  85. /**段位排名*/TotalRank: number,
  86. /**段位信息*/Level: Level,
  87. /**玩家基本信息*/UserData: UserData,
  88. /**相近排名玩家信息*/Elements: Elements[],
  89. }
  90. export interface RankHistory {
  91. /**是否处理过奖励 */IsReceive: boolean,
  92. /**排名*/Rank: number,
  93. /**分数*/Score: number,
  94. /**所在赛季*/Season: number
  95. }
  96. export interface SeasonInfo {
  97. /**当前赛季的编号 */Season: number,
  98. /**赛季结束时间的时间戳 */SeasonEndTime: number,
  99. /**赛季结束时间的时间戳 */SeasonStartTime: number,
  100. /**历史赛季数组 */RankHistory: RankHistory[]
  101. }
  102. export interface UserRank<T> {
  103. /**玩家基本信息*/UserData: UserData,
  104. /**玩家扩展数据*/UserDataExtra: T,
  105. /**段位信息*/ Level: Level,
  106. /**排名*/ Rank: number,
  107. }
  108. export interface Ranks<T> {
  109. /**排名列表*/list: UserRank<T>[],
  110. /**玩家自己的排名*/own: UserRank<T>,
  111. }