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); }
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); }
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); }
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); }