示例#1
0
        public void Setup()
        {
            _fighter = new TestHumanFighter("Hero", 1);
            _fighter.SetHealth(FighterHealth);
            _fighter.SetMana(FighterMana);
            _fighter.SetStrength(FighterAttack);
            _fighter.SetDefense(FighterDefense);
            _fighter.SetSpeed(FighterSpeed);
            _fighter.SetEvade(FighterEvade);
            _fighter.SetLuck(FighterLuck);

            _factoryFighter = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, "Ted");
            _factoryFighter.AddSpell(SpellFactory.GetSpell(MagicType.Fire, 1));
            _enemy             = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1, "enemy");
            _armoredEnemy      = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1, "armored");
            _superArmoredEnemy = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1, "super armored");

            _input         = new MockInput();
            _output        = new MockOutput();
            _menuManager   = new TestMenuManager(_input, _output);
            _chanceService = new MockChanceService();

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

            var humanTeam = new Team(_menuManager, _fighter);

            _battleManager.SetHumanTeam(humanTeam);

            var enemyTeam = new Team(_menuManager, _enemy);

            _battleManager.SetEnemyTeam(enemyTeam);

            _battleManager.SetConfig(new BattleManagerBattleConfiguration());
        }
示例#2
0
        public void MalevolenceCharge_CorrectlyRaisesMalevolenceAttackPower()
        {
            TestHumanFighter fighter2 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);

            _humanFighter.SetHealth(100);
            fighter2.SetHealth(100);

            Team shadeTeam = new Team(TestMenuManager.GetTestMenuManager(), _shade1, _shade2);
            Team humanTeam = new Team(_menuManager, _humanFighter, fighter2);

            _humanFighter.SetMove(_doNothingMove, 3);
            _humanFighter.SetMove(_runawayMove);
            fighter2.SetMove(_doNothingMove);

            _chanceService.PushWhichEventsOccur(_malevolenceAttackIndex, 0, _malevolenceChargeIndex); //first round, _shade1 attacks HumanFighter1, _shade2 charges
            _chanceService.PushWhichEventsOccur(_malevolenceChargeIndex, _malevolenceChargeIndex);    //second round, both shades charge
            _chanceService.PushWhichEventsOccur(_malevolenceChargeIndex, _malevolenceAttackIndex, 1); //third round, _shade1 charges again, _shade2 attacks
            _chanceService.PushAttackHitsNotCrit(2);

            _battleManager.Battle(humanTeam, shadeTeam);

            int fighter1Damage = _humanFighter.MaxHealth - _humanFighter.CurrentHealth;
            int fighter2Damage = fighter2.MaxHealth - fighter2.CurrentHealth;

            Assert.Greater(fighter2Damage, fighter1Damage);
        }
示例#3
0
        public void SetUp()
        {
            _input       = new MockInput();
            _output      = new MockOutput();
            _menuFactory = new MenuFactory();
            _manager     = new MenuManager(_input, _output, _menuFactory);
            _logger      = new EventLogger();
            _playerOne   = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, "swordsman");
            Spell fireSpell = SpellFactory.GetSpell(MagicType.Fire, 1);

            _playerOne.AddSpell(fireSpell);
            _playerOne.SetMana(fireSpell.Cost);

            _playerTwo   = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, "mage");
            _playerThree = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, "alchemist");
            _playerTeam  = new Team(_manager, _playerOne, _playerTwo, _playerThree);

            _enemyTeam = new Team(_manager, new List <IFighter>
            {
                FighterFactory.GetFighter(FighterType.Goblin, 1),
                FighterFactory.GetFighter(FighterType.Goblin, 1),
                FighterFactory.GetFighter(FighterType.Goblin, 1)
            });

            _manager.InitializeForBattle(_playerTeam, _enemyTeam);
        }
        public void Setup()
        {
            _input             = new MockInput();
            _output            = new MockOutput();
            _menuManager       = new TestMenuManager(_input, _output);
            _logger            = new EventLogger();
            _mockChanceService = new MockChanceService();
            TestFighterFactory.SetChanceService(_mockChanceService);

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

            _humanPlayer1 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, "Ted");
            _humanPlayer2 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, "Jed");

            _humanPlayer2.AddSpell(_fireball);
            _humanPlayer2.SetMana(_fireball.Cost);

            _humanPlayer2.TurnEnded += TurnEndedEvents.RestoreManaOnTurnEnd;

            _enemyPlayer1 = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1, "Enemy");
            _enemyPlayer2 = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1, "Enemy");

            _humanTeam = new TestTeam(_menuManager, _humanPlayer1, _humanPlayer2);

            _enemyTeam = new Team(_menuManager, _enemyPlayer1, _enemyPlayer2);
        }
