diff --git a/.idea/.idea.ReisenTasker/.idea/indexLayout.xml b/.idea/.idea.ReisenTasker/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/.idea/.idea.ReisenTasker/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Assets/Prefabs/CraftItemTest.asset b/Assets/Prefabs/CraftItemTest.asset new file mode 100644 index 0000000..c942df8 --- /dev/null +++ b/Assets/Prefabs/CraftItemTest.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a100b9e8279440fd88e58bae66ffb885, type: 3} + m_Name: CraftItemTest + m_EditorClassIdentifier: Assembly-CSharp::Item + itemName: Brick + description: + icon: {fileID: 0} + requiredMaterials: + - item: {fileID: 11400000, guid: eaef781da6195e1a491978951b17d3b8, type: 2} + amount: 1 + craftedAmount: 1 + value: 0 diff --git a/Assets/Prefabs/CraftItemTest.asset.meta b/Assets/Prefabs/CraftItemTest.asset.meta new file mode 100644 index 0000000..62727c1 --- /dev/null +++ b/Assets/Prefabs/CraftItemTest.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b5a9cd50157e32c4a92e98bd9a922076 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/TestItem.asset b/Assets/Prefabs/TestItem.asset index 809d4a6..22a71e6 100644 --- a/Assets/Prefabs/TestItem.asset +++ b/Assets/Prefabs/TestItem.asset @@ -15,3 +15,6 @@ MonoBehaviour: itemName: Water description: h2o icon: {fileID: 0} + requiredMaterials: [] + craftedAmount: 1 + value: 0 diff --git a/Assets/Scripts/Inventory/CraftableUIObject.cs b/Assets/Scripts/Inventory/CraftableUIObject.cs new file mode 100644 index 0000000..37aaec1 --- /dev/null +++ b/Assets/Scripts/Inventory/CraftableUIObject.cs @@ -0,0 +1,26 @@ +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +public class CraftableUIObject : MonoBehaviour +{ + public CraftingRequirementUIObject templateRequirementUI; + public Transform requirementGrid; + public TextMeshProUGUI itemNameText; + public TextMeshProUGUI amountText; + public Image itemIcon; + public Button thisButton; + + public void SetObject(Item itemToSet) + { + itemNameText.text = itemToSet.itemName; //it would be reset every time you open the inventory instead of updating only the amount but whatever it doesn't matter + amountText.text = $"x{itemToSet.craftedAmount}"; + itemIcon.sprite = itemToSet.icon; + thisButton.onClick.AddListener(() => CraftingSystem.instance.TryCraftingItem(itemToSet)); + foreach (InventoryManager.ItemAmount craftingRequirement in itemToSet.requiredMaterials) + { + CraftingRequirementUIObject newRequirementUI = Instantiate(templateRequirementUI, requirementGrid); + newRequirementUI.SetObject(craftingRequirement.item, craftingRequirement.amount); + } + } +} diff --git a/Assets/Scripts/Inventory/CraftableUIObject.cs.meta b/Assets/Scripts/Inventory/CraftableUIObject.cs.meta new file mode 100644 index 0000000..e768708 --- /dev/null +++ b/Assets/Scripts/Inventory/CraftableUIObject.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b47ad7db89fd76e5fadca9361869604b \ No newline at end of file diff --git a/Assets/Scripts/Inventory/CraftingRequirementUIObject.cs b/Assets/Scripts/Inventory/CraftingRequirementUIObject.cs new file mode 100644 index 0000000..d5c6a44 --- /dev/null +++ b/Assets/Scripts/Inventory/CraftingRequirementUIObject.cs @@ -0,0 +1,15 @@ +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +public class CraftingRequirementUIObject : MonoBehaviour +{ + public TextMeshProUGUI amountText; + public Image itemIcon; + + public void SetObject(Item itemToSet, int amount) + { + amountText.text = amount.ToString(); + itemIcon.sprite = itemToSet.icon; + } +} diff --git a/Assets/Scripts/Inventory/CraftingRequirementUIObject.cs.meta b/Assets/Scripts/Inventory/CraftingRequirementUIObject.cs.meta new file mode 100644 index 0000000..b6fe676 --- /dev/null +++ b/Assets/Scripts/Inventory/CraftingRequirementUIObject.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 09e8634b1083a0ce1a9877c5e26b29bf \ No newline at end of file diff --git a/Assets/Scripts/Inventory/CraftingSystem.cs b/Assets/Scripts/Inventory/CraftingSystem.cs index c1e1aa1..3064a4a 100644 --- a/Assets/Scripts/Inventory/CraftingSystem.cs +++ b/Assets/Scripts/Inventory/CraftingSystem.cs @@ -1,8 +1,35 @@ using System.Collections.Generic; using UnityEngine; +using UnityEngine.UI; public class CraftingSystem : MonoBehaviour { + #region Statication + + public static CraftingSystem instance; + + private void Awake() + { + if (instance != null && instance != this) + { + Destroy(gameObject); + return; + } + DontDestroyOnLoad(this); + instance = this; + } + + #endregion + public List knownCraftables = new(); + [Header("UI")] + public Transform craftableUIGrid; + public CraftableUIObject templateCraftButton; + public void UpdateKnownCraftables(Item newCraftable) + { + knownCraftables.Add(newCraftable); + CraftableUIObject newButton = Instantiate(templateCraftButton, craftableUIGrid); + newButton.SetObject(newCraftable); + } public bool TryCraftingItem(Item requestedItem) { List missingItems = new(); diff --git a/Assets/Scripts/Inventory/InventoryUIObject.cs b/Assets/Scripts/Inventory/InventoryUIObject.cs index 162f4dc..2f6db20 100644 --- a/Assets/Scripts/Inventory/InventoryUIObject.cs +++ b/Assets/Scripts/Inventory/InventoryUIObject.cs @@ -10,7 +10,6 @@ public class InventoryUIObject : MonoBehaviour public void SetObject(Item itemToSet) { - Debug.Log("here"); itemNameText.text = itemToSet.itemName; //it would be reset every time you open the inventory instead of updating only the amount but whatever it doesn't matter amountText.text = $"x{InventoryManager.instance.CheckItemAmount(itemToSet)}"; itemIcon.sprite = itemToSet.icon;