Exemple #1
0
    void CompoundSingle()
    {
        bool           compound    = false;
        int            unlockCount = CDataPool.Instance.TalismanInventory_UnLockCount();
        CTalisman_Item item1       = null;
        CTalisman_Item item2       = null;

        for (int i = 0; i < unlockCount; i++)
        {
            item1 = CDataPool.Instance.TalismanInventory_GetItem(i);
            int lv      = item1.GetLV();
            int quality = item1.GetItemTableQuality();
            item2 = CDataPool.Instance.TalismanInventory_GetSuitableCompoundItem(lv, quality);
            if (item2 != null)
            {
                CGOperateTalisman operateTalisman = new CGOperateTalisman();
                operateTalisman.Type     = 2;
                operateTalisman.SrcIndex = (byte)(item1.GetPosIndex() + GAMEDEFINE.MAX_BAG_SIZE);
                operateTalisman.DstIndex = (byte)(item2.GetPosIndex() + GAMEDEFINE.MAX_BAG_SIZE);
                NetManager.GetNetManager().SendPacket(operateTalisman);
                compound = true;
                return;
            }
        }

        if (autoCompound)
        {
            autoCompound = compound;
        }

        if (!autoCompound)
        {
            EnableButton(true);
        }
    }
    //得到定义ID
    public override int GetDefineID()
    {
        CTalisman_Item item = ItemImpl;

        if (item == null)
        {
            return(-1);
        }
        return(item.Define.nTableIndex);
    }
    //得到解释
    public override string GetDesc()
    {
        CTalisman_Item item = ItemImpl;

        if (item == null)
        {
            return("ERROR");
        }

        return(item.GetDesc());
    }
    public string GetFontColor()
    {
        CTalisman_Item item = ItemImpl;

        if (item == null)
        {
            return("");
        }
        ;
        return(item.getFontColor());
    }
    public int GetSellPrice()
    {
        CTalisman_Item item = ItemImpl;

        if (item == null)
        {
            return(0);
        }
        ;
        return(item.GetItemPrice());
    }
    public uint GetNextLVExp()
    {
        CTalisman_Item item = ItemImpl;

        if (item == null)
        {
            return(0);
        }
        ;
        return(item.NextExp);
    }
    public uint GetCurExp()
    {
        CTalisman_Item item = ItemImpl;

        if (item == null)
        {
            return(0);
        }
        ;
        return(item.Exp);
    }
    // 得到等级
    public virtual int GetLevel()
    {
        CTalisman_Item item = ItemImpl;

        if (item == null)
        {
            return(0);
        }
        ;
        return(item.GetLV());
    }
    //得到所在容器的索引
    //	技能			- 第几个技能
    public override int GetPosIndex()
    {
        CTalisman_Item item = ItemImpl;

        if (item == null)
        {
            return(-1);
        }

        return(item.GetPosIndex());
    }
 //更新数据
 public void Update_Item(CTalisman_Item item)
 {
     m_id = item.GetID();
     //名称
     m_strName = item.Define.szName;
     //图标
     m_strIconName = item.Define.szIcon;
     ItemImpl      = item;
     //通知UI
     UpdateToRefrence();
 }
    void NotifyDragPackageToPackage(string szSourceName, string szTargetName)
    {
        int srcPackageIndex = Convert.ToInt32(szSourceName.Substring(1, szSourceName.Length - 1)) - 1;
        int desPackageIndex = Convert.ToInt32(szTargetName.Substring(1, szTargetName.Length - 1)) - 1;

        Debug.Log("src " + szSourceName + " dst " + szTargetName);
        CTalisman_Item item = ItemImpl;

        if (item != null)
        {
            switch (item.TypeOwner)
            {
            //Package -> Package
            case ITEM_OWNER.IO_TALISMAN_PACKET:
            {
                //先不做能不能放入的检测
                int srcindex = (int)srcPackageIndex + GAMEDEFINE.MAX_BAG_SIZE;
                int dstindex = (int)desPackageIndex + GAMEDEFINE.MAX_BAG_SIZE;


                if (srcindex == dstindex)
                {
                    return;
                }

                CTalisman_Item desItem = CDataPool.Instance.TalismanInventory_GetItem(srcPackageIndex);
                CTalisman_Item srcItem = CDataPool.Instance.TalismanInventory_GetItem(desPackageIndex);
                if (desItem != null && srcItem != null)
                {
                    CGOperateTalisman operateTalisman = new CGOperateTalisman();
                    operateTalisman.Type     = 2;
                    operateTalisman.SrcIndex = (byte)srcindex;
                    operateTalisman.DstIndex = (byte)dstindex;
                    NetManager.GetNetManager().SendPacket(operateTalisman);
                }
                else
                {
                    //不同格
                    CGPackage_SwapItem msg = new CGPackage_SwapItem();
                    msg.PIndex1 = (byte)srcindex;
                    msg.PIndex2 = (byte)dstindex;
                    NetManager.GetNetManager().SendPacket(msg);
                }
            }
            break;
            }
        }
    }
