public void ToggleInspectEquipment(ItemIconScript itemIcon) { referenceToOriginalIcon = itemIcon; Item item = itemIcon.GetItem(); inspectionON = inspectionPoolManager.gameObject.activeInHierarchy ? false : true; if (item == null) { return; } Vector3 centerPosition = inspectionPoolManager.transform.position; itemBeingInspectedIcon = inspectionPoolManager.transform.GetChild(1).GetComponent <ItemIconScript>(); Item itemBeingInspected = itemBeingInspectedIcon.GetItem(); if (itemBeingInspected != null && inspectionPoolManager.gameObject.activeInHierarchy) { inspectionON = itemBeingInspected != item; } UpdateInspectionUI(); inspectionPoolManager.gameObject.SetActive(inspectionON); equipmentPoolManager.gameObject.SetActive(!inspectionON); }
void UpdatePlayerInventory() { for (int i = 0; i < 4; i++) { Item newItem = equipmentPoolManager.transform.GetChild(i).GetComponent <ItemIconScript>().GetItem(); _playerInventory.EquipWeapon((Gun)newItem, i); } if (inspectionON && referenceToOriginalIcon.GetItem() != null) { for (int i = 0; i < referenceToOriginalIcon.GetItem().numOfModSlots; i++) { Item mod = inspectionPoolManager.transform.GetChild(i + 2).GetComponent <ItemIconScript>().GetItem(); _playerInventory.EquipMod(referenceToOriginalIcon.GetItem(), (ModBase)mod, i); } } _playerInventory.EquipSheild((SheildBase)equipmentPoolManager.transform.GetChild(4).GetComponent <ItemIconScript>().GetItem()); }
// Update is called once per frame void Update() { if (initFinished) { if (ItemIconScript.dragEnded) { Item itemToDrop = ItemIconScript.swap1.GetItem(); if (dropItem && itemToDrop != null) { ItemIconScript itemIconToDrop = ItemIconScript.swap1; ItemIconScript modIcon = ItemIconScript.swap1; if (inspectionON) { itemIconToDrop = referenceToOriginalIcon; } bool isAMod = false; bool notUnderInventoryObj = itemIconToDrop.GetParent() != inventoryPoolManager.gameObject; if (!notUnderInventoryObj && inspectionON) { isAMod = ItemIconScript.swap1.GetItem().itemType == ItemType.Mod; } if (notUnderInventoryObj || isAMod) { switch (itemToDrop.itemType) { case ItemType.Weapon: { _playerInventory.DropEquippedWeapon(itemIconToDrop.transform.GetSiblingIndex()); TurnOffInspection(); break; } case ItemType.Sheild: { _playerInventory.DropCurrentlyEquippedSheild(); TurnOffInspection(); break; } case ItemType.Mod: { _playerInventory.DropSpecificModOnItem(itemIconToDrop.GetItem(), modIcon.transform.GetSiblingIndex() - 2); break; } } } else { if (inspectionON && (ItemIconScript.swap1 == referenceToOriginalIcon || ItemIconScript.swap1 == itemBeingInspectedIcon)) { TurnOffInspection(); } _playerInventory.DropItem(itemToDrop); } UpdateUI(); if (inspectionON) { UpdateInspectionUI(); } dropItem = false; } ItemIconScript.dragEnded = false; } if (ItemIconScript.inspect) { if (ItemIconScript.swap1.GetItem() != null && ItemIconScript.swap2.GetItem() != null) { if (inspectionON) { GameObject.FindGameObjectWithTag("UIEventSystem").GetComponent <EventSystem>().SetSelectedGameObject(referenceToOriginalIcon.gameObject); } ToggleInspectEquipment(ItemIconScript.swap1); if (inspectionON) { GameObject.FindGameObjectWithTag("UIEventSystem").GetComponent <EventSystem>().SetSelectedGameObject(itemBeingInspectedIcon.gameObject); } } ItemIconScript.swap1 = null; ItemIconScript.swap2 = null; ItemIconScript.rdyToSwap = false; ItemIconScript.inspect = false; } if (ItemIconScript.rdyToSwap) { Item item1 = ItemIconScript.swap1.GetItem(); Item item2 = ItemIconScript.swap2.GetItem(); bool slotCheckOk = true; if (ItemIconScript.swap1.GetParent() == inventoryPoolManager.gameObject && ItemIconScript.swap2.GetParent() == inventoryPoolManager.gameObject) { slotCheckOk = false; } bool isAnOpenSlot = item1 == null || item2 == null; bool isSameItemType = false; if (!isAnOpenSlot) { isSameItemType = item1.itemType == item2.itemType; if (inspectionON && (itemBeingInspectedIcon == ItemIconScript.swap2 || itemBeingInspectedIcon.GetItem() == ItemIconScript.swap2.GetItem())) { if (itemBeingInspectedIcon.GetItem() != item1) { ToggleInspectEquipment(ItemIconScript.swap1); } slotCheckOk = false; } if (isSameItemType) { if (item1.itemType == ItemType.Mod) { ModBase mod1 = item1.GetComponent <ModBase>(); ModBase mod2 = item2.GetComponent <ModBase>(); isSameItemType = mod1.modType == mod2.modType; } } else if (item1.itemType == ItemType.Mod || item2.itemType == ItemType.Mod) { Item isAMod = item1.itemType == ItemType.Mod ? item1 : item2; Item notAMod = item1.itemType == ItemType.Mod ? item2 : item1; int hasModIndex = notAMod.HasMod((ModBase)isAMod); if (hasModIndex == -1) { if ((int)notAMod.itemType == (int)isAMod.GetComponent <ModBase>().modType) { _playerInventory.QuickEquipSpecificMod(notAMod, (ModBase)isAMod); } } } } else if (item1 != null || item2 != null) { if (ItemIconScript.swap1.GetParent() == equipmentPoolManager.gameObject && ItemIconScript.swap2.GetParent() == equipmentPoolManager.gameObject) { if (ItemIconScript.swap1.transform.GetSiblingIndex() > 3 || ItemIconScript.swap2.transform.GetSiblingIndex() > 3) { slotCheckOk = false; } } else if (slotCheckOk) { if (inspectionON) { ItemIconScript onInspectionSideIcon = ItemIconScript.swap1.GetParent() == inspectionPoolManager.gameObject ? ItemIconScript.swap1 : ItemIconScript.swap2; ItemIconScript hasItemIcon1 = item1 == null ? ItemIconScript.swap2 : ItemIconScript.swap1; if (onInspectionSideIcon != hasItemIcon1) { if (hasItemIcon1.GetItem().itemType != ItemType.Mod) { slotCheckOk = false; } else if ((int)itemBeingInspectedIcon.GetItem().itemType != (int)hasItemIcon1.GetItem().GetComponent <ModBase>().modType) { slotCheckOk = false; } } } else { ItemIconScript onEquipmentSideIcon = ItemIconScript.swap1.GetParent() == equipmentPoolManager.gameObject ? ItemIconScript.swap1 : ItemIconScript.swap2; ItemIconScript hasItemIcon = item1 == null ? ItemIconScript.swap2 : ItemIconScript.swap1; //ItemIconScript doestHaveItemIcon = item1 == null ? ItemIconScript.swap1 : ItemIconScript.swap2; if (onEquipmentSideIcon != hasItemIcon) { switch (hasItemIcon.GetItem().itemType) { case ItemType.Weapon: { if (onEquipmentSideIcon.transform.GetSiblingIndex() > 3) { slotCheckOk = false; } break; } case ItemType.Sheild: { if (onEquipmentSideIcon.transform.GetSiblingIndex() < 4) { slotCheckOk = false; } break; } default: { slotCheckOk = false; break; } } } } } } if (slotCheckOk && (isSameItemType || isAnOpenSlot)) { int icon1Index = ItemIconScript.swap1.transform.GetSiblingIndex(); int icon2Index = ItemIconScript.swap2.transform.GetSiblingIndex(); Transform parent = ItemIconScript.swap1.transform.parent; ItemIconScript.swap1.transform.SetParent(ItemIconScript.swap2.transform.parent); ItemIconScript.swap2.transform.SetParent(parent); ItemIconScript.swap1.transform.SetSiblingIndex(icon2Index); ItemIconScript.swap2.transform.SetSiblingIndex(icon1Index); UpdatePlayerInventory(); ItemIconScript.SwapItemIcons(); } else { ItemIconScript.WipeSwap(); } UpdateUI(); if (inspectionON) { UpdateInspectionUI(); } } } }