Пример #1
0
    public bool Equip_InsertEquipItem(EAObjID _id, uint slot, EA_CItemUnit pitem)
    {
        EA_CCharBPlayer pActor = EACObjManager.instance.GetActor(_id);

        if (pActor == null)
        {
            return(false);
        }

        if (pActor.GetObjInfo().m_eObjType == eObjectType.CT_MYPLAYER)
        {
            EA_Equipment pEquipment = m_myPlItemManager.GetEquip();

            if (pEquipment != null)
            {
                pEquipment.InsertEquipItem(slot, pitem);
            }
        }
        else
        {
            EA_Equipment pEquipment = m_PCItemManager.Get_PCEquipItem(_id);

            if (pEquipment == null)
            {
                pEquipment = new EA_Equipment();
                m_PCItemManager.InsertPCEquip(_id, pEquipment);
            }

            //  [4/10/2014 puos] Equipped with items
            pEquipment.InsertEquipItem(slot, pitem);
        }

        return(true);
    }
Пример #2
0
    public EA_CItemUnit FindItemUnit(ITEM_UNIT_INDEX _id)
    {
        EA_CItemUnit pItemUnit = null;

        m_mapItemUnitList.TryGetValue(_id, out pItemUnit);

        return(pItemUnit);
    }
Пример #3
0
    //  [4/7/2014 puos] Create defensive weapons
    EA_CItemUnit CreateDefenseItem(EA_ItemBaseInfo info, EA_ItemDefenseInfo defenseInfo)
    {
        info.m_eItemType = eItemType.eIT_Defense;
        EA_CItemUnit pItemUnit = CreateItemUnit(info);

        if (pItemUnit != null)
        {
            pItemUnit.SetDefenseInfo(defenseInfo);
        }

        return(pItemUnit);
    }
Пример #4
0
    //  [4/7/2014 puos] Attack weapon generation
    public EA_CItemUnit CreateWeaponItem(EA_ItemBaseInfo info, EA_ItemAttackWeaponInfo weaponinfo)
    {
        info.m_eItemType = eItemType.eIT_Weapon;
        EA_CItemUnit pItemUnit = CreateItemUnit(info);

        if (pItemUnit != null)
        {
            pItemUnit.SetAttackWeaponInfo(weaponinfo);
        }

        return(pItemUnit);
    }
Пример #5
0
    /*! 장비 저장하기*/
    public bool     EquipItem(EAObjID _id, uint slot, EA_CItemUnit pItem)
    {
        if (m_PCEquipMap.ContainsKey(_id) == true)
        {
            return(false);
        }

        EA_Equipment pEquipment = m_PCEquipMap[_id];

        pEquipment.InsertEquipItem(slot, pItem);

        return(true);
    }
Пример #6
0
    bool IsEquipItem(uint equip_slot)
    {
        if (m_EquipmentList.ContainsKey(equip_slot) == false)
        {
            return(false);
        }

        EA_CItemUnit pItem = m_EquipmentList[equip_slot];

        if (pItem == null)
        {
            return(false);
        }

        return(true);
    }
Пример #7
0
    EA_CItemUnit CreateItemUnit(EA_ItemBaseInfo info)
    {
        EA_CItemUnit pItemUnit = null;

        if (CObjGlobal.InvalidItemID == info.m_GDItemId)
        {
            info.m_GDItemId = (EAObjID)m_pIDGenerator.GenerateID();

            pItemUnit = new EA_CItemUnit();
            pItemUnit.SetItemInfo(info);

            m_mapItemUnitList.Add(info.m_GDItemId, pItemUnit);
        }

        return(pItemUnit);
    }
Пример #8
0
    // 슬롯에 설치된 아이템 제거
    public bool RemoveEquipItembySlot(uint equip_slot)
    {
        if (IsEquipItem(equip_slot) == false)
        {
            return(false);
        }

        EA_CItemUnit pPrevItemUnit = m_EquipmentList[equip_slot];

        if (pPrevItemUnit != null)
        {
            pPrevItemUnit.RequestDelete();
            m_EquipmentList[equip_slot] = null;
        }


        return(true);
    }
Пример #9
0
    // Carry a weapon
    public void RaiseWeapon()
    {
        EA_CItem pItemBase = GetItemBase();

        if (pItemBase != null)
        {
            if (pItemBase.GetItemInfo().m_iItemIndex != CObjGlobal.InvalidItemID)
            {
                EA_CItemUnit pItemUnit = EA_ItemManager.instance.FindItemUnit(pItemBase.GetItemInfo().m_iItemIndex);

                if (pItemUnit != null)
                {
                    WeaponInfo.Copy(pItemUnit.GetAttackWeaponInfo());
                }
            }
        }

        StopFire();
    }
Пример #10
0
    /*! 아이템 유닛을  장비 슬롯 위치에 저장 */
    public bool InsertEquipItem(uint equip_slot, EA_CItemUnit pitem)
    {
        if ((m_EquipmentList.ContainsKey(equip_slot) == false) ||
            (equip_slot >= (uint)eEquipSlotSpot.eESS_Max))
        {
            return(false);
        }

        EA_CItemUnit pPrevItemUnit = m_EquipmentList[equip_slot];

        if (pPrevItemUnit != null)
        {
            pPrevItemUnit.RequestDelete();
        }

        m_EquipmentList[equip_slot] = pitem;

        return(true);
    }
