MarisaMagicalStudy/Assets/Scripts/Abilities/PlayerAbilities/PlayerAbility.cs
2026-03-03 09:16:19 -08:00

73 lines
1.7 KiB
C#

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 cooldown;
public float currentCooldown;
[Header("Stats")]
public float power;
public float projectileCount;
public Dictionary<AbilityUpgrade, int> attachedUpgrades = new();
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];
}
}