MarisaMagicalStudy/Assets/Scripts/Abilities/AbilityUIHandler.cs

73 lines
2 KiB
C#

using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class AbilityUIHandler : MonoBehaviour
{
#region Statication
public static AbilityUIHandler instance;
private void Awake()
{
if (instance != null && instance != this)
{
Destroy(gameObject);
return;
}
instance = this;
}
#endregion
[Header("Abilities")]
public List<Button> uiObjects = new();
[SerializeField] private MarisaAbilityHandler playerAbilityHandler;
[SerializeField] private AbilityUIObject abilityUI;
[Header("Upgrades")]
[SerializeField] private Transform upgradeGrid;
[SerializeField] private StoredAbilityUpgradeUI templateStoredUpgradeUI;
private void Start()
{
UpdateAbilitySelection();
}
public void UpdateInventory()
{
foreach (Transform child in upgradeGrid) //awful but we'll go with it for now
{
Destroy(child.gameObject);
}
foreach (AbilityUpgrade upgrade in AbilityManager.instance.allUpgrades)
{
int upgradeCount = AbilityManager.instance.GetUpgradeCount(upgrade);
if (upgradeCount > 0)
{
StoredAbilityUpgradeUI newUI = Instantiate(templateStoredUpgradeUI, upgradeGrid);
newUI.SetUpgrade(upgrade, upgradeCount);
}
}
}
public void UpdateAbilitySelection()
{
int currentUIObject = 0;
foreach (Button uiObject in uiObjects)
{
var o = currentUIObject;
uiObject.onClick.AddListener(() => ShowAbilityUI(playerAbilityHandler.abilityInstances[o]));
uiObject.GetComponentInChildren<TextMeshProUGUI>().text = playerAbilityHandler.abilityInstances[o].abilityName;
currentUIObject++;
}
}
public void ShowAbilityUI(PlayerAbility ability)
{
abilityUI.gameObject.SetActive(true);
abilityUI.thisAbility = ability;
abilityUI.UpdateUI();
}
}