SebastianLawe

Untitled

Jun 9th, 2015
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.03 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using Assets.Scripts;
  5. using UnityEngine.UI;
  6. using UnityEngine.Events;
  7.  
  8. public class InventoryHandler : MonoBehaviour {
  9.     public List<InventoryItem> _inventory = new List<InventoryItem>();
  10.     public ObjectInteractor interactor;
  11.     public Font font;
  12.     private List<GameObject> _items = new List<GameObject>();
  13.     private List<Text> _text = new List<Text>();
  14.     // Use this for initialization
  15.     void Start() {
  16.         interactor = FindObjectOfType<ObjectInteractor>();
  17.     }
  18.  
  19.     // Update is called once per frame
  20.     void FixedUpdate() {
  21.         if (_inventory.Count != _items.Count) {
  22.             Refresh();
  23.         }
  24.         for (int i = 0; i < _text.Count; i++) {
  25.             if (_text[i].text != _inventory[i].InventoryName) {
  26.                 Refresh();
  27.                 break;
  28.             }
  29.         }
  30.     }
  31.  
  32.     public void Refresh() {
  33.         for (int i = _items.Count - 1; i >= 0; i--) {
  34.             if (_items[i] != null) {
  35.                 Destroy(_items[i]);
  36.                 Destroy(_text[i]);
  37.             }
  38.         }
  39.         _items.Clear();
  40.         _text.Clear();
  41.         int count = 0;
  42.         for (int y = 0; y < Mathf.CeilToInt((float) _inventory.Count / 4f); y++) {
  43.             for (int x = 0; x < 4; x++) {
  44.                 if (count < _inventory.Count) {
  45.                     GameObject item = new GameObject("button", typeof(RectTransform));
  46.                     Button button = item.AddComponent<Button>();
  47.                     item.AddComponent<CanvasRenderer>();
  48.                     Image image = item.AddComponent<Image>();
  49.                     item.transform.SetParent(transform, false);
  50.                     image.sprite = Sprite.Create(_inventory[count].InventoryImage, new Rect(0, 0, 100, 100), new Vector2(0, 0));
  51.                     image.rectTransform.sizeDelta = new Vector2(50, 50);
  52.                     image.rectTransform.anchoredPosition = new Vector2(x * 50 - 75, -y * 50 + 150);
  53.                     InventoryItem currentInventoryItem = _inventory[count];
  54.                     UnityAction action = new UnityAction(delegate {
  55.                         if (_inventory.Count > 0) {
  56.                             InventoryItem inventoryItem = currentInventoryItem;
  57.                             switch (inventoryItem.Type) {
  58.                                 case InventoryItem.CategoryType.Equipment:
  59.                                     interactor.currentItem = inventoryItem;
  60.                                     interactor.lockInventory = false;
  61.                                     FindObjectOfType<Canvas>().enabled = false;
  62.                                     break;
  63.                                 case InventoryItem.CategoryType.Paper:
  64.                                     inventoryItem.Use();
  65.                                     break;
  66.                                 case InventoryItem.CategoryType.Item:
  67.                                     inventoryItem.Use();
  68.                                     break;
  69.                             }
  70.                         }
  71.                     });
  72.                     button.onClick.AddListener(action);
  73.                     GameObject textItem = new GameObject("text", typeof(RectTransform));
  74.                     Text text = textItem.AddComponent<Text>();
  75.                     textItem.transform.SetParent(button.transform, false);
  76.                     text.rectTransform.anchorMax = new Vector2(1, 1);
  77.                     text.rectTransform.anchorMin = new Vector2(0, 0);
  78.                     text.rectTransform.sizeDelta = new Vector2(5, 0);
  79.                     text.rectTransform.anchoredPosition = new Vector2(2f, 0);
  80.                     text.text = currentInventoryItem.InventoryName;
  81.                     text.font = font;
  82.                     text.color = Color.black;
  83.                     text.fontSize = 12;
  84.                     _text.Add(text);
  85.                     _items.Add(item);
  86.                     count++;
  87.                 } else {
  88.                     break;
  89.                 }
  90.             }
  91.         }
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment