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