public void test_rule_must_kill_v0()
        {
            CheckMovesResult result = new CheckMovesResult {
                DiceValue = 2
            };

            var rf1 = new PlayerFigure(PlayerColors.red, 0, 1, 1, 0);
            var rf2 = new PlayerFigure(PlayerColors.red, 1, 2, 2, 0);
            var gf1 = new PlayerFigure(PlayerColors.green, 0, 13, 3, 10);

            result.PlayerFigures.AddRange(new[] { rf1, rf2, gf1 });

            var rule = new nvp_Rule_50_HaveToKill().SetNextRule(new nvp_RuleDefault_class());

            result = rule.CheckRule(result);
            Assert.AreEqual(true, result.CanMove);
            Assert.AreEqual(false, result.AdditionalRollGranted);
            Assert.AreEqual(1, result.PossibleMoves.Count);
            Assert.AreEqual(0, result.PossibleMoves[0].Index);
        }
        private bool CheckRuleForFigure(CheckMovesResult result, PlayerFigure figureToCheck)
        {
            int          worlPositionToCheck = (figureToCheck.WorldPosition + result.DiceValue) % 41;
            PlayerFigure playerFigureFound   = nvp_RuleHelper.GetFigureOnWorldPosition(result.PlayerFigures, worlPositionToCheck);

            if (playerFigureFound == null || (playerFigureFound != null && playerFigureFound.Color == result.PlayerColor))
            {
                return(false);
            }

            result.CanMove        = true;
            result.LastActiveRule = "nvp_Rule_50_HaveToKill";
            result.PossibleMoves.Add(new PlayerMove
            {
                Color     = result.PlayerColor,
                DiceValue = result.DiceValue,
                Index     = figureToCheck.Index
            });

            return(true);
        }