示例#5
0
        public void BattleMoveQueue_SortAndPopOperation_ReturnsCorrectMove()
        {
            TestHumanFighter fighter1 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            TestHumanFighter fighter2 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            TestHumanFighter fighter3 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);

            //sorted order is 2, 3, 1
            fighter1.SetSpeed(0);
            fighter2.SetSpeed(2);
            fighter3.SetSpeed(1);

            List <BattleMoveWithTarget> initializerList = new List <BattleMoveWithTarget>
            {
                new BattleMoveWithTarget(_testMove, fighter1, fighter1),
                new BattleMoveWithTarget(_testMove, fighter2, fighter2),
                new BattleMoveWithTarget(_testMove, fighter3, fighter3)
            };

            BattleMoveQueue queue = new BattleMoveQueue(initializerList);

            BattleMoveWithTarget firstSortedMove = queue.SortAndPop();
            IFighter             owner           = firstSortedMove.Owner;

            Assert.AreEqual(fighter2, owner);

            Assert.AreEqual(2, queue.Count);
        }
        public void Setup()
        {
            _fighter = new TestHumanFighter("Hero", 1);
            _enemy   = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1, "enemy");

            _logger = new EventLogger();
        }
        public void SetUp()
        {
            _menuInput   = new MockInput();
            _menuOutput  = new MockOutput();
            _menuManager = new TestMenuManager(_menuInput, _menuOutput);

            _player = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            Spell fireball   = SpellFactory.GetSpell(MagicType.Fire, 1);
            Spell earthSpell = SpellFactory.GetSpell(MagicType.Earth, 1);

            _player.AddSpell(fireball);
            _player.AddSpell(earthSpell);
            _player.SetMana(fireball.Cost);

            _playerTeam = new Team(_menuManager, _player);
            _enemyTeam  = new Team(_menuManager, (EnemyFighter)FighterFactory.GetFighter(FighterType.Goblin, 1));

            _menu = (Menu)Globals.MenuFactory.GetMenu(MenuType.ChooseAttackTypeMenu, _menuInput, _menuOutput);
            _menu.Build(_player, _playerTeam, _enemyTeam, null);

            _fullSpellMenuPrompt = new List <string>
            {
                $"Which spell would you like to cast?\n{_player.DisplayName} currently has {_player.CurrentMana} / {_player.MaxMana} Mana\n",
            };

            var spellMenu = (SpellSelectionMenu)Globals.MenuFactory.GetMenu(MenuType.ChooseSpellMenu);

            spellMenu.Build(_player, _playerTeam, _enemyTeam, null);

            var spellMenuActions = spellMenu.MenuActions;

            for (var i = 0; i < spellMenuActions.Count; ++i)
            {
                _fullSpellMenuPrompt.Add((i + 1) + ". " + spellMenuActions[i].DisplayText + "\n");
            }

            _fullSpellMenuPrompt.Add(StatusPrompt);
            _fullSpellMenuPrompt.Add(HelpPrompt);

            _fullMenuPrompt = new List <string>
            {
                "How would you like to fight?\n",
                "1. attack\n",
                "2. magic\n",
                StatusPrompt,
                HelpPrompt
            };

            _fullTargetMenuPrompt = new List <string>
            {
                "Who will you target for this action?\n",
                "1. " + _enemyTeam.Fighters[0].DisplayName + "\n",
                StatusPrompt,
                BackPrompt,
                HelpPrompt
            };
        }
 public void TearDown()
 {
     _menu       = null;
     _menuInput  = null;
     _menuOutput = null;
     _enemyTeam  = null;
     _player     = null;
     _playerTeam = null;
 }