Пример #11
0
    EAObjID SetActorItem(EA_CCharBPlayer pUser, EA_CItemUnit pItemUnit)
    {
        if (pUser == null || pItemUnit == null)
        {
            return(CObjGlobal.InvalidObjID);
        }

        EAObjID objID = CObjGlobal.InvalidObjID;

        ObjectInfo ObjInfo = new ObjectInfo();

        ObjInfo.m_ModelTypeIndex = pItemUnit.GetItemBaseInfo().m_ModelTypeIndex;
        ObjInfo.m_objClassType   = pItemUnit.GetItemBaseInfo().m_objClassType;

        ItemObjInfo itemInfo = new ItemObjInfo();

        itemInfo.m_HavenUser  = pUser.GetObjID();
        itemInfo.m_iItemIndex = pItemUnit.GetItemId(); //  [4/7/2014 puos] The item ID of the item object

        if (pItemUnit.GetItemBaseInfo().m_eItemType == eItemType.eIT_Weapon)
        {
            itemInfo.m_eItemType = eItemObjType.IK_WEAPON;

            //  [3/21/2018 puos] If there is an item object created in the current slot, it is not created.
            //  Fixed bug that was created even with created item object

            EA_CItem pItem = EACObjManager.instance.GetItemObject(pItemUnit.GetItemBaseInfo().m_GDObjId);

            if (pItem == null)
            {
                pItem = EACObjManager.instance.CreateItem(ObjInfo, itemInfo);
            }

            if (pItem != null)
            {
                pUser.SetWeaponAttachment(pItemUnit.GetAttackWeaponInfo().weaponType, pItem.GetLinkEntity());
                return(pItem.GetObjID());
            }
        }


        return(objID);
    }
Пример #12
0
    public bool DeleteItemUnit(ITEM_UNIT_INDEX _id)
    {
        EA_CItemUnit pItemUnit = FindItemUnit(_id);

        if (pItemUnit != null)
        {
            //GDDebug.Log("EA_ItemManager - DeleteItemUnit - ITEM_UNIT_INDEX :" + _id);

            //  [4/10/2014 puos] Delete when an item object is created in an item unit
            if (pItemUnit.GetItemBaseInfo().m_GDObjId != CObjGlobal.InvalidObjID)
            {
                EACObjManager.instance.RemoveItem(pItemUnit.GetItemBaseInfo().m_GDObjId);
            }

            m_mapItemUnitList.Remove((uint)_id);
            m_pIDGenerator.FreeID(_id);
        }

        return(true);
    }
Пример #13
0
    public void EquipItem(EA_CCharBPlayer pUser, uint equip_slot)
    {
        EA_CItemUnit pItemUnit = FindEquipItembySlot(equip_slot);

        if (pItemUnit != null)
        {
            if (pItemUnit.GetItemBaseInfo().m_eItemType == eItemType.eIT_Weapon)
            {
                EAObjID objId = SetActorItem(pUser, pItemUnit);

                pItemUnit.GetItemBaseInfo().m_GDObjId = objId;
                m_nCurrEquipSlot = equip_slot;
                pUser.DoSwitchWeapons((uint)pItemUnit.GetAttackWeaponInfo().weaponType);
            }
        }
        else // 무기가 없을시에도 장착을 시도해야함
        {
            m_nCurrEquipSlot = equip_slot;
            pUser.DoSwitchWeapons(0);
        }
    }
Пример #14
0
    public bool RemoveAllItem()
    {
        try
        {
            for (uint slot = 0; slot < (uint)eEquipSlotSpot.eESS_Max; ++slot)
            {
                EA_CItemUnit pPrevItemUnit = m_EquipmentList[slot];

                if (pPrevItemUnit != null)
                {
                    pPrevItemUnit.RequestDelete();
                    m_EquipmentList[slot] = null;
                }
            }
        }
        catch (System.Exception ex)
        {
            Debug.LogWarning(ex.Message);
        }

        return(true);
    }
Пример #15
0
    /// <summary>
    ///
    /// </summary>
    protected void FindWeapon()
    {
        EA_CCharBPlayer pActor = GetCharBase();

        EA_Equipment pEquipment = null;

        //2017 1126 Consider even without weapons
        m_pCurWeapon = null;

        if (pActor != null)
        {
            pEquipment = EA_ItemManager.instance.Equip_FindEqipment(pActor.GetObjID());
        }

        if (pEquipment != null)
        {
            EA_CItemUnit pItemUnit = pEquipment.GetCurrentItem();

            if (pItemUnit != null)
            {
                EA_CItem pItem = EACObjManager.instance.GetItemObject(pItemUnit.GetObjId());

                if (pItem != null)
                {
                    Debug.Assert(pItem.GetLinkItem() != null, "EAActor FindWeapon pItem.GetLinkItem() is null");

                    if (pItem.GetLinkItem() != null)
                    {
                        m_pCurWeapon = (EAWeapon)pItem.GetLinkItem() as EAWeapon;
                    }
                }
            }
        }

        //  [5/28/2018 puos] bug fixed
        if (m_pCurWeapon == null)
        {
            if (pActor != null)
            {
                pEquipment = EA_ItemManager.instance.Equip_FindEqipment(pActor.GetObjID());
            }

            if (pEquipment != null)
            {
                EA_CItemUnit pItemUnit = pEquipment.GetCurrentItem();

                if (pItemUnit != null)
                {
                    EA_CItem pItem = EACObjManager.instance.GetItemObject(pItemUnit.GetObjId());

                    if (pItem != null)
                    {
                        Debug.Assert(pItem.GetLinkItem() != null, "EAActor FindWeapon2 pItem.GetLinkItem() is null");

                        if (pItem.GetLinkItem() != null)
                        {
                            m_pCurWeapon = (EAWeapon)pItem.GetLinkItem() as EAWeapon;
                        }
                    }
                }
            }
        }
    }