AccountData.ts 7.2 KB

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