Refactor HeroCardDatabase

This commit is contained in:
henriquenakashima 2020-10-13 00:45:03 -04:00
parent 939b3e2664
commit 679fc526cc

View file

@ -29,42 +29,47 @@ public enum HCardId {
public class HeroCardDatabase : CardDatabase<HeroCard> public class HeroCardDatabase : CardDatabase<HeroCard>
{ {
public override HeroCard CreateCard(int id, BattleParticipant owner) { private System.Type GetCardClass(HCardId id) {
HCardId heroCardId = (HCardId) id; switch (id)
switch (heroCardId)
{ {
case HCardId.CrashingPunch: case HCardId.CrashingPunch:
return new CrashingPunchHCard(owner); return typeof(CrashingPunchHCard);
case HCardId.Cover: case HCardId.Cover:
return new CoverHCard(owner); return typeof(CoverHCard);
case HCardId.LightningStrike: case HCardId.LightningStrike:
return new LightningStrikeHCard(owner); return typeof(LightningStrikeHCard);
case HCardId.Scarring: case HCardId.Scarring:
return new ScarringHCard(owner); return typeof(ScarringHCard);
case HCardId.Thunderstorm: case HCardId.Thunderstorm:
return new ThunderstormHCard(owner); return typeof(ThunderstormHCard);
case HCardId.BlindFury: case HCardId.BlindFury:
return new BlindFuryHCard(owner); return typeof(BlindFuryHCard);
case HCardId.Meditate: case HCardId.Meditate:
return new MeditateHCard(owner); return typeof(MeditateHCard);
case HCardId.LightningHatchet: case HCardId.LightningHatchet:
return new LightningHatchetHCard(owner); return typeof(LightningHatchetHCard);
case HCardId.IronskinDraught: case HCardId.IronskinDraught:
return new IronskinDraughtHCard(owner); return typeof(IronskinDraughtHCard);
case HCardId.SwordSlash: case HCardId.SwordSlash:
return new SwordSlashHCard(owner); return typeof(SwordSlashHCard);
case HCardId.ShieldBlock: case HCardId.ShieldBlock:
return new ShieldBlockHCard(owner); return typeof(ShieldBlockHCard);
case HCardId.LeadShot: case HCardId.LeadShot:
return new LeadShotHCard(owner); return typeof(LeadShotHCard);
case HCardId.SmokeBomb: case HCardId.SmokeBomb:
return new SmokeBombHCard(owner); return typeof(SmokeBombHCard);
case HCardId.Eagerness: case HCardId.Eagerness:
return new EagernessHCard(owner); return typeof(EagernessHCard);
case HCardId.OilOfSharpness: case HCardId.OilOfSharpness:
return new OilOfSharpnessHCard(owner); return typeof(OilOfSharpnessHCard);
default: default:
throw new System.ArgumentException("HCardId unknown", "id"); throw new System.ArgumentException("HCardId unknown", "id");
} }
} }
public override HeroCard CreateCard(int id, BattleParticipant owner) {
HCardId heroCardId = (HCardId) id;
System.Type cardClass = GetCardClass(heroCardId);
return (HeroCard) System.Activator.CreateInstance(cardClass, owner);
}
} }