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

        if (stream.readBoolean())
        {
            BaseData itemDicT = stream.readDataFullNotNull();
            if (itemDicT != null)
            {
                if (itemDicT is ItemDicContainerData)
                {
                    this.itemDic = (ItemDicContainerData)itemDicT;
                }
                else
                {
                    this.itemDic = new ItemDicContainerData();
                    if (!(itemDicT.GetType().IsAssignableFrom(typeof(ItemDicContainerData))))
                    {
                        stream.throwTypeReadError(typeof(ItemDicContainerData), itemDicT.GetType());
                    }
                    this.itemDic.shadowCopy(itemDicT);
                }
            }
            else
            {
                this.itemDic = null;
            }
        }
        else
        {
            this.itemDic = null;
        }

        stream.endReadObj();
    }
Beispiel #2
0
 /// <summary>
 /// 读取字节流(简版)
 /// </summary>
 protected override void toReadBytesSimple(BytesReadStream stream)
 {
     if (stream.readBoolean())
     {
         this.itemDic = (ItemDicContainerData)stream.readDataSimpleNotNull();
     }
     else
     {
         this.itemDic = null;
     }
 }
Beispiel #3
0
    /// <summary>
    /// 复制(潜拷贝)
    /// </summary>
    protected override void toShadowCopy(BaseData data)
    {
        if (!(data is UnitFuncData))
        {
            return;
        }

        UnitFuncData mData = (UnitFuncData)data;

        this.itemDic = mData.itemDic;
    }
    protected override void toSetData(FuncToolData data)
    {
        base.toSetData(data);
        _data = (ItemDicContainerData)data;

        _showListDirty = true;

        _data = (ItemDicContainerData)data;

        _dic = _data.items;
        //_gridNum=_data.gridNum;
        _gridNum = 0;
        //TODO:之后实现完整gridNum
    }
Beispiel #5
0
    /// <summary>
    /// 复制(潜拷贝)
    /// </summary>
    protected override void toShadowCopy(BaseData data)
    {
        base.toShadowCopy(data);

        if (!(data is ItemDicContainerData))
        {
            return;
        }

        ItemDicContainerData mData = (ItemDicContainerData)data;

        this.items           = mData.items;
        this.serverItemIndex = mData.serverItemIndex;
        this.clientItemIndex = mData.clientItemIndex;
    }
Beispiel #6
0
    /// <summary>
    /// 复制(深拷贝)
    /// </summary>
    protected override void toCopy(BaseData data)
    {
        if (!(data is UnitFuncData))
        {
            return;
        }

        UnitFuncData mData = (UnitFuncData)data;

        if (mData.itemDic != null)
        {
            this.itemDic = (ItemDicContainerData)mData.itemDic.clone();
        }
        else
        {
            this.itemDic = null;
        }
    }
Beispiel #7
0
 /// <summary>
 /// 回池
 /// </summary>
 protected override void toRelease(DataPool pool)
 {
     this.itemDic = null;
 }
Beispiel #8
0
    /// <summary>
    /// 是否数据一致
    /// </summary>
    protected override bool toDataEquals(BaseData data)
    {
        if (!base.toDataEquals(data))
        {
            return(false);
        }

        ItemDicContainerData mData = (ItemDicContainerData)data;

        if (mData.items != null)
        {
            if (this.items == null)
            {
                return(false);
            }
            if (this.items.size() != mData.items.size())
            {
                return(false);
            }
            IntObjectMap <ItemData> itemsR = mData.items;
            if (!this.items.isEmpty())
            {
                int        itemsKFreeValue = this.items.getFreeValue();
                int[]      itemsKKeys      = this.items.getKeys();
                ItemData[] itemsVValues    = this.items.getValues();
                for (int itemsKI = itemsKKeys.Length - 1; itemsKI >= 0; --itemsKI)
                {
                    int itemsK = itemsKKeys[itemsKI];
                    if (itemsK != itemsKFreeValue)
                    {
                        ItemData itemsV = itemsVValues[itemsKI];
                        ItemData itemsU = itemsR.get(itemsK);
                        if (itemsU != null)
                        {
                            if (itemsV == null)
                            {
                                return(false);
                            }
                            if (!itemsV.dataEquals(itemsU))
                            {
                                return(false);
                            }
                        }
                        else
                        {
                            if (itemsV != null)
                            {
                                return(false);
                            }
                        }
                    }
                }
            }
        }
        else
        {
            if (this.items != null)
            {
                return(false);
            }
        }

        if (this.serverItemIndex != mData.serverItemIndex)
        {
            return(false);
        }

        if (this.clientItemIndex != mData.clientItemIndex)
        {
            return(false);
        }

        return(true);
    }
Beispiel #9
0
    /// <summary>
    /// 复制(深拷贝)
    /// </summary>
    protected override void toCopy(BaseData data)
    {
        base.toCopy(data);

        if (!(data is ItemDicContainerData))
        {
            return;
        }

        ItemDicContainerData mData = (ItemDicContainerData)data;

        if (mData.items != null)
        {
            if (this.items != null)
            {
                this.items.clear();
                this.items.ensureCapacity(mData.items.size());
            }
            else
            {
                this.items = new IntObjectMap <ItemData>(mData.items.size());
            }

            IntObjectMap <ItemData> itemsT = this.items;
            if (!mData.items.isEmpty())
            {
                int        itemsKFreeValue = mData.items.getFreeValue();
                int[]      itemsKKeys      = mData.items.getKeys();
                ItemData[] itemsVValues    = mData.items.getValues();
                for (int itemsKI = itemsKKeys.Length - 1; itemsKI >= 0; --itemsKI)
                {
                    int itemsK = itemsKKeys[itemsKI];
                    if (itemsK != itemsKFreeValue)
                    {
                        ItemData itemsV = itemsVValues[itemsKI];
                        int      itemsW;
                        ItemData itemsU;
                        itemsW = itemsK;

                        if (itemsV != null)
                        {
                            itemsU = (ItemData)itemsV.clone();
                        }
                        else
                        {
                            itemsU = null;
                            nullObjError("itemsU");
                        }

                        itemsT.put(itemsW, itemsU);
                    }
                }
            }
        }
        else
        {
            this.items = null;
            nullObjError("items");
        }

        this.serverItemIndex = mData.serverItemIndex;

        this.clientItemIndex = mData.clientItemIndex;
    }