Witam
Pisałem sobie tak system walki turowy (a'la RPG) gracz vs komputer.
Klasy zrobione, mechanika też powoli idzie do przodu ale zastanowiła mnie jedna rzecz która chyba by można było zrobić lepiej ale nie wiem jak...otóż :
Zaczynając od góry mamy :
class Character
{
List<Attack> attacks = new List<Attack>();
//
double magicRes;
double psyhRes;
}
class Attack
{
//...
AttackType attackType = AttackType.NONE;
}
public enum AttackType
{
MAGIC,
PSYHICAL,
NONE,
// itd...
}
I problem jest taki że podczas liczenia np. obrażeń muszę powiązać jakoś AttackType z odpowiednią odpornością i wychodzi mi tak :
public double ResMaching(AttackType type, Character character)
{
if (type == AttackType.MAGIC)
{
return character.magicRes;
}
// itd..
}
Czyli mając np. 20 typów ataków mamy 20 x if / case. Później dodam jakieś efekty (enum) i odporności na efekty(double) (np. FEAR - resFear, CURSE - resCurse), albo buffy konkretnych statystyk i zawsze w połączeniu Enum -> jakaś zmienna będę musiał pisać milion 'statementów' if / case.
Jakaś rada żeby to ładniej zrobić ?
Nie wiedziałem jaki tytuł dać...