示例#9
0
        public void BattleMoveQueue_SortOperation_DefaultsBySpeedAndPriority()
        {
            TestHumanFighter fighter1 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            TestHumanFighter fighter2 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            TestHumanFighter fighter3 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            TestHumanFighter fighter4 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            TestHumanFighter fighter5 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            TestHumanFighter fighter6 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            TestHumanFighter fighter7 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            TestHumanFighter fighter8 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            TestHumanFighter fighter9 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);

            TestHumanFighter[] expectedOrderedFighters =
            {
                fighter9, fighter6, fighter3, //the high priority
                fighter8, fighter5, fighter2, //the med priority
                fighter7, fighter4, fighter1  //the low priority
            };

            fighter1.SetSpeed(0);
            fighter2.SetSpeed(0);
            fighter3.SetSpeed(0);
            fighter4.SetSpeed(1);
            fighter5.SetSpeed(1);
            fighter6.SetSpeed(1);
            fighter7.SetSpeed(2);
            fighter8.SetSpeed(2);
            fighter9.SetSpeed(2);

            BattleMove lowPriorityMove  = new BattleMove("foo", BattleMoveType.DoNothing, TargetType.Self, -1);
            BattleMove medPriorityMove  = new BattleMove("bar", BattleMoveType.DoNothing, TargetType.Self);
            BattleMove highPriorityMove = new BattleMove("baz", BattleMoveType.DoNothing, TargetType.Self, 1);

            List <BattleMoveWithTarget> initializerList = new List <BattleMoveWithTarget>
            {
                new BattleMoveWithTarget(lowPriorityMove, fighter1, fighter1),
                new BattleMoveWithTarget(lowPriorityMove, fighter4, fighter4),
                new BattleMoveWithTarget(lowPriorityMove, fighter7, fighter7),
                new BattleMoveWithTarget(medPriorityMove, fighter2, fighter2),
                new BattleMoveWithTarget(medPriorityMove, fighter5, fighter5),
                new BattleMoveWithTarget(medPriorityMove, fighter8, fighter8),
                new BattleMoveWithTarget(highPriorityMove, fighter3, fighter3),
                new BattleMoveWithTarget(highPriorityMove, fighter6, fighter6),
                new BattleMoveWithTarget(highPriorityMove, fighter9, fighter9)
            };

            BattleMoveQueue queue = new BattleMoveQueue(initializerList);

            queue.Sort();

            for (int i = 0; i < 9; ++i)
            {
                BattleMoveWithTarget move  = queue.Pop();
                IFighter             owner = move.Owner;
                Assert.AreEqual(expectedOrderedFighters[i], owner, $"i: {i}");
            }
        }
示例#10
0
        public void TearDown()
        {
            _input  = null;
            _output = null;

            _fighter     = null;
            _fighterTeam = null;
            _enemy       = null;
            _enemyTeam   = null;
        }
        public void TearDown()
        {
            _input         = null;
            _output        = null;
            _chanceService = null;

            _humanFighter = null;
            _humanTeam    = null;
            _enemyTeam    = null;
        }
示例#12
0
        public void SetUp()
        {
            _chanceService = new MockChanceService();
            _logger        = new EventLogger();
            TestFighterFactory.SetChanceService(_chanceService);
            _copperBell = new Bell(CopperBellDisplayName, BellType.Copper, new MenuFactory(), _chanceService);
            _silverBell = new Bell(SilverBellDisplayName, BellType.Silver, new MenuFactory(), _chanceService);

            _fighter = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
        }
示例#13
0
 public void TearDown()
 {
     _input       = null;
     _output      = null;
     _playerOne   = null;
     _playerTwo   = null;
     _playerThree = null;
     _playerTeam  = null;
     _enemyTeam   = null;
     _manager     = null;
 }
