public void Setup() { _logger = new EventLogger(); _input = new MockInput(); _output = new MockOutput(); _menuManager = new TestMenuManager(_input, _output); _chanceService = new MockChanceService(); TestFighterFactory.SetChanceService(_chanceService); _shade1 = (Shade)FighterFactory.GetFighter(FighterType.Shade, 1); _shade2 = (Shade)FighterFactory.GetFighter(FighterType.Shade, 1); _shade3 = (Shade)FighterFactory.GetFighter(FighterType.Shade, 1); _shades = new List <Shade> { _shade1, _shade2, _shade3 }; _shadeGrouping = new ShadeFighterGrouping(_chanceService, _shades.ToArray()); _shadeTeam = new Team(TestMenuManager.GetTestMenuManager(), _shadeGrouping); _humanFighter = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1); _humanFighter.SetSpeed(_shade1.Speed + 1); _humanTeam = new Team(_menuManager, _humanFighter); List <BattleMove> executableMoves = _shade1.GetExecutableMoves(_humanTeam); _absorptionMoveIndex = executableMoves.FindIndex(bm => bm.MoveType == BattleMoveType.AbsorbShade); _malevolenceChargeIndex = executableMoves.FindIndex(bm => bm.MoveType == BattleMoveType.Special); _malevolenceAttackIndex = executableMoves.FindIndex(bm => bm.MoveType == BattleMoveType.ConditionalPowerAttack); _darkFogIndex = executableMoves.FindIndex(bm => bm is StatusMove); _malevolenceChargeMove = executableMoves[_malevolenceChargeIndex]; _malevolenceAttackMove = executableMoves[_malevolenceAttackIndex]; _shadeAbsorbingMove = executableMoves[_absorptionMoveIndex]; Shade fooShade = new Shade(1, _chanceService, 1); Team fooTeam = new Team(TestMenuManager.GetTestMenuManager(), fooShade); fooShade.SetTeam(fooTeam); List <BattleMove> fooExecutableAttacks = fooShade.GetExecutableMoves(_humanTeam); _malevolenceAttackNoAbsorptionMoveIndex = fooExecutableAttacks.FindIndex(bm => bm.MoveType == BattleMoveType.ConditionalPowerAttack); _malevolenceChargeNoAbsorptionMoveIndex = fooExecutableAttacks.FindIndex(bm => bm.MoveType == BattleMoveType.Special); _battleManager = new TestBattleManager(_chanceService, _input, _output); }
public void ShadeFiltersBasicAttackFromExecutableMoves() { List <BattleMove> availableMoves = _shade1.AvailableMoves; List <BattleMove> executableMoves = _shade1.GetExecutableMoves(_humanTeam); Assert.AreEqual(1, availableMoves.Count - executableMoves.Count); BattleMove filteredMove = availableMoves.FirstOrDefault(bm => !executableMoves.Contains(bm)); Assert.AreEqual(BattleMoveType.Attack, filteredMove?.MoveType); }