using Assets.Scripts.Player; using Newtonsoft.Json.Linq; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace Assets.Scripts { public class InventorySlot : MonoBehaviour { TooltipHandler tooltip; Item[] items = new Item[3]; int currentBag = 0; public ItemPlace place; Equipment equip; Inventory inventory; private void Start() { tooltip = GameObject.Find("TooltipHandler").GetComponent(); inventory = GameObject.Find("Inventory").GetComponent(); loadImages(); } public void updateCurrentBag(int currentBag) { this.currentBag = currentBag; } public int getCurrentBag() { return currentBag; } public void setItem(Item item, int bag) { items[bag] = item; } public Item getItem(int bag) { return items[bag]; } public void removeItem() { items[currentBag] = null; } public void removeItem(int bag) { items[bag] = null; } public void showTooltip() { Item item = getItemForTooltip(); if (item != null) { inventory.itemDisplay.transform.Find("itemImage").GetComponent().texture = item.image; inventory.itemDisplay.transform.Find("itemImage").GetComponent().color = item.rarityColor; inventory.itemDisplay.transform.Find("itemName").GetComponent().text = TextHandler.translate(item.getName()); inventory.itemDisplay.transform.Find("itemStats").GetComponent().text = item.getInformation(); inventory.itemDisplay.transform.localScale = new Vector3(1, 1, 1); } } public void showTooltipSelect(){ GameObject current = EventSystem.current.currentSelectedGameObject; Item item = current.GetComponent().getItemForTooltip(); if (item != null) { inventory.itemDisplay.transform.Find("itemImage").GetComponent().texture = item.image; inventory.itemDisplay.transform.Find("itemImage").GetComponent().color = item.rarityColor; inventory.itemDisplay.transform.Find("itemName").GetComponent().text = TextHandler.translate(item.getName()); inventory.itemDisplay.transform.Find("itemStats").GetComponent().text = item.getInformation(); inventory.itemDisplay.transform.localScale = new Vector3(1, 1, 1); } } public Item getItemForTooltip() { Item item = null; if (place == ItemPlace.BAG) { item = items[currentBag]; } else { item = equip; } return item; } public void hideTooltip() { inventory.itemDisplay.transform.localScale = new Vector3(0,0,0); } public Equipment getEquip() { return equip; } public void setEquip(Equipment item) { equip = item; } public void removeEquip() { equip = null; } private void loadImages() { Texture image = null; switch (place) { case ItemPlace.LEFTHAND: image = Resources.Load("Equipment/" + GameObject.Find("Player").GetComponent().getClass().classname + "/Inv_LeftHand"); break; case ItemPlace.RIGHTHAND: image = Resources.Load("Equipment/" + GameObject.Find("Player").GetComponent().getClass().classname + "/Inv_RightHand"); break; case ItemPlace.HELMET: image = Resources.Load("Equipment/Inv_Helmet"); break; case ItemPlace.BOOTS: image = Resources.Load("Equipment/Inv_Boots"); break; case ItemPlace.AMULET: image = Resources.Load("Equipment/Inv_Amulet"); break; case ItemPlace.RING: image = Resources.Load("Equipment/Inv_Ring"); break; case ItemPlace.ARMOR: image = Resources.Load("Equipment/Inv_Chest"); break; } if (image != null) { gameObject.transform.Find("slotItem").GetComponent().texture = image; } } public string saveGame() { string result = ""; if (place == ItemPlace.BAG) { for (int i = 1; i <= items.Length;i++) { if (items[i-1] == null) { result = result + "\"bag" + i + "\": \"empty\""; } else { result = result + "\"bag" + i + "\": {\r\n"; result = result + items[i-1].saveGame(); result = result + "\r\n}"; } if (i != 3) { result = result + ",\r\n"; } } } else { if(equip == null){ return result; } result = result + equip.saveGame(); } return result; } public void loadSlot(JToken json, int bag) { if (bag == -1) { equip = new Equipment(json); } else { if(json["place"] != null){ items[bag] = new Equipment(json); } else{ items[bag] = new Item(json); } } } public void showSlotOptions(){ GameObject current = EventSystem.current.currentSelectedGameObject; GameObject.Find("Inventory").GetComponent().currentSlot = current; GameObject.Find("btnEquip").transform.Find("Text").GetComponent().text = TextHandler.getText("equip"); GameObject.Find("btnEquip").GetComponent