AccountData.ts 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. import { Framework } from "../../framework/Framework";
  2. import { ObjectUtil } from "../../framework/util/ObjectUtil";
  3. import { StringUtil } from "../../framework/util/StringUtil";
  4. import { GameEvent } from "./GameEvent";
  5. interface Account {
  6. openId: string;
  7. openKey: string;
  8. sdkUid;
  9. cdkeyUrl: string;
  10. version: string;
  11. cdnUrl: string;
  12. bulletin: string;
  13. platform: string;
  14. serverOpenTime: number;
  15. serverOpenHour: number;
  16. white: number;
  17. openCdkey: number;
  18. openLogout: number;
  19. download: string;
  20. }
  21. //账号角色 不是游戏角色
  22. interface Role {
  23. sid: number;
  24. headpic: number;
  25. role_name: string;
  26. uid: string;
  27. lv: number;
  28. last_time: string;
  29. name?: string;
  30. status?: number;
  31. host?: string;
  32. gs?: number;
  33. }
  34. interface Server {
  35. sid: number;
  36. name: string;
  37. status: number;
  38. host: string;
  39. gs: number;
  40. }
  41. // type ServerData = {
  42. // role_list?: { id: string; pic: string; name: string; uid: string; lv: string; last_time: string }[];
  43. // server_list?: { id: string; name: string; status: string; host: string }[];
  44. // lastsid?: number;
  45. // };
  46. class Data {
  47. private _class_id = StringUtil.getUUID(32);
  48. //需要保存的数据
  49. save_data = new Map<string, any>();
  50. UserID: any = null;
  51. private _roleServers: Role[] = [];
  52. private _servers: Server[] = [];
  53. private _recmdServers: Server[] = [];
  54. // 服务器校对时间 毫秒
  55. private _serverCheckTime: number = 0;
  56. //账号信息
  57. private _accountData: Account = {
  58. openId: '',
  59. openKey: '',
  60. sdkUid: '',
  61. cdkeyUrl: '',
  62. version: '',
  63. cdnUrl: '',
  64. bulletin: '',
  65. platform: '',
  66. serverOpenTime: 0,
  67. serverOpenHour: 0,
  68. white: 0,
  69. openCdkey: 0,
  70. openLogout: 0,
  71. download: '',
  72. };
  73. //最后一次登录服id
  74. // private _sid: number = this.save_locally('lastsid',null,-1);;
  75. private _sid: number = -1;
  76. //推荐区域
  77. private _areaId: string = '1';
  78. _saveData(key: string, value: any) {
  79. this.save_data.delete(key);
  80. if (typeof value === 'object') {
  81. try {
  82. if (value instanceof Map) {
  83. let temp = ObjectUtil.mapToObject(value)
  84. value = JSON.stringify(temp);
  85. } else {
  86. value = JSON.stringify(value);
  87. }
  88. } catch (e) {
  89. console.error(`解析失败,str = ${value}`);
  90. return;
  91. }
  92. } else {
  93. value = value + "";
  94. }
  95. this.save_data.set(key, value);
  96. Framework.storage.set('save_data', this.save_data);
  97. }
  98. private _mapToObject(map: any) {
  99. let obj = {};
  100. for (let [k, v] of map) {
  101. obj[k] = v;
  102. }
  103. return obj;
  104. }
  105. // 获取服务器时间 毫秒
  106. get serverTime() {
  107. let now = new Date();
  108. let time = now.getTime()
  109. return this._serverCheckTime+time;
  110. }
  111. set serverTime(value) {
  112. let now = new Date();
  113. let time = now.getTime()
  114. this._serverCheckTime = value - time;
  115. }
  116. parseLoginData(data) {
  117. this._roleServers = [];
  118. this._servers = [];
  119. this._recmdServers = [];
  120. this.initAccount(data);
  121. this.initRoles(data.role_list);
  122. if (data.server_list) {
  123. this.initServers(data.server_list);
  124. }
  125. if (data.lastsid && data.lastsid > 0) {
  126. this.setSid(data.lastsid, true);
  127. }
  128. }
  129. setSid(sid: number, flag: boolean): void {
  130. this._sid = sid;
  131. if (flag) {
  132. this._saveData('lastsid',sid);
  133. }
  134. }
  135. getSid(){
  136. return this._sid;
  137. }
  138. setAreanId(areanId: string): void {
  139. this._areaId = areanId;
  140. }
  141. getAreanId(){
  142. return this._areaId;
  143. }
  144. private initAccount(data) {
  145. if (data.openid) {
  146. this._accountData.openId = data.openid;
  147. }
  148. if (data.openkey) {
  149. this._accountData.openKey = data.openkey;
  150. }
  151. if (data.sdkuid) {
  152. this._accountData.sdkUid = data.sdkuid;
  153. }
  154. if (data.cdkey) {
  155. this._accountData.cdkeyUrl = data.cdkey;
  156. }
  157. if (data.version) {
  158. this._accountData.version = data.version;
  159. }
  160. if (data.cdn) {
  161. this._accountData.cdnUrl = data.cdn;
  162. }
  163. if (data.bulletin) {
  164. this._accountData.bulletin = data.bulletin;
  165. }
  166. if (data.platform) {
  167. this._accountData.platform = data.platform;
  168. }
  169. if (data.server_open_time) {
  170. this._accountData.serverOpenTime = data.server_open_time;
  171. }
  172. if (data.server_open_hour) {
  173. this._accountData.serverOpenHour = data.server_open_hour;
  174. }
  175. if (data.white) {
  176. this._accountData.white = data.white;
  177. }
  178. if (data.open_cdkey) {
  179. this._accountData.openCdkey = data.open_cdkey;
  180. }
  181. if (data.open_logout) {
  182. this._accountData.openLogout = data.open_logout;
  183. }
  184. if (data.download) {
  185. this._accountData.download = data.download;
  186. }
  187. }
  188. private initRoles(roleList?: { id: string; pic: string; name: string; uid: string; lv: string; last_time: string }[]): void {
  189. if (roleList) {
  190. for (const key in roleList) {
  191. let v = roleList[key];
  192. const t: Role = {
  193. sid: parseInt(v.id),
  194. headpic: parseInt(v.pic),
  195. role_name: v.name,
  196. uid: v.uid,
  197. lv: parseInt(v.lv),
  198. last_time: v.last_time,
  199. };
  200. this._roleServers.push(t);
  201. }
  202. }
  203. }
  204. private initServers(serverList: { id: string; name: string; status: string; host: string }[]): void {
  205. for (const key in serverList) {
  206. let v = serverList[key];
  207. const tab: Server = {
  208. sid: parseInt(v.id),
  209. name: v.name,
  210. status: parseInt(v.status),
  211. host: v.host,
  212. gs: parseInt(v.status) * 10000 + parseInt(v.id),
  213. };
  214. this._servers.push(tab);
  215. if (tab.status === 2) {
  216. this._recmdServers.push(tab);
  217. }
  218. for (const role of this._roleServers) {
  219. if (role.sid === tab.sid) {
  220. role.name = tab.name;
  221. role.status = tab.status;
  222. role.host = tab.host;
  223. role.gs = tab.gs;
  224. break;
  225. }
  226. }
  227. }
  228. this._roleServers.sort((a, b) => (a.last_time > b.last_time ? -1 : 1));
  229. this._servers.sort((a, b) => (a.gs > b.gs ? -1 : 1));
  230. this._recmdServers.sort((a, b) => (a.gs > b.gs ? -1 : 1));
  231. }
  232. getAccountData() {
  233. return this._accountData;
  234. }
  235. getAllServers() {
  236. return this._servers;
  237. }
  238. getRoleServers() {
  239. return this._roleServers;
  240. }
  241. getRecmdServers() {
  242. return this._recmdServers;
  243. }
  244. getServerBySid(sid: number): Server | undefined {
  245. let server = this._servers.find(v => v.sid === sid);
  246. if (!server) {
  247. if (this._servers.length <= 0) {
  248. // PromptMgr.showTips(Util.getString('110573'));
  249. }
  250. this._sid = this._servers[0]?.sid;
  251. server = this._servers[0];
  252. }
  253. return server;
  254. }
  255. }
  256. export let AccountData = new Data;