Beispiel #1
0
        // public func CheckWhetherMovementIsPossible(
        //      occupiedGridSquares: Grid,
        //      newTopLeftCorner: SquareFillPoint) -> MovementAnalyser
        public MovementAnalyser CheckWhetherMovementIsPossible(
            Grid occupiedGridSquares,
            SquareFillPoint newTopLeftCorner)
        {
            var movementAnalyser = new MovementAnalyser(
                squares: _squares,
                occupiedGridSquares: occupiedGridSquares,
                newTopLeftCorner: newTopLeftCorner);

            return(movementAnalyser);
        }
Beispiel #2
0
        // public func SnapToGridInRelevantDimensionsIfPossible(movementResult: MovementAnalyser, occupiedGridSquares: Grid)
        public void SnapToGridInRelevantDimensionsIfPossible(MovementAnalyser movementResult, Grid occupiedGridSquares)
        {
            var previousTopLeftCorner = _topLeftCorner;
            var newTopLeftCorner      = SquareFillPoint(x: previousTopLeftCorner.X, y: previousTopLeftCorner.Y);

            if (movementResult.ShapeHasCrossedAHorizontalGridBoundary)
            {
                newTopLeftCorner.X = CalculateSnappedX(newTopLeftCornerX: newTopLeftCorner.X);
            }

            if (movementResult.ShapeHasCrossedAVerticalGridBoundary)
            {
                newTopLeftCorner.Y = CalculateSnappedY(newTopLeftCornerY: newTopLeftCorner.Y);
            }

            var newMovementResult = CheckWhetherMovementIsPossible(
                occupiedGridSquares: occupiedGridSquares,
                newTopLeftCorner: newTopLeftCorner);

            if (newMovementResult.NoShapesAreInTheWay)
            {
                UpdateTopLeftCorner(newTopLeftCorner: newTopLeftCorner);
            }
        }