示例#14
0
        public void SetUp()
        {
            _input  = new MockInput();
            _output = new MockOutput();

            _menu = new KeysOffOwnerNumberInputMenu("foo", _input, _output);

            _owner     = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            _ownerTeam = new TestTeam(_owner);
            _enemyTeam = new TestTeam((TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1));
        }
示例#15
0
        public void SetUp()
        {
            _input  = new MockInput();
            _output = new MockOutput();

            _fighter     = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            _fighterTeam = new TestTeam(_fighter);

            _enemy     = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1);
            _enemyTeam = new TestTeam(_enemy);
        }
示例#16
0
 public void Setup()
 {
     _fighter = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, "Ted");
     _enemy   = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1, "enemy");
     _logger  = new EventLogger();
     _logger.SubscribeAll(_fighter);
     _logger.SubscribeAll(_enemy);
     _fireballSpell = SpellFactory.GetSpell(MagicType.Fire, 1);
     _fighter.AddSpell(_fireballSpell);
     _fighter.SetMana(_fireballSpell.Cost);
     _logger.ClearLogs();
 }
        public void SetUp()
        {
            _menuInput   = new MockInput();
            _menuOutput  = new MockOutput();
            _menuManager = new TestMenuManager(_menuInput, _menuOutput);

            _enemyTeam  = new Team(_menuManager, FighterFactory.GetFighter(FighterType.Goblin, 1));
            _player     = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            _playerTeam = new Team(_menuManager, _player);

            _menu = (SpecialMoveSelectionMenu)Globals.MenuFactory.GetMenu(MenuType.ChooseSpecialAttackMenu, _menuInput, _menuOutput);
            _menu.Build(_player, _playerTeam, _enemyTeam, null);
        }
示例#18
0
        public void TestUndoDebuffsEffect_IndividualEffect()
        {
            StatMultiplierStatus lowerAttackStatus    = new StatMultiplierStatus(3, StatType.Strength, 1.0 / 3);
            StatusMove           lowerEnemyAttackMove = new StatusMove("raise attack", TargetType.SingleEnemy, lowerAttackStatus);

            UndoDebuffsStatus undoDebuffStatus = new UndoDebuffsStatus(1);
            StatusMove        undoDebuffMove   = new StatusMove("reset stats", TargetType.SingleAlly, undoDebuffStatus);

            TestHumanFighter fighter2 = new TestHumanFighter("foo 2", 1);

            _humanTeam = new TestTeam(_humanFighter, fighter2);

            //enemy won't be killed if the status isn't assigned to _fighter2
            _enemy.SetHealth(3);
            _enemy.SetSpeed(2);
            _enemy.SetMove(lowerEnemyAttackMove);
            _chanceService.PushEventOccurs(true); //status hits
            _enemy.SetMoveTarget(fighter2);

            _humanFighter.SetSpeed(1);
            _humanFighter.SetMove(undoDebuffMove);
            _chanceService.PushEventOccurs(true); //status hits
            _humanFighter.SetMoveTarget(fighter2);
            _logger.Subscribe(EventType.StatusAdded, fighter2);
            _logger.Subscribe(EventType.StatusRemoved, fighter2);

            BattleMove attack = MoveFactory.Get(BattleMoveType.Attack);

            fighter2.SetStrength(3);
            fighter2.SetMove(attack);
            fighter2.SetMoveTarget(_enemy);
            _chanceService.PushEventOccurs(true);  //attack hits
            _chanceService.PushEventOccurs(false); //attack is not a crit

            //once Statuses are removed after battle, won't be able to
            _battleManager.Battle(_humanTeam, _enemyTeam);

            List <EventLog> logs = _logger.Logs;

            Assert.AreEqual(2, logs.Count);

            EventLog log = logs[1];

            Assert.AreEqual(EventType.StatusRemoved, log.Type);
            StatusRemovedEventArgs e = log.E as StatusRemovedEventArgs;

            Assert.NotNull(e);
            Assert.IsTrue(lowerAttackStatus.AreEqual(e.Status));
        }
