public void GetNeighboringLandingPositions(Coordinate coordinate)
        {
            AddNeighboringLandingPositions(coordinate);

            if (MatrixOperation.HasLeftNeighbor(coordinate))
            {
                var leftCoordinate = MatrixOperation.GetLeftNeighborCoordinate(coordinate);
                AddNeighboringLandingPositions(leftCoordinate);
            }
            if (MatrixOperation.HasRightNeighbor(coordinate))
            {
                var rightcoordinate = MatrixOperation.GetRightNeighborCoordinate(coordinate);
                AddNeighboringLandingPositions(rightcoordinate);
            }
        }
        public void AddNeighboringLandingPositions(Coordinate coordinate)
        {
            Coordinates.Add(coordinate);

            if (MatrixOperation.HasTopNeighbor(coordinate))
            {
                var topCoordinate = MatrixOperation.GetTopNeighborCoordinate(coordinate);

                Coordinates.Add(topCoordinate);
            }

            if (MatrixOperation.HasDownNeighbor(coordinate))
            {
                var downCoordinate = MatrixOperation.GetDownNeighborCoordinate(coordinate);
                Coordinates.Add(downCoordinate);
            }
        }
 public LandingOperation(LandingArea landingArea)
 {
     LandingArea     = landingArea ?? throw new ArgumentNullException(nameof(landingArea));
     MatrixOperation = new MatrixOperation(LandingArea.Matrix);
     Coordinates     = new List <Coordinate>();
 }