Exemple #12
0
    void RefreshInventoryByIndex(int index)
    {
        if (index < 0 || index >= CDataPool.Instance.TalismanInventory_UnLockCount())
        {
            LogManager.LogError("Refresh Fabao Inventory index out of range");
            return;
        }
        CTalisman_Item item = CDataPool.Instance.TalismanInventory_GetItem(index);

        if (item == null)
        {
            inventory_[index].SetActionItem(-1);
        }
        else
        {
            inventory_[index].SetActionItem(item.GetID());
        }
    }
Exemple #13
0
    void RefreshEquiptmentByIndex(int index)
    {
        if (index < 0 || index >= CDataPool.Instance.TalismanEquipment_UnLockCount())
        {
            LogManager.LogError("Refresh Fabao Equipt index out of range");
            return;
        }
        CTalisman_Item item = CDataPool.Instance.TalismanEquipment_GetItem(index);

        if (item == null)
        {
            equipts_[index].SetActionItem(-1);
        }
        else
        {
            equipts_[index].SetActionItem(item.GetID());
        }
    }
Exemple #14
0
    public void setItem(int index, ref _ITEM item)
    {
        if (index < 0 || index >= MAX_TALISMAN_EQUIPT_NUMBER)
        {
            return;
        }
        if (mItems[index] != null)
        {
            ObjectSystem.Instance.DestroyItem(mItems[index]);
            mItems[index] = null;
        }
        CTalisman_Item newItem = ObjectSystem.Instance.NewItem(item.m_ItemIndex) as CTalisman_Item;

        mItems[index]     = newItem;
        newItem.PosIndex  = (short)index;
        newItem.TypeOwner = ITEM_OWNER.IO_TALISMAN_EQUIPT;
        newItem.SetGUID(item.m_ItemGUID.m_World, item.m_ItemGUID.m_Server, (uint)item.m_ItemGUID.m_Serial);
        newItem.SetExtraInfo(ref item);
    }
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer)
        {
            if (GameProcedure.GetActiveProcedure() == GameProcedure.s_ProcMain)
            {
                GCOperateTalismanResult packet = pPacket as GCOperateTalismanResult;
                string resultInfo = "";
                switch ((GCOperateTalismanResult.UseOperateTalismanResultCode)packet.Result)
                {
                case GCOperateTalismanResult.UseOperateTalismanResultCode.USEOPERATETALISMAN_SUCCESS:
                    resultInfo = "成功";
                    break;

                case GCOperateTalismanResult.UseOperateTalismanResultCode.USEOPERATETALISMAN__FAIL:
                    resultInfo = "失败";
                    break;

                case GCOperateTalismanResult.UseOperateTalismanResultCode.USEOPERATETALISMAN_BAG_FULL:
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "法宝栏已满");
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);

                case GCOperateTalismanResult.UseOperateTalismanResultCode.USEOPERATETALISMAN_HAS_ITEM:
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "法宝装备栏已满");
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);

                case GCOperateTalismanResult.UseOperateTalismanResultCode.USEOPERATETALISMAN_CANNOT_EAT:
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "法宝不能吃");
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);

                case GCOperateTalismanResult.UseOperateTalismanResultCode.USEOPERATETALISMAN_MAX_LEVE:
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "法宝已经达到最大等级");
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }


                string operatorResult = "";
                switch ((CGOperateTalisman.EOPTMType)packet.Type)
                {
                case CGOperateTalisman.EOPTMType.EOP_TM_EAT:
                {
                    operatorResult = "吞噬";
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_COMPOUND_TALISMANITEM_RESULT, packet.Result);
                }
                break;

                case CGOperateTalisman.EOPTMType.EOP_TM_EQUIP:
                {
                    CTalisman_Item bagItem = CDataPool.Instance.TalismanInventory_GetItem(packet.BagIndex - GAMEDEFINE.MAX_BAG_SIZE);
                    CDataPool.Instance.TalismanEquip_SetItem(packet.EquiptIndex, bagItem as CObject_Item, true, true);
                    CDataPool.Instance.TalismanInventory_SetItem((short)(packet.BagIndex - GAMEDEFINE.MAX_BAG_SIZE), null, true, true);
                    CActionSystem.Instance.UserTalismanBag_Update();
                    CActionSystem.Instance.UserTalismanEquip_Update();
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_PACKAGE_TALISMANITEM_CHANGED, packet.BagIndex - GAMEDEFINE.MAX_BAG_SIZE);
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_PACKAGE_TALISMANEQUIPT_CHANGED, packet.EquiptIndex);
                    operatorResult = "法宝装备";
                }
                break;

                case CGOperateTalisman.EOPTMType.EOP_TM_UNEQUIP:
                {
                    operatorResult = "法宝卸下装备";
                    CTalisman_Item equiptItem = CDataPool.Instance.TalismanEquipment_GetItem(packet.EquiptIndex);
                    CDataPool.Instance.TalismanInventory_SetItem((short)(packet.BagIndex - GAMEDEFINE.MAX_BAG_SIZE), equiptItem as CObject_Item, true, true);
                    CDataPool.Instance.TalismanEquip_SetItem(packet.EquiptIndex, null, true, true);
                    CActionSystem.Instance.UserTalismanEquip_Update();
                    CActionSystem.Instance.UserTalismanBag_Update();

                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_PACKAGE_TALISMANITEM_CHANGED, packet.BagIndex - GAMEDEFINE.MAX_BAG_SIZE);
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_PACKAGE_TALISMANEQUIPT_CHANGED, packet.EquiptIndex);
                }
                break;
                }
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, operatorResult + resultInfo);
            }
            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
