73 lines
2.3 KiB
C#
73 lines
2.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class AbilityUIObject : MonoBehaviour
|
|
{
|
|
[Header("Ability Identification")]
|
|
[SerializeField] private Image abilityIcon;
|
|
[SerializeField] private TextMeshProUGUI abilityName;
|
|
|
|
[Header("Ability Stats")]
|
|
[SerializeField] private TextMeshProUGUI damage;
|
|
[SerializeField] private TextMeshProUGUI fireRate;
|
|
[SerializeField] private TextMeshProUGUI piercing;
|
|
[SerializeField] private TextMeshProUGUI projectileCount;
|
|
[Header("Upgrades")]
|
|
[SerializeField] private int upgradeSlotAmount;
|
|
[SerializeField] private UpgradeBoxUI templateUpgradeBox;
|
|
[SerializeField] private Transform upgradeGrid;
|
|
[SerializeField] private List<UpgradeBoxUI> upgradeBoxes = new();
|
|
|
|
public PlayerAbility thisAbility;
|
|
|
|
public void UpdateUI()
|
|
{
|
|
abilityIcon.sprite = thisAbility.abilityIcon;
|
|
abilityName.text = thisAbility.abilityName;
|
|
damage.text = $"Damage: {thisAbility.power}";
|
|
fireRate.text = $"Fire rate: {thisAbility.cooldown}s";
|
|
if (thisAbility.TryGetComponent(out FireBullet isBullet))
|
|
{
|
|
piercing.text = $"Piercing: {isBullet.pierceAmount}";
|
|
projectileCount.text = $"Projectiles: {isBullet.projectileCount}";
|
|
}
|
|
foreach (AbilityUpgrade upgrade in AbilityManager.instance.allUpgrades)
|
|
{
|
|
if (thisAbility.GetUpgradeCount(upgrade) > 0)
|
|
{
|
|
AddUpgradeBox(upgrade);
|
|
}
|
|
}
|
|
|
|
int upgradeBoxesToAdd = Math.Abs(upgradeSlotAmount - upgradeBoxes.Count);
|
|
for (int i = 0; i < upgradeBoxesToAdd; i++)
|
|
{
|
|
AddUpgradeBox(null);
|
|
}
|
|
}
|
|
|
|
public void AddUpgradeBox(AbilityUpgrade upgrade)
|
|
{
|
|
UpgradeBoxUI newBox = Instantiate(templateUpgradeBox, upgradeGrid);
|
|
newBox.gameObject.SetActive(true);
|
|
upgradeBoxes.Add(newBox);
|
|
newBox.UpdateCounter();
|
|
newBox.thisPlayerAbility = thisAbility;
|
|
if (upgrade)
|
|
{
|
|
newBox.upgradeImage.sprite = upgrade.upgradeIcon;
|
|
newBox.thisAbilityUpgrade = upgrade;
|
|
}
|
|
}
|
|
|
|
public void UpdateUpgradeBoxes()
|
|
{
|
|
foreach (UpgradeBoxUI box in upgradeBoxes)
|
|
{
|
|
box.UpdateCounter();
|
|
}
|
|
}
|
|
}
|