public MoveEvaluationResult EvaluateScore(IScoreEvaluationContext context)
        {
            MoveEvaluationResult result = new MoveEvaluationResult();

            var nextEntity = context.FieldMap[context.NextRow][context.NextColumn];

            if (nextEntity.IsMoveAllowedOnThis)
            {
                if (myCustomEvaluator != null)
                {
                    var moveEvaluatorContext = GetMoveEvaluatorContext(context);

                    var moveResult = myCustomEvaluator.EvaluateMove(moveEvaluatorContext);

                    if (moveResult.IsMovePossible)
                    {
                        result.EvaluatedScore = moveResult.EvaluatedScore + myMoveScore;
                    }
                    else
                    {
                        result.EvaluatedScore = context.CurrentScore;
                    }
                    result.IsMovePossible = moveResult.IsMovePossible;
                    result.IsGameWon      = moveResult.IsGameWon;
                    result.UpdatdEntities = moveResult.UpdatdEntities;
                }
                else
                {
                    result.IsMovePossible = true;
                    result.EvaluatedScore = context.CurrentScore + nextEntity.ScoringWeight + myMoveScore;
                    if (nextEntity.DisplayText == "Ex")
                    {
                        result.IsGameWon = true;
                    }
                }
            }
            else
            {
                result.IsMovePossible = false;
                result.EvaluatedScore = context.CurrentScore;
            }

            if (result.UpdatdEntities.Any())
            {
                foreach ((int Row, int Column, IMapEntity UpdatedEntity)resultUpdatdEntity in result.UpdatdEntities)
                {
                    context.FieldMap[resultUpdatdEntity.Row][resultUpdatdEntity.Column] = new DataBoundMapEntity(resultUpdatdEntity.UpdatedEntity);
                }
            }

            return(result);
        }
        public MoveEvaluationResult EvaluateScore(IScoreEvaluationContext context)
        {
            MoveEvaluationResult result = new MoveEvaluationResult();
            var nextEntity = context.FieldMap[context.NextRow, context.NextColumn];

            if (nextEntity.IsMoveAllowedOnThis)
            {
                result.IsMovePossible = true;

                result.EvaluatedScore = context.CurrentScore + nextEntity.ScoringWeight + myMoveScore;
            }
            else
            {
                result.IsMovePossible = false;
                result.EvaluatedScore = context.CurrentScore;
            }

            return(result);
        }