Exemplo n.º 1
0
        public void GetAIDecision_WithAreaAttack_AttacksBothTargets()
        {
            var attack           = _actions.Find(action => action.Id == 1);
            var playerCharacters = new List <Character>()
            {
                GetBlankCharacter(),
                GetBlankCharacter()
            };

            playerCharacters[0].Position = 1;
            playerCharacters[0].Threat   = 100;
            playerCharacters[1].Position = 5;
            playerCharacters[1].Threat   = 25;
            var aiC1 = GetBlankCharacter();

            aiC1.Attacks.Add(attack);
            aiC1.Position = 14;
            var aiCharacters = new List <Character>()
            {
                aiC1
            };
            var ai = new BasicCombatAI();
            int expectedTargetPosition = 6;

            var aiDecisionData       = ai.GetAIDecision(aiC1, aiCharacters, playerCharacters);
            int actualTargetPosition = aiDecisionData.TargetPosition;

            Assert.AreEqual(expectedTargetPosition, actualTargetPosition);
        }
Exemplo n.º 2
0
        public void GetAIDecision_WithBasicAttackAndMultipleEnemies_AttacksHighestThreat()
        {
            var attack           = _actions.Find(action => action.Id == 2);
            var playerCharacters = new List <Character>()
            {
                GetBlankCharacter(),
                GetBlankCharacter(),
                GetBlankCharacter()
            };

            playerCharacters[0].Position = 4;
            playerCharacters[0].Threat   = 25;
            playerCharacters[1].Position = 8;
            playerCharacters[1].Threat   = 100;
            playerCharacters[2].Position = 2;
            playerCharacters[2].Threat   = 50;
            var aiC1 = GetBlankCharacter();

            aiC1.Attacks.Add(attack);
            aiC1.Position = 14;
            var aiCharacters = new List <Character>()
            {
                aiC1
            };
            var ai = new BasicCombatAI();
            int expectedTargetPosition = 8;

            var aiDecisionData       = ai.GetAIDecision(aiC1, aiCharacters, playerCharacters);
            int actualTargetPosition = aiDecisionData.TargetPosition;

            Assert.AreEqual(expectedTargetPosition, actualTargetPosition);
        }
Exemplo n.º 3
0
        public void GetAIDecision_WithDeadTarget_AttacksNextHighestThreat()
        {
            var attack           = _actions.Find(action => action.Id == 2);
            var playerCharacters = new List <Character>()
            {
                GetBlankCharacter(),
                GetBlankCharacter(),
                GetBlankCharacter(),
                GetBlankCharacter(),
            };

            playerCharacters[0].Position      = 3;
            playerCharacters[0].Threat        = 100;
            playerCharacters[0].CurrentHealth = 0;
            playerCharacters[1].Position      = 8;
            playerCharacters[1].Threat        = 50;
            playerCharacters[2].Position      = 6;
            playerCharacters[2].Threat        = 25;
            var aiC1 = GetBlankCharacter();

            aiC1.Attacks.Add(attack);
            aiC1.Position = 14;
            var aiCharacters = new List <Character>()
            {
                aiC1
            };
            var ai = new BasicCombatAI();
            int expectedTargetPosition = 8;
            var aiDecisionData         = ai.GetAIDecision(aiC1, aiCharacters, playerCharacters);
            int actualTargetPosition   = aiDecisionData.TargetPosition;

            Assert.AreEqual(expectedTargetPosition, actualTargetPosition);
        }
Exemplo n.º 4
0
        public void GetAIDecision_WithHealingAndLowHealth_HealsInsteadOfAttack()
        {
            var attack           = _actions.Find(action => action.Id == 2);
            var heal             = _actions.Find(action => action.Id == 3);
            var playerCharacters = new List <Character>()
            {
                GetBlankCharacter(),
                GetBlankCharacter()
            };

            playerCharacters[0].Position = 4;
            playerCharacters[0].Threat   = 25;
            playerCharacters[1].Position = 2;
            playerCharacters[1].Threat   = 25;
            var aiC1 = GetBlankCharacter();

            aiC1.Attacks.Add(attack);
            aiC1.Attacks.Add(heal);
            aiC1.Position      = 14;
            aiC1.CurrentHealth = 25;
            var aiCharacters = new List <Character>()
            {
                aiC1
            };
            var ai = new BasicCombatAI();
            int expectedTargetPosition = 14;

            var aiDecisionData       = ai.GetAIDecision(aiC1, aiCharacters, playerCharacters);
            int actualTargetPosition = aiDecisionData.TargetPosition;

            Assert.AreEqual(expectedTargetPosition, actualTargetPosition);
            Assert.AreSame(heal, aiDecisionData.ActionChoice as Attack);
        }