/// <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); } } }
/// <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 } }