using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace Assets.Scripts { public class Inventory : MonoBehaviour { public GameObject head; public GameObject chest; public GameObject shoulders; public GameObject feet; public GameObject ring; public GameObject amulet; public GameObject leftHand; public GameObject rightHand; public GameObject dragImage; public GameObject itemDisplay; public GameObject[] bags; public GameObject[] slots; Dictionary statBoost; public int currentBag = -1; GameObject startDrag; TooltipHandler tooltip; // Start is called before the first frame update void Start() { statBoost = new Dictionary(); statBoost.Add("HP", 0); statBoost.Add("MP", 0); statBoost.Add("HPR", 0); statBoost.Add("MPR", 0); statBoost.Add("STR", 0); statBoost.Add("DEX", 0); statBoost.Add("INT", 0); statBoost.Add("LCK", 0); tooltip = GameObject.Find("TooltipHandler").GetComponent(); itemDisplay.transform.localScale = new Vector3(0,0,0); changeCurrentBag(0); } // Update is called once per frame void Update() { checkInventoryColors(); checkEquipColors(); } public void addItem(Item item) { if (item != null) { bool itemAdded = false; for (int i = 0; i < bags.Length; i++) { for (int j = 0; j < slots.Length; j++) { if (slots[j].GetComponent().getItem(i) == null) { slots[j].GetComponent().setItem(item, i); itemAdded = true; slots[j].GetComponent().color = item.rarityColor; slots[j].GetComponent().texture = item.image; break; } } if (itemAdded) { GameObject.Find("UIHandler").GetComponent().showMessage("SUCCESS;You got an item!"); break; } } if (!itemAdded) { GameObject.Find("UIHandler").GetComponent().showMessage("ERROR;No inventory space left."); } } } public void changeCurrentBag(int index) { if (currentBag != -1) { bags[currentBag].transform.Find("Selected").GetComponent().color = Color.white; } currentBag = index; bags[currentBag].transform.Find("Selected").GetComponent().color = Color.cyan; checkInventoryColors(); foreach(GameObject slot in slots) { slot.GetComponent().updateCurrentBag(currentBag); } } private void checkInventoryColors() { Item item; for (int i = 0; i < slots.Length; i++) { item = slots[i].GetComponent().getItem(currentBag); if (item != null) { slots[i].GetComponent().color = item.rarityColor; slots[i].GetComponent().texture = item.image; } else { slots[i].GetComponent().color = Color.white; slots[i].GetComponent().texture = null; } } } private void checkEquipColors() { GameObject slot = head; Item item; for (int i = 0; i < 8; i++) { switch (i) { case 0: slot = head; break; case 1: slot = rightHand; break; case 2: slot = leftHand; break; case 3: slot = amulet; break; case 4: slot = feet; break; case 5: slot = shoulders; break; case 6: slot = chest; break; case 7: slot = ring; break; } item = slot.GetComponent().getEquip(); if (item != null) { slot.GetComponent().color = item.rarityColor; slot.GetComponent().texture = item.image; } else { slot.GetComponent().color = Color.white; } } } public void setDrag(GameObject slot) { startDrag = slot; } public GameObject getDrag() { return startDrag; } public Item getEquip(ItemPlace place) { switch (place) { case ItemPlace.LEFTHAND: return leftHand.GetComponent().getEquip(); case ItemPlace.RIGHTHAND: return rightHand.GetComponent().getEquip(); case ItemPlace.HELMET: return head.GetComponent().getEquip(); case ItemPlace.BOOTS: return feet.GetComponent().getEquip(); case ItemPlace.SHOULDER: return shoulders.GetComponent().getEquip(); case ItemPlace.AMULET: return amulet.GetComponent().getEquip(); case ItemPlace.RING: return ring.GetComponent().getEquip(); case ItemPlace.ARMOR: return chest.GetComponent().getEquip(); default: return null; } } public void calculateStatBoost(Dictionary attributes, bool isAddition) { foreach (string key in attributes.Keys) { if (isAddition) { statBoost[key] = statBoost[key] + attributes[key]; } else { statBoost[key] = statBoost[key] - attributes[key]; } } } public Dictionary getEquipmentBonus() { if (statBoost == null) { statBoost = new Dictionary(); statBoost.Add("HP", 0); statBoost.Add("MP", 0); statBoost.Add("HPR", 0); statBoost.Add("MPR", 0); statBoost.Add("STR", 0); statBoost.Add("DEX", 0); statBoost.Add("INT", 0); statBoost.Add("LCK", 0); } return statBoost; } } }