UserModel.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. import { ITEM_TYPE } from "../core/common/GameConst";
  2. let savepars = [];
  3. function save(target: any, propertyKey: string) {
  4. savepars.push(propertyKey);
  5. }
  6. export type SignInfo = {
  7. sign_index: number;
  8. sign_time: number;
  9. sign_beisu: number;
  10. }
  11. //用户数据模型
  12. export default class UserModel {
  13. public js_code: string = ""
  14. @save public nickName: string = "";
  15. @save public avatarUrl: string = "";
  16. @save public openid: string = "";
  17. @save public magnet = 0;//道具 磁铁
  18. @save public frozen = 0;//道具 冰冻时间
  19. @save public hint = 0;
  20. @save public time = 0;
  21. @save public soundVolume: number = 1;
  22. @save public vibration: number = 1;
  23. @save public lvboxDrawInfo = {}; //等级宝箱领取状态
  24. @save public starboxDrawInfo = {}; //等级宝箱领取状态
  25. //每10关
  26. public hasLvBox() {
  27. let key = Math.floor(this.lv / 10)
  28. return (key != 0) && !this.lvboxDrawInfo[key];
  29. }
  30. public hasStarBox() {
  31. let key = Math.floor(this.star / 1000)
  32. return (key != 0) && !this.starboxDrawInfo[key];
  33. }
  34. public useMagnet = false;
  35. public useTime = false;
  36. public addItem(type: ITEM_TYPE, num: number = 1) {
  37. switch (type) {
  38. case ITEM_TYPE.Coin:
  39. this.coin += num;
  40. break;
  41. case ITEM_TYPE.Magnet:
  42. this.magnet += num;
  43. break;
  44. case ITEM_TYPE.Hint:
  45. this.hint += num;
  46. break;
  47. case ITEM_TYPE.Frozen:
  48. this.frozen += num;
  49. break;
  50. case ITEM_TYPE.Time:
  51. this.time += num;
  52. break;
  53. default:
  54. debugger;
  55. break;
  56. }
  57. }
  58. @save life = 5;
  59. @save coin = 500;
  60. @save lv = 1;
  61. @save star = 0;
  62. @save openIndex = 0;
  63. @save life_cost_time = 0;
  64. self_rank: number = -1;//自己排行榜位置
  65. @save public invite_draw_info = {};
  66. //检查每日邀请是否领取奖励
  67. checkDayInviteIsDraw(cn: number) {
  68. if (!this.invite_draw_info["day"]) this.invite_draw_info["day"] = {};
  69. return this.invite_draw_info["day"][cn] == 1;
  70. }
  71. inviteDayDraw(cn: number) {
  72. if (!this.invite_draw_info["day"]) this.invite_draw_info["day"] = {};
  73. return this.invite_draw_info["day"][cn] = 1;
  74. }
  75. //检查新邀请是否领取奖励
  76. checkNewInviteIsDraw(cn: number) {
  77. if (!this.invite_draw_info["new"]) this.invite_draw_info["new"] = {};
  78. return this.invite_draw_info["new"][cn] == 1;
  79. }
  80. inviteNewDraw(cn: number) {
  81. if (!this.invite_draw_info["new"]) this.invite_draw_info["new"] = {};
  82. return this.invite_draw_info["new"][cn] = 1;
  83. }
  84. @save public storeup = false;//是否搜藏游戏
  85. public launch_from_my_minigame = false;//本次启动是否从我的小程序启动
  86. public query = null;//启动查询参数
  87. @save public signinfo: SignInfo = { sign_index: 0, sign_time: 0, sign_beisu: 1 }
  88. //在线奖励
  89. @save public lastlogintime: number = 0;//最近一次登陆时间
  90. @save public onlineTime: number = 0;// 秒 在线时间 update++
  91. @save public drawed_online_reward_ids = [];//已经领取了在线奖励ID
  92. public serverTime = 0;
  93. public getUploadData(): object {
  94. var data = {}
  95. this.serverTime = Date.now();
  96. for (var i = 0; i < savepars.length; ++i) {
  97. data[savepars[i]] = this[savepars[i]];
  98. }
  99. return data;
  100. }
  101. public setData(data: any) {
  102. //初始化下数据
  103. if (!data) {
  104. return;
  105. }
  106. for (var i = 0; i < savepars.length; ++i) {
  107. const element = data[savepars[i]];
  108. if (element != null || element != undefined) {
  109. if (Object.prototype.toString.call(element) == "[object Object]") {
  110. for (const key in element) {
  111. this[savepars[i]][key] = element[key];
  112. }
  113. }
  114. else
  115. this[savepars[i]] = element;
  116. }
  117. }
  118. }
  119. }