/// <summary> /// 读取字节流(完整版) /// </summary> protected override void toReadBytesFull(BytesReadStream stream) { stream.startReadObj(); BaseData dataT = stream.readDataFullNotNull(); if (dataT != null) { if (dataT is ClientLoginResultData) { this.data = (ClientLoginResultData)dataT; } else { this.data = new ClientLoginResultData(); if (!(dataT.GetType().IsAssignableFrom(typeof(ClientLoginResultData)))) { stream.throwTypeReadError(typeof(ClientLoginResultData), dataT.GetType()); } this.data.shadowCopy(dataT); } } else { this.data = null; } stream.endReadObj(); }
/// <summary> /// 复制(潜拷贝) /// </summary> protected override void toShadowCopy(BaseData data) { if (!(data is ClientLoginResultData)) { return; } ClientLoginResultData mData = (ClientLoginResultData)data; this.loginInfo = mData.loginInfo; this.version = mData.version; this.areas = mData.areas; this.lastAreaID = mData.lastAreaID; this.gameInfo = mData.gameInfo; }
public virtual void onLoginHttpSuccess(ClientLoginResultData data) { _httpLoginSended.unlock(); //已不在登录中 if (!isHttpLogining()) { return; } //分区分服的 if (CommonSetting.isAreaSplit()) { LocalSetting.setLoginURL(data.loginInfo.host, data.loginInfo.port); _loginToken = data.loginInfo.token; serverList = new SList <AreaClientData>(data.areas.size()); foreach (int k in data.areas.getSortedKeyList()) { serverList.add(data.areas.get(k)); } this.lastAreaID = data.lastAreaID; } else { _gameInfo = data.gameInfo; } //未等待中 if (!_waitHotfixForHttpLogin.isLocking()) { //比较更新 if (GameC.mainLogin.clientHotfix(data.version)) { loginHttpNext(); } else { _waitHotfixForHttpLogin.lockOn(); } } }
public override void onLoginHttpSuccess(ClientLoginResultData data) { if (!_g28) { _m28 = instance.Type.GetMethod("onLoginHttpSuccess", 1); _g28 = true; } if (_m28 != null && !_b28) { _b28 = true; _p1[0] = data; appdomain.Invoke(_m28, instance, _p1); _p1[0] = null; _b28 = false; } else { base.onLoginHttpSuccess(data); } }
/// <summary> /// 是否数据一致 /// </summary> protected override bool toDataEquals(BaseData data) { ClientLoginResultData mData = (ClientLoginResultData)data; if (mData.loginInfo != null) { if (this.loginInfo == null) { return(false); } if (!this.loginInfo.dataEquals(mData.loginInfo)) { return(false); } } else { if (this.loginInfo != null) { return(false); } } if (mData.version != null) { if (this.version == null) { return(false); } if (!this.version.dataEquals(mData.version)) { return(false); } } else { if (this.version != null) { return(false); } } if (mData.areas != null) { if (this.areas == null) { return(false); } if (this.areas.size() != mData.areas.size()) { return(false); } IntObjectMap <AreaClientData> areasR = mData.areas; if (!this.areas.isEmpty()) { int areasKFreeValue = this.areas.getFreeValue(); int[] areasKKeys = this.areas.getKeys(); AreaClientData[] areasVValues = this.areas.getValues(); for (int areasKI = areasKKeys.Length - 1; areasKI >= 0; --areasKI) { int areasK = areasKKeys[areasKI]; if (areasK != areasKFreeValue) { AreaClientData areasV = areasVValues[areasKI]; AreaClientData areasU = areasR.get(areasK); if (areasU != null) { if (areasV == null) { return(false); } if (!areasV.dataEquals(areasU)) { return(false); } } else { if (areasV != null) { return(false); } } } } } } else { if (this.areas != null) { return(false); } } if (this.lastAreaID != mData.lastAreaID) { return(false); } if (mData.gameInfo != null) { if (this.gameInfo == null) { return(false); } if (!this.gameInfo.dataEquals(mData.gameInfo)) { return(false); } } else { if (this.gameInfo != null) { return(false); } } return(true); }
/// <summary> /// 复制(深拷贝) /// </summary> protected override void toCopy(BaseData data) { if (!(data is ClientLoginResultData)) { return; } ClientLoginResultData mData = (ClientLoginResultData)data; if (mData.loginInfo != null) { this.loginInfo = (ClientLoginServerInfoData)mData.loginInfo.clone(); } else { this.loginInfo = null; nullObjError("loginInfo"); } if (mData.version != null) { this.version = (ClientVersionData)BytesControl.createData(ClientVersionData.dataID); this.version.copy(mData.version); } else { this.version = null; } if (mData.areas != null) { if (this.areas != null) { this.areas.clear(); this.areas.ensureCapacity(mData.areas.size()); } else { this.areas = new IntObjectMap <AreaClientData>(mData.areas.size()); } IntObjectMap <AreaClientData> areasT = this.areas; if (!mData.areas.isEmpty()) { AreaClientData[] areasVValues = mData.areas.getValues(); for (int areasVI = areasVValues.Length - 1; areasVI >= 0; --areasVI) { AreaClientData areasV = areasVValues[areasVI]; if (areasV != null) { AreaClientData areasU; if (areasV != null) { areasU = (AreaClientData)areasV.clone(); } else { areasU = null; } areasT.put(areasU.areaID, areasU); } } } } else { this.areas = null; } this.lastAreaID = mData.lastAreaID; if (mData.gameInfo != null) { this.gameInfo = (ClientLoginServerInfoData)mData.gameInfo.clone(); } else { this.gameInfo = null; } }
/// <summary> /// 读取字节流(简版) /// </summary> protected override void toReadBytesSimple(BytesReadStream stream) { this.data = (ClientLoginResultData)stream.readDataSimpleNotNull(); }