Example #1
0
        /// <summary>
        /// 添加物品。
        /// </summary>
        /// <param name="data">网络消息数据。</param>
        private void OnItemAdd(MsgData data)
        {
            MsgData_sItemAdd info = data as MsgData_sItemAdd;

            BagInfo bag = GetBagInfo(info.Bag);

            if (bag != null)
            {
                bag.AddItem(info);
                if (mItems.ContainsKey(info.UID))
                {
                    //额外多Add了一次,下次Del时抵消
                    mCacheAddUID = info.UID;
                    mItems.Remove(mCacheAddUID);
                }
                mItems.Add(info.UID, bag.GetItemInfo(info.Pos));
                TriggerEventItemAdd(info.Bag, info.Pos);

                if (info.Bag == BagType.ITEM_BAG_TYPE_EQUIP)
                {
                    ShowEquipChange(info.ID);
                }
            }
            else
            {
                LogMgr.ErrorLog("未知背包编号 id:{0}", info.Bag);
            }
        }
Example #2
0
        private void OnMoShenItemResult(MsgData data)
        {
            MsgData_sMoShenItemResult info = data as MsgData_sMoShenItemResult;

            if (info.Result == 0)
            {
                for (int i = 0; i < info.ResultList.Count; i++)
                {
                    //交换物品成功 先将物品从背包移除,再放入对方背包
                    BagInfo srcbag = GetBagInfo(info.ResultList[i].SrcBag);
                    BagInfo dstbag = GetBagInfo(info.ResultList[i].DstBag);
                    if (dstbag == null)
                    {
                        return;
                    }
                    if (srcbag == null)
                    {
                        return;
                    }
                    ItemInfo srciteminfo = srcbag.GetItemInfo(info.ResultList[i].SrcPos);
                    ItemInfo dstiteminfo = dstbag.GetItemInfo(info.ResultList[i].DstPos);

                    srcbag.DeleteItem(info.ResultList[i].SrcPos);
                    dstbag.DeleteItem(info.ResultList[i].DstPos);
                    if (srciteminfo != null)
                    {
                        srciteminfo.Bag = info.ResultList[i].DstBag;
                        srciteminfo.Pos = info.ResultList[i].DstPos;
                        dstbag.AddItem(srciteminfo);
                    }
                    if (dstiteminfo != null)
                    {
                        dstiteminfo.Bag = info.ResultList[i].SrcBag;
                        dstiteminfo.Pos = info.ResultList[i].SrcPos;
                        srcbag.AddItem(dstiteminfo);
                    }
                }
            }
            EventParameter par = EventParameter.Get();

            par.intParameter = info.Result;
            CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_CC_MOSHEN_BAGCHANGEOVER, par);
        }
Example #3
0
        /// <summary>
        /// 交换物品回复。
        /// </summary>
        /// <param name="data">网络消息数据。</param>
        private void OnSwapItem(MsgData data)
        {
            MsgData_sSwapItemResult info = data as MsgData_sSwapItemResult;

            LogMgr.Log("交换物品回复 srcbag:{0} desbag:{1} srcpos:{2} dstpos:{3}", info.SrcBag, info.DstBag, info.SrcPos, info.DstPos);
            if (info.Result == 0)
            {
                //交换物品成功 先将物品从背包移除,再放入对方背包
                BagInfo srcbag = GetBagInfo(info.SrcBag);
                BagInfo dstbag = GetBagInfo(info.DstBag);
                if (dstbag == null)
                {
                    return;
                }
                if (srcbag == null)
                {
                    return;
                }
                ItemInfo srciteminfo = srcbag.GetItemInfo(info.SrcPos);
                ItemInfo dstiteminfo = dstbag.GetItemInfo(info.DstPos);

                srcbag.DeleteItem(info.SrcPos);
                dstbag.DeleteItem(info.DstPos);

                if ((info.DstBag == (int)BagType.ITEM_BAG_TYPE_EQUIP || info.DstBag == (int)BagType.ITEM_BAG_TYPE_RIDE) && srciteminfo != null)
                {
                    SG.CoreEntry.gAudioMgr.PlayUISound(900011);
                }
                if (srciteminfo != null)
                {
                    srciteminfo.Bag = info.DstBag;
                    srciteminfo.Pos = info.DstPos;
                    dstbag.AddItem(srciteminfo);
                    if (dstbag.BagType == BagType.ITEM_BAG_TYPE_EQUIP)
                    {
                        ShowEquipChange(srciteminfo.ID);
                    }
                }
                if (dstiteminfo != null)
                {
                    dstiteminfo.Bag = info.SrcBag;
                    dstiteminfo.Pos = info.SrcPos;
                    srcbag.AddItem(dstiteminfo);
                }

                if (srciteminfo != null && dstiteminfo != null)
                {
                    //两者不为空,两边更新
                    TriggerEventItemUpdate(info.SrcBag, info.SrcPos);
                    TriggerEventItemUpdate(info.DstBag, info.DstPos);
                }
                else if (srciteminfo != null)
                {
                    //源背包删除 目标背包添加
                    TriggerEventItemDel(2, info.SrcBag, info.SrcPos, srciteminfo.UID);
                    TriggerEventItemAdd(info.DstBag, info.DstPos);
                }
                else if (dstiteminfo != null)
                {
                    //源背包添加 目标背包删除
                    TriggerEventItemAdd(info.SrcBag, info.SrcPos);
                    TriggerEventItemDel(2, info.DstBag, info.DstPos, dstiteminfo.UID);
                }
            }
            EventParameter par = EventParameter.Get(data);

            CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_CC_BAGCHANGEOVER, par);
        }