MarisaMagicalStudy/Assets/Scripts/Abilities/PlayerAbilities/PlayerAbility.cs

83 lines
1.9 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 baseCooldown;
public float cooldown;
public float currentCooldown;
[Header("Stats")]
public float basePower;
public float power;
public float baseProjectileCount;
public float projectileCount;
public Dictionary<AbilityUpgrade, int> 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];
}
}