public class SkillInstance { public SkillData Data { get; private set; } public int Level { get; set; } = 1; public float CooldownTimer { get; set; } public bool IsOnCooldown => CooldownTimer > 0f; public SkillLevelData CurrentLevelData => Data.GetLevelData(Level); public SkillInstance(SkillData data, int level = 1) { Data = data; Level = level; } public void StartCooldown() { CooldownTimer = CurrentLevelData.Cooldown; } public void TickCooldown(float deltaTime) { if (CooldownTimer > 0f) CooldownTimer -= deltaTime; } }