Пример #1
0
        /// <summary>
        /// Equips the ItemIdentifier in the specified slot.
        /// </summary>
        /// <param name="itemIdentifier">The ItemIdentifier to equip.</param>
        /// <param name="slotID">The ID of the slot.</param>
        /// <param name="immediateEquip">Is the item being equipped immediately? Immediate equips will occur from the default loadout or quickly switching to the item.</param>
        public void EquipItem(IItemIdentifier itemIdentifier, int slotID, bool immediateEquip)
        {
            if (itemIdentifier == null)
            {
                return;
            }

            var currentItem = GetActiveItem(slotID);

            if (currentItem != null && currentItem.ItemIdentifier != itemIdentifier)
            {
                UnequipItem(slotID);
            }

            var item = EquipItemInternal(itemIdentifier, slotID);

            if (item != null)
            {
                item.Equip(immediateEquip);

                // Notify those interested that an item has been equipped.
                EventHandler.ExecuteEvent(m_GameObject, "OnInventoryEquipItem", item, slotID);
                if (m_OnEquipItemEvent != null)
                {
                    m_OnEquipItemEvent.Invoke(item, slotID);
                }

#if ULTIMATE_CHARACTER_CONTROLLER_MULTIPLAYER
                if (m_NetworkInfo != null && m_NetworkInfo.IsLocalPlayer())
                {
                    m_NetworkCharacter.EquipUnequipItem(itemIdentifier.ID, slotID, true);
                }
#endif

                if (!string.IsNullOrEmpty(m_UnequippedStateName))
                {
                    StateManager.SetState(m_GameObject, m_UnequippedStateName, false);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Equips the ItemIdentifier in the specified slot.
        /// </summary>
        /// <param name="itemIdentifier">The ItemIdentifier to equip.</param>
        /// <param name="slotID">The ID of the slot.</param>
        /// <param name="immediateEquip">Is the item being equipped immediately? Immediate equips will occur from the default loadout or quickly switching to the item.</param>
        public void EquipItem(IItemIdentifier itemIdentifier, int slotID, bool immediateEquip)
        {
            if (itemIdentifier == null)
            {
                return;
            }

            var currentItem = GetActiveItem(slotID);

            if (currentItem != null)
            {
                // Don't equip if the IItemIdentifier is already equipped.
                if (currentItem.ItemIdentifier == itemIdentifier)
                {
                    return;
                }
                UnequipItem(slotID);
            }

            var item = EquipItemInternal(itemIdentifier, slotID);

            if (item != null)
            {
                item.Equip(immediateEquip);

                // Notify those interested that an item has been equipped.
                EventHandler.ExecuteEvent(m_GameObject, "OnInventoryEquipItem", item, slotID);
                if (m_OnEquipItemEvent != null)
                {
                    m_OnEquipItemEvent.Invoke(item, slotID);
                }

#if ULTIMATE_CHARACTER_CONTROLLER_MULTIPLAYER
                if (m_NetworkInfo != null && m_NetworkInfo.IsLocalPlayer())
                {
                    m_NetworkCharacter.EquipUnequipItem(itemIdentifier.ID, slotID, true);
                }
#endif
            }
        }