public void Setup() { _output = new MockOutput(); _input = new MockInput(); _menuManager = new TestMenuManager(_input, _output); _chanceService = new MockChanceService(); _battleManager = new TestBattleManager(_chanceService, _input, _output); TestFighterFactory.SetChanceService(_chanceService); _kiki = (DancerBoss)FighterFactory.GetFighter(FighterType.DancerBoss, 1, fighterClass: FighterClass.BossDancerKiki); _riki = (DancerBoss)FighterFactory.GetFighter(FighterType.DancerBoss, 1, fighterClass: FighterClass.BossDancerRiki); _enemyTeam = new Team(_menuManager, _kiki, _riki); _hero = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, "Hero"); _sidekick = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, "SideKick"); _humanTeam = new Team(new TestMenuManager(new MockInput(), new MockOutput()), _hero, _sidekick); }
public static IFighter GetFighter(FighterType type, int level, string name = null, MagicType magicType = MagicType.None, FighterClass fighterClass = FighterClass.None, IMenuFactory menuFactory = null) { IFighter ret; switch (type) { case FighterType.Goblin: ret = new Goblin(level, ChanceService); break; case FighterType.Golem: //high defense, low attack, low speed, low health ret = new Golem(level, ChanceService); break; case FighterType.Ogre: //high attack, low speed, low defense ret = new Ogre(level, ChanceService); break; case FighterType.Fairy: //high speed, high evade, low attack, low defense ret = new Fairy(level, ChanceService); break; case FighterType.HumanControlledPlayer: ret = new HumanFighter(name ?? "Player", level); GodRelationshipManager?.InitializeForFighter((HumanFighter)ret); break; case FighterType.HumanControlledEnemy: ret = new HumanControlledEnemyFighter(name ?? "Player", Input, Output, menuFactory ?? Globals.MenuFactory); break; case FighterType.MegaChicken: ret = new MegaChicken(level, ChanceService); break; case FighterType.Egg: if (magicType == MagicType.None) { int magicIndex = ChanceService.WhichEventOccurs(Globals.EggMagicTypes.Length); magicType = Globals.EggMagicTypes[magicIndex]; } ret = new Egg(magicType); break; case FighterType.DancerBoss: ret = new DancerBoss(fighterClass, level, ChanceService); break; case FighterType.Zombie: ret = new Zombie(level, ChanceService); break; case FighterType.Warrior: ret = new Warrior(level, ChanceService); break; case FighterType.ShieldGuy: ret = new ShieldGuy(level, ChanceService); break; case FighterType.Barbarian: ret = new Barbarian(level, ChanceService); break; case FighterType.Shade: ret = GetShade(level, name); break; default: throw new ArgumentOutOfRangeException(nameof(type), type, "The specified type is invalid for FighterFactory to initialize!"); } return(ret); }