public void GetGroupingCorrectlyReturnsShadeGrouping_NoMaxLevel([Range(1, 4)] int numberEnemies, [Range(1, 3)] int fighterLevel)
        {
            ShadeGroupingConfiguration config   = new ShadeGroupingConfiguration(numberEnemies, fighterLevel);
            ShadeFighterGrouping       grouping = _factory.GetGrouping(config) as ShadeFighterGrouping;

            Assert.NotNull(grouping);
            List <Shade> shades = grouping.GetShades();

            Assert.AreEqual(numberEnemies, shades.Count, $"There should be {numberEnemies} shades in the returned grouping");
            Assert.True(shades.TrueForAll(s => s.Level == fighterLevel));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        public void TearDown()
        {
            _logger        = null;
            _input         = null;
            _output        = null;
            _menuManager   = null;
            _chanceService = null;

            _shade1        = null;
            _shade2        = null;
            _shade3        = null;
            _shadeGrouping = null;
            _shadeTeam     = null;

            _humanFighter = null;
            _humanTeam    = null;
        }
        public void SetUp()
        {
            _input         = new MockInput();
            _output        = new MockOutput();
            _chanceService = new MockChanceService();
            _menuManager   = new TestMenuManager(_input, _output, new MenuFactory());

            _battleManager = new BattleManager(_chanceService, _input, _output);

            _shadeGrouping = new ShadeFighterGrouping(_chanceService, new Shade(1, _chanceService, 1), new Shade(1, _chanceService, 1), new Shade(1, _chanceService, 1));
            _shadeTeam     = new Team(TestMenuManager.GetTestMenuManager(), _shadeGrouping);

            _humanFighter = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            _humanFighter.SetHealth(5);
            _humanFighter.SetSpeed(_shadeTeam.Fighters[0].Speed + 1);
            _humanTeam = new TestTeam(_menuManager, _humanFighter);

            _enemy     = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1);
            _enemyTeam = new Team(TestMenuManager.GetTestMenuManager(), _enemy);
        }
        public void BattleCorrectlyEnds_AllShadesSealed([Range(1, 3)] int numberShades)
        {
            List <Bell> bells = GetBells(BellType.Copper);

            List <Shade> shades = new List <Shade>();

            int chargeMoveIndex = -1;

            for (int i = numberShades; i > 0; --i)
            {
                shades.Add(new Shade(1, _chanceService, 1));
            }

            ShadeFighterGrouping shadeGrouping = new ShadeFighterGrouping(_chanceService, shades.ToArray());

            _shadeTeam = new Team(TestMenuManager.GetTestMenuManager(), shadeGrouping);

            chargeMoveIndex =
                shades[0].GetExecutableMoves(_humanTeam).FindIndex(am => am.MoveType == BattleMoveType.Special);

            for (int i = numberShades; i > 0; --i)
            {
                _input.Push("special", "pray copper", "1");
                _chanceService.PushEventOccurs(true); //sealing is successful

                for (int j = i; j > 0; --j)
                {
                    _chanceService.PushWhichEventOccurs(chargeMoveIndex);
                }
            }

            //act
            BattleEndStatus battleEndStatus = _battleManager.Battle(_humanTeam, _shadeTeam, bells.Cast <TerrainInteractable>().ToList());

            Assert.AreEqual(BattleEndStatus.Victory, battleEndStatus);
        }
        public void GetGroupingCorrectlyReturnsShadeGrouping_LevelRange([Range(1, 3)] int minLevel, [Range(1, 3)] int levelDiff)
        {
            //Arrange
            int maxLevel       = minLevel + levelDiff;
            int numberFighters = levelDiff + 1;
            ShadeGroupingConfiguration config = new ShadeGroupingConfiguration(numberFighters, minLevel, maxLevel);

            for (int i = 0; i < numberFighters; ++i)
            {
                _chanceService.PushWhichEventOccurs(i);
            }

            //Act
            ShadeFighterGrouping grouping = _factory.GetGrouping(config) as ShadeFighterGrouping;

            //Assert
            Assert.NotNull(grouping);
            List <Shade> shades = grouping.GetShades();

            for (int i = 0; i < numberFighters; ++i)
            {
                Assert.AreEqual(minLevel + i, shades[i].Level);
            }
        }