示例#19
0
        public void Setup()
        {
            _input         = new MockInput();
            _output        = new MockOutput();
            _menuManager   = new TestMenuManager(_input, _output);
            _chanceService = new MockChanceService();
            _battleManager = new TestBattleManager(_chanceService, _input, _output);
            _logger        = new EventLogger();

            _humanFighter = new TestHumanFighter("foo", 1);
            _humanTeam    = new TestTeam(_humanFighter);

            _enemy     = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1);
            _enemyTeam = new Team(_menuManager, _enemy);
        }
示例#20
0
        public void SetUp()
        {
            _input         = new MockInput();
            _output        = new MockOutput();
            _menuManager   = new TestMenuManager(_input, _output);
            _chanceService = new MockChanceService();
            _battleManager = new BattleManager(_chanceService, _input, _output);

            _human     = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            _humanTeam = new TestTeam(_menuManager, _human);

            _enemy     = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1);
            _enemyTeam = new Team(_menuManager, _enemy);

            _doNothingMove = (DoNothingMove)MoveFactory.Get(BattleMoveType.DoNothing);
        }
示例#21
0
        public void Setup()
        {
            _input         = new MockInput();
            _output        = new MockOutput();
            _chanceService = new MockChanceService();
            _menuManager   = new TestMenuManager(_input, _output);

            TestFighterFactory.SetChanceService(_chanceService);

            _humanFighter = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            _humanTeam    = new Team(_menuManager, _humanFighter);

            _level1Warrior = (Warrior)FighterFactory.GetFighter(FighterType.Warrior, 1);
            _level3Warrior = (Warrior)FighterFactory.GetFighter(FighterType.Warrior, 3);
            _warriorTeam   = new Team(_menuManager, _level1Warrior);
        }
示例#22
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);
        }
示例#23
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;
        }
示例#24
0
        private Team PickNextArea_TeamSetup_DesertGroupings(int numFighterForMazeFlag = 1, string name1 = null, string name2 = null)
        {
            TestHumanFighter fighter1 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, name1);
            TestHumanFighter fighter2 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, name2);

            switch (numFighterForMazeFlag)
            {
            case 1:
                fighter1.AddPersonalityFlag(PersonalityFlag.MazeSolver);
                break;

            case 2:
                fighter2.AddPersonalityFlag(PersonalityFlag.MazeSolver);
                break;
            }

            return(new TestTeam(fighter1, fighter2));
        }
示例#25
0
        public void Setup()
        {
            _input         = new MockInput();
            _output        = new MockOutput();
            _chanceService = new MockChanceService();
            _menuManager   = new TestMenuManager(_input, _output);
            _battleManager = new TestBattleManager(_chanceService, _input, _output);

            TestFighterFactory.SetChanceService(_chanceService);

            _humanFighter = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1);
            _humanTeam    = new Team(_menuManager, _humanFighter);

            _level1ShieldGuy = (ShieldGuy)FighterFactory.GetFighter(FighterType.ShieldGuy, 1);
            _ally1           = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1);
            _ally2           = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1);
            _shieldGuyTeam   = new Team(_menuManager, _level1ShieldGuy, _ally1, _ally2);
        }
示例#26
0
        public void AttackMethod_AppropriatelyRaisesEvents_WhenEnemyDies()
        {
            _fighter = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, "Ted");
            _logger.SubscribeAll(_fighter);

            _fighter.SetStrength(_enemy.MaxHealth + 1);

            _fighter.Attack(_enemy);

            var logs = _logger.Logs;

            Assert.AreEqual(4, logs.Count);

            //first event, damage taken
            Assert.AreEqual(EventType.DamageTaken, logs[0].Type);
            Assert.AreEqual(_enemy, logs[0].Sender);
            PhysicalDamageTakenEventArgs e1 = logs[0].E as PhysicalDamageTakenEventArgs;

            Assert.NotNull(e1);
            Assert.AreEqual(_fighter.Strength, e1.Damage);

            //second event, killed - fired by enemy
            Assert.AreEqual(EventType.Killed, logs[1].Type);
            Assert.AreEqual(_enemy, logs[1].Sender);
            KilledEventArgs e2 = logs[1].E as KilledEventArgs;

            Assert.That(e2, Is.Not.Null);

            //third event, damageDealt to enemy
            Assert.AreEqual(EventType.AttackSuccessful, logs[2].Type);
            Assert.AreEqual(_fighter, logs[2].Sender);
            AttackSuccessfulEventArgs e3 = logs[2].E as AttackSuccessfulEventArgs;

            Assert.NotNull(e3);
            Assert.AreEqual(_enemy.MaxHealth, e3.DamageDealt);

            //fourth event, killed enemy
            Assert.AreEqual(EventType.EnemyKilled, logs[3].Type);
            Assert.AreEqual(_fighter, logs[3].Sender);
            EnemyKilledEventArgs e4 = logs[3].E as EnemyKilledEventArgs;

            Assert.NotNull(e4);
            Assert.AreEqual(_enemy, e4.Enemy);
        }
