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!");
                    }
                }
            }
        }
Example #3
0
        /// <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);
        }
Example #4
0
        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);
        }
Example #5
0
        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));
        }
Example #7
0
        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));
            });
        }