Итак, я создаю небольшую игровую среду для усиления абстрактных классов и интерфейсов.Я строил классы для некоторой механики, и я не уверен, как обращаться с финальными частями.
Вот структура классов (с некоторыми удаленными различными методами):
public abstract class Ability
{
public virtual string Name { get; set; }
public virtual string Description { get; set; }
public virtual string Type { get; set; }
public virtual string Stat { get; set; }
public virtual float Scale { get; set; }
public virtual float MPCost { get; set; }
public virtual float SPCost { get; set; }
}
public class Attack : Ability
{
public float BaseDmg { get; set; }
public bool isUnblockable { get; set; }
public float GetDmg(int stat)
{
return BaseDmg * (1 + stat * Scale);
}
}
Теперь для фактических атак, которые я хочу создать, должен ли я создать экземпляр, как был?
public static class AllAttacks
{
//Physical Attacks
public static Attack slash = new Attack();
//Magical Attacks
public static Attack push = new Attack();
public static void Generate()
{
//Physical Attacks
slash.Name = "Slash";
slash.Description = "A simple but effective strike.";
slash.Type = "physical";
slash.Stat = "str";
slash.Scale = 0.1F;
slash.MPCost = 0;
slash.SPCost = 1;
slash.BaseDmg = 5;
slash.isUnblockable = false;
//Magical Attacks
push.Name = "Push";
push.Description = "A powerful telekinetic strike.";
push.Type = "magic";
push.Stat = "int";
push.Scale = 0.1F;
push.MPCost = 1;
push.SPCost = 0;
push.BaseDmg = 5F;
push.isUnblockable = false;
}
Или я должен фактически создать новый унаследованный класс для каждого уникального элемента, а затем создать его экземпляр в классе Fight?И если я это сделаю, должны ли они быть статическими или нестатичными?
public class Slash : Attack
{
//Code Here
}
Может кто-нибудь указать мне на лучшие практики или какой самый эффективный метод будет?