public virtual void makeClientLoginData(ClientLoginData data) { //游客 if (platform == PlatformType.Visitor) { uid = getVisitorUID(); } data.uid = uid; data.countryID = countryID; data.platform = platform; data.clientPlatformType = SystemControl.clientPlatform; data.deviceType = SystemInfo.deviceType.ToString(); data.deviceUniqueIdentifier = SystemInfo.deviceUniqueIdentifier; data.visitorUID = ""; VersionSaveData localVersionData = ResourceInfoControl.getVersion(); data.appVersion = localVersionData.appVersion; data.resourceVersion = localVersionData.resourceVersion; ClientLoginCacheData loginCacheData = GameC.save.loadLoginCache(); //游客平台,为自动绑定 if (loginCacheData != null && loginCacheData.platform == PlatformType.Visitor && data.platform != PlatformType.Visitor) { data.visitorUID = loginCacheData.uid; } }
/// <summary> /// 是否数据一致 /// </summary> protected override bool toDataEquals(BaseData data) { ClientLoginCacheData mData = (ClientLoginCacheData)data; if (this.uid != mData.uid) { return(false); } if (this.platform != mData.platform) { return(false); } if (this.areaID != mData.areaID) { return(false); } if (this.lastPlayerID != mData.lastPlayerID) { return(false); } if (this.serverBornCode != mData.serverBornCode) { return(false); } return(true); }
/** 清除登录数据(注销后调用) */ public void clearLoginCache() { if (_loginData != null) { FileUtils.deleteFile(_loginDataPath); _loginData = null; } }
protected override void doStepInputUser(ClientLoginCacheData data, bool canOffline) { Ctrl.print("账号输入过程", data); // base.doStepInputUser(data,canOffline); // inputUserOver(createClientLoginData()); HGameUI.login.show(data); }
/** 保存登录缓存数据 */ private void saveLoginCache(ClientLoginCacheData data) { _loginData = data; BytesWriteStream stream = new BytesWriteStream(); stream.writeVersion(ShineGlobal.loginDataVersion); data.writeBytesFull(stream); FileUtils.writeFileForBytesWriteStream(_loginDataPath, stream); }
/** 保存areaID */ public void saveByAreaID(int areaID) { ClientLoginCacheData cacheData = loadLoginCache(); if (cacheData == null) { Ctrl.throwError("此时不该没有登录数据"); return; } cacheData.areaID = areaID; saveLoginCache(cacheData); }
public void saveByServerBornCode(int serverBornCode) { ClientLoginCacheData cacheData = loadLoginCache(); if (cacheData == null) { Ctrl.throwError("此时不该没有登录数据"); return; } cacheData.serverBornCode = serverBornCode; saveLoginCache(cacheData); }
/** 通过登录数据,保存缓存数据 */ public void saveByLogin(ClientLoginData data) { if (_loginData == null) { _loginData = new ClientLoginCacheData(); _loginData.serverBornCode = -1; //没有的时候 } _loginData.uid = data.uid; _loginData.platform = data.platform; //保存本次登录数据 saveLoginCache(_loginData); }
/** 绑定平台的存储 */ public void saveByBindPlatform(string uid, string platform) { ClientLoginCacheData cacheData = loadLoginCache(); if (cacheData == null) { Ctrl.throwError("此时不该没有登录数据"); return; } cacheData.uid = uid; cacheData.platform = platform; saveLoginCache(cacheData); }
/// <summary> /// 复制(潜拷贝) /// </summary> protected override void toShadowCopy(BaseData data) { if (!(data is ClientLoginCacheData)) { return; } ClientLoginCacheData mData = (ClientLoginCacheData)data; this.uid = mData.uid; this.platform = mData.platform; this.areaID = mData.areaID; this.lastPlayerID = mData.lastPlayerID; this.serverBornCode = mData.serverBornCode; }
/** 登录离线数据 */ public bool offlineLogin() { ClientLoginCacheData data = GameC.save.loadLoginCache(); if (data == null) { Ctrl.errorLog("不能找不到缓存数据"); return(false); } if (data.lastPlayerID <= 0) { Ctrl.errorLog("不该没有上次登录角色ID"); return(false); } GameC.offline.loadPlayer(data.lastPlayerID); PlayerListData listData = GameC.offline.getListData(); if (listData == null) { Ctrl.errorLog("找不到角色缓存数据,或角色数据失效"); return(false); } GameC.player.readListData(listData); if (GameC.player.hasEmptyData()) { Ctrl.errorLog("离线登录时,存在空数据"); return(false); } //初始化离线数据 initClient(listData, false); //先切换到预备游戏 _stepTool.doStepAbs(PreGameStart); //不考虑有场景的情况,目前直接进入空场景 GameC.scene.onEnterNoneScene(); beginLoginHttp(); return(true); }
protected override void onEnter() { base.onEnter(); ClientLoginCacheData cacheData = (ClientLoginCacheData)_showArgs[0]; if (cacheData == null) { setClickPageOpen(false); setLoginButtonsVisible(true); } else { setClickPageOpen(true); setLoginButtonsVisible(false); } }
/** 读取登录数据缓存 */ public ClientLoginCacheData loadLoginCache() { if (_loginData != null) { return(_loginData); } BytesReadStream stream = FileUtils.readFileForBytesReadStream(_loginDataPath); if (stream != null && stream.checkVersion(ShineGlobal.loginDataVersion)) { _loginData = new ClientLoginCacheData(); _loginData.readBytesFull(stream); return(_loginData); } return(null); }
/** 用户账号输入过程 */ protected virtual void stepInputUser() { if (CommonSetting.isSingleGame) { // doStepInputUser doStepInputUser(null, true); } else { //先读取历史信息 ClientLoginCacheData cacheData = GameC.save.loadLoginCache(); //读取数据 if (cacheData != null) { uid = cacheData.uid; platform = cacheData.platform; areaID = cacheData.areaID; } bool hasCache = cacheData != null && CommonSetting.useOfflineGame && GameC.save.hasLastLoginPlayer(); if (SystemControl.isNetOpen()) { doStepInputUser(cacheData, hasCache); } else { if (CommonSetting.useOfflineGame) { doStepInputUser(cacheData, hasCache); } else { //TODO:此处暂时未做网络恢复的继续工作,如以后有需要就补上 GameC.ui.alert(TextEnum.NetNotOpen, exit); } } } }
protected override void doStepInputUser(ClientLoginCacheData data, bool canOffline) { if (!_g10) { _m10 = instance.Type.GetMethod("doStepInputUser", 2); _g10 = true; } if (_m10 != null && !_b10) { _b10 = true; _p2[0] = data; _p2[1] = canOffline; appdomain.Invoke(_m10, instance, _p2); _p2[0] = null; _p2[1] = null; _b10 = false; } else { base.doStepInputUser(data, canOffline); } }
/** 回复角色列表 */ public void onRePlayerList(SList <PlayerLoginData> list, int serverBornCode) { if (!_running) { return; } Ctrl.log("回复角色列表", list.length()); _playerList = list; ClientLoginCacheData loadLoginCache = GameC.save.loadLoginCache(); bool serverChanged = loadLoginCache != null && loadLoginCache.serverBornCode != -1 && loadLoginCache.serverBornCode != serverBornCode; //保存出生码 GameC.save.saveByServerBornCode(serverBornCode); //有数据 if (CommonSetting.useOfflineGame && GameC.player.system.isOfflineRunning() && !_playerList.isEmpty()) { stepPlayerLogin(); } else { if (ShineSetting.openCheck) { if (_stepTool.isComplete(CheckCreatePlayer)) { Ctrl.errorLog("step不该已完成:CheckCreatePlayer"); } } _stepTool.completeStepAbs(ConnectGame); } }
/** 获取缓存服务器生成码 */ public int getCacheServerBornCode() { ClientLoginCacheData data = loadLoginCache(); return(data != null ? data.serverBornCode : -1); }
/** 是否有上次登录的角色 */ public bool hasLastLoginPlayer() { ClientLoginCacheData data = loadLoginCache(); return(data != null && data.lastPlayerID > 0); }
/** 执行用户账号输入(data:上次的记录数据) */ protected virtual void doStepInputUser(ClientLoginCacheData data, bool canOffline) { TimeDriver.instance.setTimeOut(inputUserOver, 100); }