From 679fc526cc624e92adcd09ec0349778fa9ed2ccc Mon Sep 17 00:00:00 2001 From: henriquenakashima Date: Tue, 13 Oct 2020 00:45:03 -0400 Subject: [PATCH] Refactor HeroCardDatabase --- Assets/Battle/HeroCardDatabase.cs | 41 +++++++++++++++++-------------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/Assets/Battle/HeroCardDatabase.cs b/Assets/Battle/HeroCardDatabase.cs index 9302a56..4fdee32 100644 --- a/Assets/Battle/HeroCardDatabase.cs +++ b/Assets/Battle/HeroCardDatabase.cs @@ -29,42 +29,47 @@ public enum HCardId { public class HeroCardDatabase : CardDatabase { - public override HeroCard CreateCard(int id, BattleParticipant owner) { - HCardId heroCardId = (HCardId) id; - switch (heroCardId) + private System.Type GetCardClass(HCardId id) { + switch (id) { case HCardId.CrashingPunch: - return new CrashingPunchHCard(owner); + return typeof(CrashingPunchHCard); case HCardId.Cover: - return new CoverHCard(owner); + return typeof(CoverHCard); case HCardId.LightningStrike: - return new LightningStrikeHCard(owner); + return typeof(LightningStrikeHCard); case HCardId.Scarring: - return new ScarringHCard(owner); + return typeof(ScarringHCard); case HCardId.Thunderstorm: - return new ThunderstormHCard(owner); + return typeof(ThunderstormHCard); case HCardId.BlindFury: - return new BlindFuryHCard(owner); + return typeof(BlindFuryHCard); case HCardId.Meditate: - return new MeditateHCard(owner); + return typeof(MeditateHCard); case HCardId.LightningHatchet: - return new LightningHatchetHCard(owner); + return typeof(LightningHatchetHCard); case HCardId.IronskinDraught: - return new IronskinDraughtHCard(owner); + return typeof(IronskinDraughtHCard); case HCardId.SwordSlash: - return new SwordSlashHCard(owner); + return typeof(SwordSlashHCard); case HCardId.ShieldBlock: - return new ShieldBlockHCard(owner); + return typeof(ShieldBlockHCard); case HCardId.LeadShot: - return new LeadShotHCard(owner); + return typeof(LeadShotHCard); case HCardId.SmokeBomb: - return new SmokeBombHCard(owner); + return typeof(SmokeBombHCard); case HCardId.Eagerness: - return new EagernessHCard(owner); + return typeof(EagernessHCard); case HCardId.OilOfSharpness: - return new OilOfSharpnessHCard(owner); + return typeof(OilOfSharpnessHCard); default: 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); + } }