123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- import { Framework } from "../../framework/Framework";
- import { ObjectUtil } from "../../framework/util/ObjectUtil";
- import { StringUtil } from "../../framework/util/StringUtil";
- import { GameEvent } from "./GameEvent";
- interface Account {
- openId: string;
- openKey: string;
- sdkUid;
- cdkeyUrl: string;
- version: string;
- cdnUrl: string;
- bulletin: string;
- platform: string;
- serverOpenTime: number;
- serverOpenHour: number;
- white: number;
- openCdkey: number;
- openLogout: number;
- download: string;
- }
- interface Role {
- sid: number;
- headpic: number;
- role_name: string;
- uid: string;
- lv: number;
- last_time: string;
- name?: string;
- status?: number;
- host?: string;
- gs?: number;
- }
- interface Server {
- sid: number;
- name: string;
- status: number;
- host: string;
- gs: number;
- }
- // type ServerData = {
- // role_list?: { id: string; pic: string; name: string; uid: string; lv: string; last_time: string }[];
- // server_list?: { id: string; name: string; status: string; host: string }[];
- // lastsid?: number;
- // };
- class Data {
- private _class_id = StringUtil.getUUID(32);
- //需要保存的数据
- save_data = new Map<string, any>();
- UserID: any = null;
- private _roleServers: Role[] = [];
- private _servers: Server[] = [];
- private _recmdServers: Server[] = [];
- //账号信息
- private _accountData: Account = {
- openId: '',
- openKey: '',
- sdkUid: '',
- cdkeyUrl: '',
- version: '',
- cdnUrl: '',
- bulletin: '',
- platform: '',
- serverOpenTime: 0,
- serverOpenHour: 0,
- white: 0,
- openCdkey: 0,
- openLogout: 0,
- download: '',
- };
- //最后一次登录服id
- // private _sid: number = this.save_locally('lastsid',null,-1);;
- private _sid: number = -1;
- //推荐区域
- private _areaId: string = '1';
- _saveData(key: string, value: any) {
- this.save_data.delete(key);
- if (typeof value === 'object') {
- try {
- if (value instanceof Map) {
- let temp = ObjectUtil.mapToObject(value)
- value = JSON.stringify(temp);
- } else {
- value = JSON.stringify(value);
- }
- } catch (e) {
- console.error(`解析失败,str = ${value}`);
- return;
- }
- } else {
- value = value + "";
- }
- this.save_data.set(key, value);
- Framework.storage.set('save_data', this.save_data);
- }
- private _mapToObject(map: any) {
- let obj = {};
- for (let [k, v] of map) {
- obj[k] = v;
- }
- return obj;
- }
- get serverTime() {
- return Date.now()
- }
- parseLoginData(data) {
- this._roleServers = [];
- this._servers = [];
- this._recmdServers = [];
- this.initAccount(data);
- this.initRoles(data.role_list);
- if (data.server_list) {
- this.initServers(data.server_list);
- }
- if (data.lastsid && data.lastsid > 0) {
- this.setSid(data.lastsid, true);
- }
- }
- setSid(sid: number, flag: boolean): void {
- this._sid = sid;
- if (flag) {
- this._saveData('lastsid',sid);
- }
- }
- getSid(){
- return this._sid;
- }
- setAreanId(areanId: string): void {
- this._areaId = areanId;
- }
- getAreanId(){
- return this._areaId;
- }
- private initAccount(data) {
- if (data.openid) {
- this._accountData.openId = data.openid;
- }
- if (data.openkey) {
- this._accountData.openKey = data.openkey;
- }
- if (data.sdkuid) {
- this._accountData.sdkUid = data.sdkuid;
- }
- if (data.cdkey) {
- this._accountData.cdkeyUrl = data.cdkey;
- }
- if (data.version) {
- this._accountData.version = data.version;
- }
- if (data.cdn) {
- this._accountData.cdnUrl = data.cdn;
- }
- if (data.bulletin) {
- this._accountData.bulletin = data.bulletin;
- }
- if (data.platform) {
- this._accountData.platform = data.platform;
- }
- if (data.server_open_time) {
- this._accountData.serverOpenTime = data.server_open_time;
- }
- if (data.server_open_hour) {
- this._accountData.serverOpenHour = data.server_open_hour;
- }
- if (data.white) {
- this._accountData.white = data.white;
- }
- if (data.open_cdkey) {
- this._accountData.openCdkey = data.open_cdkey;
- }
- if (data.open_logout) {
- this._accountData.openLogout = data.open_logout;
- }
- if (data.download) {
- this._accountData.download = data.download;
- }
- }
- private initRoles(roleList?: { id: string; pic: string; name: string; uid: string; lv: string; last_time: string }[]): void {
- if (roleList) {
- for (const key in roleList) {
- let v = roleList[key];
- const t: Role = {
- sid: parseInt(v.id),
- headpic: parseInt(v.pic),
- role_name: v.name,
- uid: v.uid,
- lv: parseInt(v.lv),
- last_time: v.last_time,
- };
- this._roleServers.push(t);
- }
- }
- }
- private initServers(serverList: { id: string; name: string; status: string; host: string }[]): void {
- for (const key in serverList) {
- let v = serverList[key];
- const tab: Server = {
- sid: parseInt(v.id),
- name: v.name,
- status: parseInt(v.status),
- host: v.host,
- gs: parseInt(v.status) * 10000 + parseInt(v.id),
- };
- this._servers.push(tab);
- if (tab.status === 2) {
- this._recmdServers.push(tab);
- }
- for (const role of this._roleServers) {
- if (role.sid === tab.sid) {
- role.name = tab.name;
- role.status = tab.status;
- role.host = tab.host;
- role.gs = tab.gs;
- break;
- }
- }
- }
- this._roleServers.sort((a, b) => (a.last_time > b.last_time ? -1 : 1));
- this._servers.sort((a, b) => (a.gs > b.gs ? -1 : 1));
- this._recmdServers.sort((a, b) => (a.gs > b.gs ? -1 : 1));
- }
- getAccountData() {
- return this._accountData;
- }
- getAllServers() {
- return this._servers;
- }
- getRoleServers() {
- return this._roleServers;
- }
- getRecmdServers() {
- return this._recmdServers;
- }
- getServerBySid(sid: number): Server | undefined {
- let server = this._servers.find(v => v.sid === sid);
- if (!server) {
- if (this._servers.length <= 0) {
- // PromptMgr.showTips(Util.getString('110573'));
- }
- this._sid = this._servers[0]?.sid;
- server = this._servers[0];
- }
- return server;
- }
- }
- export let AccountData = new Data;
|