Пример #1
0
    /// <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();
    }
Пример #2
0
    /// <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;
    }
Пример #3
0
    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();
            }
        }
    }
Пример #4
0
        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);
            }
        }
Пример #5
0
    /// <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);
    }
Пример #6
0
    /// <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;
        }
    }
Пример #7
0
 /// <summary>
 /// 读取字节流(简版)
 /// </summary>
 protected override void toReadBytesSimple(BytesReadStream stream)
 {
     this.data = (ClientLoginResultData)stream.readDataSimpleNotNull();
 }