using System; using System.Collections.Generic; using UnityEngine; public class PlayerAbility : MonoBehaviour { [Header("Identification")] public string abilityName; public Sprite abilityIcon; public Marisa thisPlayer; [Header("Cooldown")] public bool canCooldown = true; public float baseCooldown; public float cooldown; public float currentCooldown; [Header("Stats")] public float basePower; public float power; public float baseProjectileCount; public float projectileCount; public Dictionary attachedUpgrades = new(); private void Start() { cooldown = baseCooldown; power = basePower; projectileCount = baseProjectileCount; } public void TryAbility() { if (currentCooldown <= 0 && canCooldown) { currentCooldown = cooldown; AbilityEffects(); } } protected virtual void AbilityEffects() { } protected virtual void Update() { if (currentCooldown > 0) { currentCooldown -= Time.deltaTime; } } public void AddUpgrade(AbilityUpgrade upgrade) { if (!attachedUpgrades.ContainsKey(upgrade)) { attachedUpgrades[upgrade] = 0; } attachedUpgrades[upgrade]++; upgrade.ApplyUpgrade(this); } public bool RemoveUpgrade(AbilityUpgrade upgrade) { if (attachedUpgrades.ContainsKey(upgrade)) { attachedUpgrades[upgrade]--; if (attachedUpgrades[upgrade] >= 0) { attachedUpgrades.Remove(upgrade); } upgrade.ApplyRemoval(this); return true; } return false; } public int GetUpgradeCount(AbilityUpgrade upgrade) { if (!attachedUpgrades.ContainsKey(upgrade)) { return 0; } return attachedUpgrades[upgrade]; } }