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