Pedro Gomes dc033fa6bb Crafting System (WIP)
- crafting anvil interactable
- crafting UI and system (WIP)
2025-01-03 23:33:30 +00:00

74 lines
2.1 KiB
C#

using Kryz.CharacterStats.Examples;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CraftingUI : MonoBehaviour
{
public GameObject craftingUI;
public List<VendorSlotUI> slots = new List<VendorSlotUI>();
[SerializeField] private GameEvent onCraftingUIClosed;
[SerializeField] private GameEvent onVendorReleased;
[SerializeField] private GameEventListener onCraftingAnvilInteracted;
[SerializeField] private GameEventListener onCraftingAnvilReleased;
public EquippableItemInstance currentlySelectedCraftingItem;
private void Awake()
{
onCraftingAnvilInteracted.Response.AddListener(OpenCrafting);
onCraftingAnvilReleased.Response.AddListener(CloseCrafting);
Inventory.Instance.OnItemRightClickedEventWhileCrafting.AddListener(AddToCrafting);
craftingUI.SetActive(false);
}
private void InitializeCraftingUI()
{
for (int i = 0; i < slots.Count; i++) //TODO: Remove these extra slots or convert them into crafting stone slots (list of stones to apply)
{
slots[i].ClearSlot();
}
//TODO: Add currently selected crafting item to the crafting item slot if not already present
}
public void OpenCrafting()
{
InitializeCraftingUI();
craftingUI.SetActive(true);
Inventory.Instance.isVendoring = false;
Inventory.Instance.isCrafting = true;
Inventory.Instance.OpenInventory();
//Close remaining vendors in case there is one open to avoid conflicts
onVendorReleased.Raise();
}
public void CloseCrafting()
{
craftingUI.SetActive(false);
Inventory.Instance.isCrafting = false;
Inventory.Instance.CloseInventory();
onCraftingUIClosed.Raise();
}
private void AddToCrafting(ItemInstance item)
{
if (item is not EquippableItemInstance) return;
if (Inventory.Instance.RemoveItem(item))
{
CoinBag.Instance.ChangeAmount(item.sellPricePlayer);
ItemTooltip.Instance.HideTooltip();
EquippedItemTooltip.Instance.HideTooltip();
}
}
}