Exemple #16
0
 public void SetItem(int index, CTalisman_Item item)
 {
 }
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer)
        {
            GCPackage_SwapItem Packet = (GCPackage_SwapItem)pPacket;

            if (GameProcedure.GetActiveProcedure() == GameProcedure.s_ProcMain)
            {
                //-----------------------------------------------------
                //失败的操作
                if (Packet.Result == 0)
                {
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "包裹操作失败!");
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                //-----------------------------------------------------
                //UI数据池
                short nIndex1 = (short)Packet.PIndex1;
                short nIndex2 = (short)Packet.PIndex2;
                if (nIndex1 >= GAMEDEFINE.MAX_BAG_SIZE && nIndex2 >= GAMEDEFINE.MAX_BAG_SIZE)
                {
                    CTalisman_Item item1 = CDataPool.Instance.TalismanInventory_GetItem(nIndex1 - GAMEDEFINE.MAX_BAG_SIZE);
                    CTalisman_Item item2 = CDataPool.Instance.TalismanInventory_GetItem(nIndex2 - GAMEDEFINE.MAX_BAG_SIZE);
                    if (item1 != null && item2 == null)
                    {
                        CDataPool.Instance.TalismanInventory_SetItem((short)(nIndex2 - GAMEDEFINE.MAX_BAG_SIZE), item1 as CObject_Item, false, false);
                        CDataPool.Instance.TalismanInventory_SetItem((short)(nIndex1 - GAMEDEFINE.MAX_BAG_SIZE), null, false, false);
                    }
                    else if (item1 == null && item2 != null)
                    {
                        CDataPool.Instance.TalismanInventory_SetItem((short)(nIndex1 - GAMEDEFINE.MAX_BAG_SIZE), item2 as CObject_Item, false, false);
                        CDataPool.Instance.TalismanInventory_SetItem((short)(nIndex2 - GAMEDEFINE.MAX_BAG_SIZE), null, false, false);
                    }
                    CActionSystem.Instance.UserTalismanBag_Update();
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_PACKAGE_TALISMANITEM_CHANGED);
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                //背包里的装备
                CObject_Item pItem1 = CDataPool.Instance.UserBag_GetItemByIndex(nIndex1);
                CObject_Item pItem2 = CDataPool.Instance.UserBag_GetItemByIndex(nIndex2);

                //全空
                if (pItem1 == null && pItem2 == null)
                {
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }
                //Item1 -> Item2
                else if (pItem1 != null && pItem2 == null)
                {
                    CDataPool.Instance.UserBag_SetItem(nIndex2, pItem1, false, false);
                    CDataPool.Instance.UserBag_SetItem(nIndex1, null, false, false);
                }
                //Item1 <- Item2
                else if (pItem1 == null && pItem2 != null)
                {
                    CDataPool.Instance.UserBag_SetItem(nIndex1, pItem2, false, false);
                    CDataPool.Instance.UserBag_SetItem(nIndex2, null, false, false);
                }
                //Item1 <-> Item2
                else
                {
                    CDataPool.Instance.UserBag_SetItem(nIndex2, pItem1, false, false);
                    CDataPool.Instance.UserBag_SetItem(nIndex1, pItem2, false, false);
                }

                // 更新主角身上的背包到ActionSystem
                CActionSystem.Instance.UserBag_Update();

                // 通知界面事件
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_PACKAGE_ITEM_CHANGED);
            }
            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
    public CObject_Item NewItem(uint idTable)
    {
        CObject_Item newItem = null;

        if (IsWhiteEquip(idTable))
        {
            //搜索纪录
            _DBC_ITEM_EQUIP_BASE pEquip = EquipDBC.Search_Index_EQU((int)idTable);
            if (pEquip == null)
            {
                return(null);
            }

            newItem = new CObject_Item_Equip(CreateID());
            ((CObject_Item_Equip)newItem).AsWhiteEquip(ref pEquip);

            //物品规则
            itemRule(pEquip, newItem);
        }
        else if (IsGreenEquip(idTable))
        {
            //搜索纪录
            _DBC_ITEM_EQUIP_BASE pEquip = EquipDBC.Search_Index_EQU((int)idTable);
            if (pEquip == null)
            {
                return(null);
            }

            newItem = new CObject_Item_Equip(CreateID());
            ((CObject_Item_Equip)newItem).AsGreenEquip(ref pEquip);

            //物品规则
            itemRule(pEquip, newItem);
        }
        else if (IsBlueEquip(idTable))
        {
            //搜索纪录
            _DBC_ITEM_EQUIP_BASE pEquip = EquipDBC.Search_Index_EQU((int)idTable);
            if (pEquip == null)
            {
                return(null);
            }

            newItem = new CObject_Item_Equip(CreateID());
            ((CObject_Item_Equip)newItem).AsBlueEquip(ref pEquip);

            //物品规则
            itemRule(pEquip, newItem);
        }
        else if (IsPurpleEquip(idTable))
        {
            //搜索纪录
            _DBC_ITEM_EQUIP_BASE pEquip = EquipDBC.Search_Index_EQU((int)idTable);
            if (pEquip == null)
            {
                return(null);
            }

            newItem = new CObject_Item_Equip(CreateID());
            ((CObject_Item_Equip)newItem).AsPurpleEquip(ref pEquip);

            //物品规则
            itemRule(pEquip, newItem);
        }
        else if (IsMedicItem(idTable))
        {
            COMMON_DBC <_DBC_ITEM_MEDIC> allMedic = CDataBaseSystem.Instance.GetDataBase <_DBC_ITEM_MEDIC>((int)DataBaseStruct.DBC_ITEM_MEDIC);
            if (allMedic != null)
            {
                _DBC_ITEM_MEDIC pMedic = allMedic.Search_Index_EQU((int)idTable);

                newItem = new CObject_Item_Medicine(CreateID());
                ((CObject_Item_Medicine)newItem).AsMedicine(pMedic);

                itemRule(pMedic, newItem);
            }
            else
            {
                throw new Exception("_DBC_ITEM_MEDIC database not found");
            }
        }
        else if (IsGemItem((int)idTable))
        {
            //搜索纪录
            _DBC_ITEM_GEM pGem = GemDBC.Search_Index_EQU((int)idTable);
            if (pGem == null)
            {
                return(null);
            }

            newItem = new CObject_Item_Gem(CreateID());
            ((CObject_Item_Gem)newItem).AsGem(pGem);

            //物品规则
            itemRule(pGem, newItem);
        }
        else if (isSymbolItem(idTable))    //是符印
        {
            _DBC_ITEM_SYMBOL pSymbol = SymbolDBC.Search_Index_EQU((int)idTable);
            if (pSymbol == null)
            {
                return(null);
            }

            newItem = new CObject_Item_Symbol(CreateID());
            ((CObject_Item_Symbol)newItem).AsSymbol(pSymbol);
            //物品规则
            itemRule(pSymbol, newItem);
        }
        else if (isTalismanItem(idTable))    //是法宝
        {
            _DBC_ITEM_TALISMAN dbItem = CDataBaseSystem.Instance.GetDataBase <_DBC_ITEM_TALISMAN>((int)DataBaseStruct.DBC_ITEM_TALISMAN).Search_Index_EQU((int)idTable);
            if (dbItem == null)
            {
                return(null);
            }

            newItem = new CTalisman_Item(CreateID());
            CTalisman_Item curItem = newItem as CTalisman_Item;
            curItem.Define = dbItem;
            //物品规则
            itemRule(dbItem, newItem);
        }
        if (newItem == null)
        {
            LogManager.LogError("物品编号填写错误!,ID:" + idTable);
        }
        else
        {
            newItem.m_idTable         = (int)idTable;
            allItems[newItem.GetID()] = newItem;
        }

        return(newItem);
    }