public void Setup() { _input = new MockInput(); _output = new MockOutput(); _menuManager = new TestMenuManager(_input, _output); _chanceService = new MockChanceService(); _battleManager = new TestBattleManager(_chanceService, _input, _output); TestFighterFactory.SetChanceService(_chanceService); _chicken = (MegaChicken)FighterFactory.GetFighter(FighterType.MegaChicken, 1); _enemyTeam = new Team(_menuManager, _chicken); _hero = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, "Hero"); _sidekick = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, "SideKick"); _humanTeam = new TestTeam(new List <HumanFighter> { _hero, _sidekick }); _castPrefix = $"{_chicken.DisplayName} draws in the power of its magic eggs, sacrificing them and casts "; }
/// <summary> /// Each region has its own unique boss. This returns the appropriate boss for a region. /// If, later, certain bosses appear with side kicks, those will also be generated /// </summary> /// <param name="subRegion"></param> /// <returns></returns> public Team GetBossTeamForRegion(SubRegion subRegion) { List <IFighter> bossFighters = new List <IFighter>(); switch (subRegion.AreaId) { case WorldSubRegion.Fields: MegaChicken chicken = (MegaChicken)FighterFactory.GetFighter(FighterType.MegaChicken, 1); bossFighters.Add(chicken); break; case WorldSubRegion.DesertIntro: Barbarian barbarian = (Barbarian)FighterFactory.GetFighter(FighterType.Barbarian, 1); bossFighters.Add(barbarian); break; default: throw new NotImplementedException($"Main.GetBossTeamForRegion() is not yet built to handle sub region value {subRegion.AreaId}"); } Team ret = new Team(new MenuManager(_input, _output, _menuFactory), bossFighters); return(ret); }
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); }