Files
pgs/Assets/Scripts/UI/ShopMenuItemController.cs

81 lines
2.6 KiB
C#
Raw Permalink Normal View History

2026-02-21 16:58:22 -08:00
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
public class ShopMenuItemController : MonoBehaviour, IPointerClickHandler {
[SerializeField] public TextMeshProUGUI itemNameText;
[SerializeField] public TextMeshProUGUI itemDescriptionText;
[SerializeField] public TextMeshProUGUI priceText;
[SerializeField] public InventorySlotController shopItemSlot;
private PlayerMovement playerMovement;
private GameAudioController gameAudioController;
Item item;
int price;
public bool Purchase() {
Item tempItem = item;
if (State.state.inventory.money >= price) {
if (State.state.inventory.GainItem(tempItem) == 0) {
Debug.Log("Successfully purchased " + item.data.name);
State.state.inventory.money -= price;
// TODO: Update inventory UI if present in shop
return true;
} else {
Debug.Log("Failed purchase, no inventory space!");
}
} else {
Debug.Log("Failed purchase, not enough money!");
}
return false;
}
public void OnPointerClick(PointerEventData eventData) {
if (eventData.button.Equals(PointerEventData.InputButton.Left)) {
if (Purchase()) {
gameAudioController.audioSource.PlayOneShot(
gameAudioController.UI_Shop_Purchase);
playerMovement.cutscene = false;
Destroy(GameObject.FindGameObjectWithTag("ShopPanel"));
} else {
gameAudioController.audioSource.PlayOneShot(
gameAudioController.UI_Shop_PurchaseFail);
// TODO: Add Close button and remove this crap.
playerMovement.cutscene = false;
Destroy(GameObject.FindGameObjectWithTag("ShopPanel"));
}
}
}
public void Setup(Item item, int price) {
this.item = item;
this.price = price;
itemNameText.text = item.data.name;
itemDescriptionText.text = item.data.description;
shopItemSlot.Refresh(item);
priceText.text = price.ToString() + "G";
}
void Awake() {
playerMovement = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerMovement>();
gameAudioController = GameObject.FindGameObjectWithTag("GameAudio")
.GetComponent<GameAudioController>();
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}