MarisaMagicalStudy/Assets/Scripts/Abilities/AbilityUIHandler.cs

73 lines
2.5 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()
{
uiObjects[0].onClick.AddListener(() => ShowAbilityUI(playerAbilityHandler.mainAttackInstance));
uiObjects[0].GetComponentInChildren<TextMeshProUGUI>().text = playerAbilityHandler.mainAttackInstance.abilityName;
uiObjects[1].onClick.AddListener(() => ShowAbilityUI(playerAbilityHandler.secondaryAttackInstance));
uiObjects[1].GetComponentInChildren<TextMeshProUGUI>().text = playerAbilityHandler.secondaryAttackInstance.abilityName;
uiObjects[2].onClick.AddListener(() => ShowAbilityUI(playerAbilityHandler.spellAInstance));
uiObjects[2].GetComponentInChildren<TextMeshProUGUI>().text = playerAbilityHandler.spellAInstance.abilityName;
uiObjects[3].onClick.AddListener(() => ShowAbilityUI(playerAbilityHandler.spellBInstance));
uiObjects[3].GetComponentInChildren<TextMeshProUGUI>().text = playerAbilityHandler.spellBInstance.abilityName;
}
public void ShowAbilityUI(PlayerAbility ability)
{
abilityUI.gameObject.SetActive(true);
abilityUI.thisAbility = ability;
abilityUI.UpdateUI();
}
}