Advertisement
celinedrules

InventoryManager

Apr 17th, 2020
362
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.68 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using TMPro;
  5.  
  6. public class InventoryManager : MonoBehaviour
  7. {
  8.     [SerializeField] private PlayerInventory playerInventory;
  9.     [SerializeField] private GameObject inventorySlotPrefab;
  10.     [SerializeField] private GameObject scrollViewContent;
  11.     [SerializeField] private TextMeshProUGUI description;
  12.     [SerializeField] private GameObject useButton;
  13.  
  14.     private InventoryItem selectedItem;
  15.     private List<InventorySlot> slots = new List<InventorySlot>();
  16.     private int selectedIndex = 0;
  17.  
  18.     public void SetTextAndButton(string description, bool buttonActive)
  19.     {
  20.         this.description.text = description;
  21.         useButton.SetActive(buttonActive);
  22.     }
  23.  
  24.     private void MakeInventorySlots()
  25.     {
  26.         if(playerInventory != null)
  27.         {
  28.             foreach(InventoryItem item in playerInventory.Inventory)
  29.             {
  30.                 InventorySlot slot = Instantiate(inventorySlotPrefab).GetComponent<InventorySlot>();
  31.                 slot.transform.SetParent(scrollViewContent.transform);
  32.                 slot.Setup(item, this);
  33.  
  34.                 slots.Add(slot);
  35.             }
  36.         }
  37.     }
  38.  
  39.     void Start()
  40.     {
  41.         MakeInventorySlots();
  42.         SetTextAndButton("", false);
  43.     }
  44.    
  45.     void Update()
  46.     {
  47.         if (Input.GetKeyDown(KeyCode.RightArrow))
  48.         {
  49.             if (selectedIndex < slots.Count - 1)
  50.             {
  51.                 selectedIndex++;
  52.                 ChangeSelectedItem(slots[selectedIndex]);
  53.             }
  54.         }
  55.         else if (Input.GetKeyDown(KeyCode.LeftArrow))
  56.         {
  57.             if (selectedIndex > 0)
  58.             {
  59.                 selectedIndex--;
  60.                 ChangeSelectedItem(slots[selectedIndex]);
  61.             }
  62.         }                
  63.     }
  64.  
  65.     public void ChangeSelectedItem(InventorySlot slot)
  66.     {
  67.         for (int i = 0; i < slots.Count; i++)
  68.         {
  69.             if (slots[i] != slot)
  70.             {
  71.                 slots[i].IsSelected = false;
  72.                 slots[i].SelectedSprite.enabled = false;
  73.             }
  74.             else
  75.             {
  76.                 selectedIndex = i;
  77.                 slots[i].IsSelected = true;
  78.                 slots[i].SelectedSprite.enabled = true;
  79.             }
  80.         }
  81.  
  82.         SetupDescription(slot.Item);
  83.     }
  84.  
  85.     private void SetupDescription(InventoryItem item)
  86.     {
  87.         selectedItem = item;
  88.         this.description.text = item.ItemDescription;
  89.         useButton.SetActive(item.Usable);
  90.     }
  91.  
  92.     public void Use()
  93.     {
  94.         if(selectedItem != null)
  95.         {
  96.             selectedItem.Use();
  97.         }
  98.     }
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement