public void ConsumeAbilityCost(IAbility ability) { // Deduct HP/SP if (ability.HPCost > 0) { SetHP(HP - ability.HPCost); } if (ability.SPCost > 0) { SetSP(SP - ability.SPCost); } // Deduct ability state (uses, cooldown, etc.) ability.ProcessUsed(); // Deduct actions switch (ability.ActionConsumption) { case AbilityActionConsumption.MajorAction: MajorActionConsumed = true; EndAction(); break; case AbilityActionConsumption.MinorAction: break; // TODO: Minor consumption dictionary } }