public void GetMoveConsecutiveSuccessCount_WithFailure_ReturnsCount() { // Arrange var user = TestHelpers.CreateBasicCharacter(); var move = TestHelpers.CreateMove(); var actionHistory = new ActionHistory(); var successMoveUse = new MoveUse { User = user, Move = move, Result = MoveUseResult.Success, }; var failureMoveUse = new MoveUse { User = user, Move = move, Result = MoveUseResult.Failure, }; actionHistory.AddMoveUse(successMoveUse); actionHistory.AddMoveUse(failureMoveUse); actionHistory.AddMoveUse(successMoveUse); actionHistory.AddMoveUse(successMoveUse); // Act var count = actionHistory.GetMoveConsecutiveSuccessCount(move, user); // Assert Assert.That(count, Is.EqualTo(2)); }
/// <inheritdoc /> public void ShowMoveUse(MoveUse moveUse) { if (moveUse.HasResult && !moveUse.TargetsAllDead) { switch (moveUse.Result) { case MoveUseResult.Success: ShowMessage($"{moveUse.User.Name} used {moveUse.Move.Name}!"); break; case MoveUseResult.Miss: ShowMessage($"{moveUse.User.Name} used {moveUse.Move.Name} but missed!"); break; case MoveUseResult.Failure: ShowMessage($"{moveUse.User.Name} used {moveUse.Move.Name} but it failed!"); break; } foreach (var actionResult in moveUse.ActionsResults) { if (actionResult.Success) { foreach (var result in actionResult.Results) { ShowResult(result); } } else { ShowMessage("But it failed!"); } } } }
/// <summary> /// Tries to add the given move use to the move use queue and returns whether the attempt succeeded. /// </summary> /// <param name="moveUse">The move use.</param> public bool Push(MoveUse moveUse) { if (moveUse.Move.CanUse()) { Queue.Add(moveUse); return(true); } return(false); }
public void ApplyNext_QueueNotEmptyAndUserAlive_ReturnsAppliedMoveUse() { // Arrange var moveUse = new MoveUse { Move = TestHelpers.CreateMove(), User = TestHelpers.CreateBasicCharacter(), OtherCharacters = Enumerable.Empty <Character>(), }; var moveProcessor = new MoveProcessor(); _ = moveProcessor.Push(moveUse); // Act var appliedMoveUse = moveProcessor.ApplyNext(); // Assert Assert.That(appliedMoveUse.HasResult, Is.True); }
public void ApplyNext_QueueNotEmptyAndUserDead_ReturnsUnappliedMoveUse() { // Arrange var moveUse = new MoveUse { Move = TestHelpers.CreateMove(), User = TestHelpers.CreateBasicCharacter(), }; _ = moveUse.User.ReceiveDamage <Move>(6, TestHelpers.CreateBasicCharacter()); var moveProcessor = new MoveProcessor(); _ = moveProcessor.Push(moveUse); // Act var appliedMoveUse = moveProcessor.ApplyNext(); // Assert Assert.That(appliedMoveUse.HasResult, Is.False); }
public void Apply_ReturnsResult() { // Arrange var move = TestHelpers.CreateMove(moveActions: TestHelpers.CreateDamageAction()); var moveUse = new MoveUse { Move = move, User = TestHelpers.CreateBasicCharacter(), OtherCharacters = new[] { TestHelpers.CreateBasicCharacter() } }; moveUse.SetTargets(); // Act moveUse.Apply(); // Assert Assert.That(moveUse.ActionsResults.ToArray().Length, Is.EqualTo(1)); }
public void Push_CanUseMove_Succeeds( int remainingUses, bool expectedResult, bool expectedQueueIsEmpty) { // Arrange var moveUse = new MoveUse { Move = TestHelpers.CreateMove(maxUses: remainingUses), }; var moveProcessor = new MoveProcessor(); // Act var result = moveProcessor.Push(moveUse); // Assert Assert.Multiple(() => { Assert.That(result, Is.EqualTo(expectedResult)); Assert.That(moveProcessor.MoveUseQueueIsEmpty, Is.EqualTo(expectedQueueIsEmpty)); }); }