Ejemplo n.º 1
0
    /// <summary>
    /// 读取字节流(完整版)
    /// </summary>
    protected override void toReadBytesFull(BytesReadStream stream)
    {
        stream.startReadObj();

        int runningDatasLen = stream.readLen();

        if (this.runningDatas != null)
        {
            this.runningDatas.clear();
            this.runningDatas.ensureCapacity(runningDatasLen);
        }
        else
        {
            this.runningDatas = new IntObjectMap <AchievementData>(runningDatasLen);
        }

        IntObjectMap <AchievementData> runningDatasT = this.runningDatas;

        for (int runningDatasI = runningDatasLen - 1; runningDatasI >= 0; --runningDatasI)
        {
            AchievementData runningDatasV;
            BaseData        runningDatasVT = stream.readDataFullNotNull();
            if (runningDatasVT != null)
            {
                if (runningDatasVT is AchievementData)
                {
                    runningDatasV = (AchievementData)runningDatasVT;
                }
                else
                {
                    runningDatasV = new AchievementData();
                    if (!(runningDatasVT.GetType().IsAssignableFrom(typeof(AchievementData))))
                    {
                        stream.throwTypeReadError(typeof(AchievementData), runningDatasVT.GetType());
                    }
                    runningDatasV.shadowCopy(runningDatasVT);
                }
            }
            else
            {
                runningDatasV = null;
            }

            runningDatasT.put(runningDatasV.id, runningDatasV);
        }

        int completeDatasLen = stream.readLen();

        if (this.completeDatas != null)
        {
            this.completeDatas.clear();
            this.completeDatas.ensureCapacity(completeDatasLen);
        }
        else
        {
            this.completeDatas = new IntObjectMap <AchievementCompleteData>(completeDatasLen);
        }

        IntObjectMap <AchievementCompleteData> completeDatasT = this.completeDatas;

        for (int completeDatasI = completeDatasLen - 1; completeDatasI >= 0; --completeDatasI)
        {
            AchievementCompleteData completeDatasV;
            BaseData completeDatasVT = stream.readDataFullNotNull();
            if (completeDatasVT != null)
            {
                if (completeDatasVT is AchievementCompleteData)
                {
                    completeDatasV = (AchievementCompleteData)completeDatasVT;
                }
                else
                {
                    completeDatasV = new AchievementCompleteData();
                    if (!(completeDatasVT.GetType().IsAssignableFrom(typeof(AchievementCompleteData))))
                    {
                        stream.throwTypeReadError(typeof(AchievementCompleteData), completeDatasVT.GetType());
                    }
                    completeDatasV.shadowCopy(completeDatasVT);
                }
            }
            else
            {
                completeDatasV = null;
            }

            completeDatasT.put(completeDatasV.id, completeDatasV);
        }

        stream.endReadObj();
    }