示例#27
0
        public void FighterStatus_MultipleInstancesOfStatus_HaveSeparateCounters()
        {
            MagicMultiplierStatus status = new MagicMultiplierStatus(4, MagicType.All, 1.25);

            _humanFighter.AddStatus(status);

            for (var i = 0; i < 2; ++i)
            {
                _humanFighter.OnTurnEnded(new TurnEndedEventArgs(_humanFighter));
            }

            TestHumanFighter fighter2 = new TestHumanFighter("Bob", 1);

            fighter2.AddStatus(status);

            Status returnedStatus = fighter2.Statuses[0];

            Assert.AreEqual(4, returnedStatus.TurnCounter);
        }
示例#28
0
        public void StatusTechnique_AppropriatelyAssignsStatusToTarget()
        {
            StatMultiplierStatus status     = new StatMultiplierStatus(3, StatType.Strength, 1.5);
            StatusMove           statusMove = new StatusMove("raise attack", TargetType.SingleAlly, status);

            TestHumanFighter fighter2 = new TestHumanFighter("foo 2", 1);

            _humanTeam = new TestTeam(_humanFighter, fighter2);

            _humanFighter.SetSpeed(1);
            _humanFighter.SetMove(statusMove);
            _chanceService.PushEventOccurs(true);
            _humanFighter.SetMoveTarget(fighter2);
            _logger.Subscribe(EventType.StatusAdded, fighter2);

            BattleMove attack = MoveFactory.Get(BattleMoveType.Attack);

            fighter2.SetStrength(2);
            fighter2.SetMove(attack);
            fighter2.SetMoveTarget(_enemy);
            _chanceService.PushEventOccurs(true);  //attack hits
            _chanceService.PushEventOccurs(false); //attack is not a crit

            //enemy won't be killed if the status isn't assigned to _fighter2
            _enemy.SetHealth(3);
            _enemy.SetMove(_doNothing);
            _enemy.SetMoveTarget(_enemy);

            //once Statuses are removed after battle, won't be able to
            _battleManager.Battle(_humanTeam, _enemyTeam);

            List <EventLog> logs = _logger.Logs;

            Assert.AreEqual(1, logs.Count);

            EventLog log = logs[0];

            Assert.AreEqual(EventType.StatusAdded, log.Type);
            StatusAddedEventArgs e = log.E as StatusAddedEventArgs;

            Assert.NotNull(e);
            Assert.IsTrue(status.AreEqual(e.Status));
        }
示例#29
0
        public void Setup()
        {
            _input         = new MockInput();
            _output        = new MockOutput();
            _menuManager   = new TestMenuManager(_input, _output);
            _chanceService = new MockChanceService();

            TestFighterFactory.SetChanceService(_chanceService);

            _humanPlayer1 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, "Ted");
            _humanPlayer2 = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1, "Jed");
            _enemyPlayer1 = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1, DefaultEnemyName);
            _enemyPlayer2 = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1, DefaultEnemyName);

            _humanTeam = new Team(_menuManager, _humanPlayer1, _humanPlayer2);
            _enemyTeam = new Team(_menuManager, _enemyPlayer1, _enemyPlayer2);

            _humanTeam.InitializeForBattle(_enemyTeam, _input, _output);
        }
示例#30
0
        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);
        }