using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem; public class MarisaAbilityHandler : MonoBehaviour { [SerializeField] private PlayerInput inputHandler; [SerializeField] private Marisa thisPlayer; [Header("Abilities")] //maybe have to make them public for when you're changing out abilities public List abilities = new(); [Header("Ability Instances")] public List abilityInstances = new(); [Header("UI")] public AbilityHotbarIcon[] hotbarIcons; //this is getting ridiculous private void Awake() { SetupAbilities(); } public void SetupAbilities() { foreach (PlayerAbility oldAbility in abilityInstances) { Destroy(oldAbility.gameObject); } abilityInstances.Clear(); int currentAbilityCount = 0; foreach (PlayerAbility ability in abilities) { PlayerAbility newAbility = Instantiate(ability, transform); abilityInstances.Add(newAbility); newAbility.thisPlayer = thisPlayer; hotbarIcons[currentAbilityCount].UpdateAbility(newAbility); currentAbilityCount++; Debug.Log(ability.abilityName); } } private void Update() { if (inputHandler.actions["MainAttack"].inProgress) { abilityInstances[0].TryAbility(); hotbarIcons[0].UpdateCooldown(); } else if (inputHandler.actions["SecondaryAttack"].inProgress) { abilityInstances[1].TryAbility(); hotbarIcons[1].UpdateCooldown(); } else if (inputHandler.actions["SpellA"].inProgress) { abilityInstances[2].TryAbility(); hotbarIcons[2].UpdateCooldown(); } else if (inputHandler.actions["SpellB"].inProgress) { abilityInstances[3].TryAbility(); hotbarIcons[3].UpdateCooldown(); } } }