Advertisement
evelynshilosky

CraftingSystem - Part 12

Jun 4th, 2024
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.50 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5.  
  6. public class CraftingSystem : MonoBehaviour
  7. {
  8.  
  9.     public GameObject craftingScreenUI;
  10.     public GameObject toolsScreenUI;
  11.  
  12.     public List<string> inventoryItemList = new List<string> ();
  13.  
  14.     //Category Buttons
  15.     Button toolsBTN;
  16.  
  17.     //Craft Buttons
  18.     Button craftAxeBTN;
  19.  
  20.     //Requirement Text
  21.     Text AxeReq1, AxeReq2;
  22.  
  23.     public bool isOpen;
  24.  
  25.     //All Blueprints
  26.     public Blueprint AxeBLP = new Blueprint ("Axe", 2, "Stone", 2, "Stick", 1);
  27.  
  28.  
  29.     public static CraftingSystem Instance { get; set; }
  30.  
  31.  
  32.     private void Awake()
  33.     {
  34.         if (Instance !=null && Instance !=this)
  35.         {
  36.             Destroy(gameObject);
  37.         }
  38.         else
  39.         {
  40.             Instance = this;
  41.         }
  42.     }
  43.  
  44.  
  45.     // Start is called before the first frame update
  46.     void Start()
  47.     {
  48.  
  49.         isOpen = false;
  50.  
  51.         toolsBTN = craftingScreenUI.transform.Find("ToolsButton").GetComponent<Button> ();
  52.         toolsBTN.onClick.AddListener(delegate { OpenToolsCategory(); });
  53.  
  54.         // AXE
  55.         AxeReq1 = toolsScreenUI.transform.Find("Axe").transform.Find("req1").GetComponent<Text>();
  56.         AxeReq2 = toolsScreenUI.transform.Find("Axe").transform.Find("req2").GetComponent<Text>();
  57.  
  58.         craftAxeBTN = toolsScreenUI.transform.Find("Axe").transform.Find("Button").GetComponent<Button>();
  59.         craftAxeBTN.onClick.AddListener(delegate { CraftAnyItem(AxeBLP); });
  60.  
  61.     }
  62.  
  63.    
  64.     void OpenToolsCategory()
  65.     {
  66.         craftingScreenUI.SetActive (false);
  67.         toolsScreenUI.SetActive (true);
  68.     }
  69.  
  70.  
  71.     void CraftAnyItem(Blueprint blueprintToCraft)
  72.     {
  73.  
  74.         //add item into inventory
  75.         InventorySystem.Instance.AddToInventory(blueprintToCraft.itemName);
  76.  
  77.         //remove resources from inventory
  78.         if (blueprintToCraft.numOfRequirements == 1)
  79.         {
  80.             InventorySystem.Instance.RemoveItem(blueprintToCraft.Req1, blueprintToCraft.Req1amount);
  81.         }
  82.         else if (blueprintToCraft.numOfRequirements == 2)
  83.         {
  84.             InventorySystem.Instance.RemoveItem(blueprintToCraft.Req1, blueprintToCraft.Req1amount);
  85.             InventorySystem.Instance.RemoveItem(blueprintToCraft.Req2, blueprintToCraft.Req2amount);
  86.         }
  87.  
  88.  
  89.         // refresh list
  90.         StartCoroutine(calculate());
  91.     }
  92.  
  93.  
  94.  
  95.     public IEnumerator calculate()
  96.     {
  97.         yield return 0;        // yield return new WaitForSeconds(1f); //To wait to do something
  98.         InventorySystem.Instance.ReCalculateList();
  99.         RefreshNeededItems();
  100.     }
  101.  
  102.  
  103.  
  104.     // Update is called once per frame
  105.     void Update()
  106.     {
  107.  
  108.  
  109.  
  110.         if (Input.GetKeyDown(KeyCode.C) && !isOpen)
  111.         {
  112.  
  113.             craftingScreenUI.SetActive(true);
  114.             Cursor.lockState = CursorLockMode.None;
  115.             Cursor.visible = true;
  116.             SelectionManager.Instance.DisableSelection();
  117.             SelectionManager.Instance.GetComponent<SelectionManager>().enabled = false;
  118.  
  119.             isOpen = true;
  120.         }
  121.         else if (Input.GetKeyDown(KeyCode.C) && isOpen)
  122.         {
  123.             craftingScreenUI.SetActive(false);
  124.             toolsScreenUI.SetActive(false);
  125.  
  126.  
  127.             if (!InventorySystem.Instance.isOpen) {
  128.                 Cursor.lockState = CursorLockMode.Locked;
  129.                 Cursor.visible = false;
  130.  
  131.                 SelectionManager.Instance.EnableSelection();
  132.                 SelectionManager.Instance.GetComponent<SelectionManager>().enabled = true;
  133.             }
  134.  
  135.  
  136.  
  137.             isOpen = false;
  138.         }
  139.        
  140.     }
  141.  
  142.  
  143.  
  144.     public void RefreshNeededItems()
  145.     {
  146.  
  147.         int stone_count = 0;
  148.         int stick_count = 0;
  149.  
  150.         inventoryItemList = InventorySystem.Instance.itemList;
  151.  
  152.         foreach (string itemName in inventoryItemList)
  153.         {
  154.  
  155.             switch (itemName)
  156.             {
  157.                 case "Stone":
  158.                     stone_count++;
  159.                     break;
  160.                 case "Stick":
  161.                     stick_count++;
  162.                     break;
  163.             }
  164.         }
  165.  
  166.  
  167.  
  168.         // Axe
  169.  
  170.         AxeReq1.text = "2 Stone [" + stone_count + "/2]";
  171.         AxeReq2.text = "1 Stick [" + stick_count + "/1]";
  172.  
  173.         if (stone_count >= 2 && stick_count >=1)
  174.         {
  175.  
  176.             craftAxeBTN.gameObject.SetActive(true);
  177.         }
  178.         else
  179.         {
  180.             craftAxeBTN.gameObject.SetActive(false);
  181.         }
  182.  
  183.  
  184.     }
  185.  
  186.  
  187.  
  188.  
  189. }
  190.  
  191.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement