private void AddArrow(Tile[,] tileGrid, Point point, ArrowType layerType, int indexOffset)
 {
     if (CreatingWorld.IsStraightRoad(tileGrid, point))
     {
         tileGrid[point.X, point.Y].AddLayer(GroundLayerController.GetLayerByIndex(LayerType.ROADDECALS, (int)layerType + indexOffset));
     }
 }
        private void AddTurningArrows(Tile[,] tileGrid, Point expandedPoint, int offset)
        {
            Point leftP  = new Point(expandedPoint.X - 1 - offset, expandedPoint.Y);
            Point upP    = new Point(expandedPoint.X + 1, expandedPoint.Y - 1 - offset);
            Point rightP = new Point(expandedPoint.X + 2 + offset, expandedPoint.Y + 1);
            Point downP  = new Point(expandedPoint.X, expandedPoint.Y + 2 + offset);

            bool left;
            bool up;
            bool right;
            bool down;

            left  = CreatingWorld.IsRoad(tileGrid, leftP);
            up    = CreatingWorld.IsRoad(tileGrid, upP);
            right = CreatingWorld.IsRoad(tileGrid, rightP);
            down  = CreatingWorld.IsRoad(tileGrid, downP);

            if (left && up && right && down)
            {
                AddArrow(tileGrid, leftP, ArrowType.ARROWLFR, 0);
                AddArrow(tileGrid, upP, ArrowType.ARROWLFR, 1);
                AddArrow(tileGrid, rightP, ArrowType.ARROWLFR, 2);
                AddArrow(tileGrid, downP, ArrowType.ARROWLFR, 3);
            }

            if (left && up && right && (!down))
            {
                AddArrow(tileGrid, leftP, ArrowType.ARROWLF, 0);
                AddArrow(tileGrid, upP, ArrowType.ARROWLR, 1);
                AddArrow(tileGrid, rightP, ArrowType.ARROWRF, 2);
            }

            if (up && right && down && (!left))
            {
                AddArrow(tileGrid, upP, ArrowType.ARROWLF, 1);
                AddArrow(tileGrid, rightP, ArrowType.ARROWLR, 2);
                AddArrow(tileGrid, downP, ArrowType.ARROWRF, 3);
            }

            if (right && down && left && (!up))
            {
                AddArrow(tileGrid, leftP, ArrowType.ARROWRF, 0);
                AddArrow(tileGrid, rightP, ArrowType.ARROWLF, 2);
                AddArrow(tileGrid, downP, ArrowType.ARROWLR, 3);
            }
            if (down && left && up && (!right))
            {
                AddArrow(tileGrid, leftP, ArrowType.ARROWLR, 0);
                AddArrow(tileGrid, upP, ArrowType.ARROWRF, 1);
                AddArrow(tileGrid, downP, ArrowType.ARROWLF, 3);
            }
        }
Esempio n. 3
0
 public bool NextTileAdd(int tileX, int tileY, int cLayer, out Tile tile, Tile[,] tileGrid)
 {
     if (CreatingWorld.TileLegitX(tileX) && CreatingWorld.TileLegitY(tileY))
     {
         tile = tileGrid[tileX, tileY];
         if (tile.GetBaseSmoothingLayer() > cLayer)
         {
             return(true);
         }
     }
     tile = null;
     return(false);
 }
Esempio n. 4
0
        private bool CheckRoadCorner(int x, int y, Tile[,] tileGrid)
        {
            bool check = false;

            if (CreatingWorld.TileLegitX(x) && CreatingWorld.TileLegitY(y))
            {
                Tile tile = tileGrid[x, y];
                if (tile.IsRoad())
                {
                    check = true;
                }
            }
            return(check);
        }
        private int CountNeighbourRoadsNormalMap(Tile[,] tileGrid, Point point)
        {
            int amount = 0;

            Point nextPoint;

            //only checking in four directions;
            for (int i = 2; i < 5; i += 1)
            {
                nextPoint = AngleStuff.AddPointToDirection(point, i);
                if (CreatingWorld.IsRoad(tileGrid, nextPoint))
                {
                    amount++;
                }
            }
            return(amount);
        }
Esempio n. 6
0
        private void FixSpot(Point point, Tile[,] tileGrid)
        {
            Point nextPoint = point;

            for (int i = 2; i < 7; i += 1)
            {
                if (CreatingWorld.IsRoad(tileGrid, nextPoint))
                {
                    int id = tileGrid[nextPoint.X, nextPoint.Y].tileLogistic.roadId;
                    if (id < 12) //Lets try do every road
                    {
                        LandType landtype = tileGrid[nextPoint.X, nextPoint.Y].tileLogistic.landType;
                        tileGrid[nextPoint.X, nextPoint.Y].SetTileLogistic(TileLogisticsController.GetTileLogistic(landtype, id + 12));
                    }
                }
                nextPoint = AngleStuff.AddPointToDirection(point, i);
            }
        }
Esempio n. 7
0
        private Boolean CheckRoad(int x, int y, int dir, Tile[,] tileGrid)
        {
            Tile tile;

            if (CreatingWorld.TileLegitX(x) && CreatingWorld.TileLegitY(y))
            {
                tile = tileGrid[x, y];
                if (tile.IsRoad())
                {
                    if (dir > 0)
                    {
                        return(CheckCorners(x, y, dir, tileGrid));
                    }
                    else
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
Esempio n. 8
0
        private bool CheckCorners(int x, int y, int dir, Tile[,] tileGrid)
        {
            bool isRoad = true;

            if (CreatingWorld.TileLegitX(x) && CreatingWorld.TileLegitY(y))
            {
                if (dir == 1)     //Northwest
                {
                    if (CreatingWorld.TileLegitX(x + 1) && CreatingWorld.TileLegitY(y))
                    {
                        if (CheckRoadCorner(x + 1, y, tileGrid) == false)
                        {
                            isRoad = false;
                        }
                    }
                    if (CreatingWorld.TileLegitX(x) && CreatingWorld.TileLegitY(y + 1))
                    {
                        if (CheckRoadCorner(x, y + 1, tileGrid) == false)
                        {
                            isRoad = false;
                        }
                    }
                }
                if (dir == 2) //Northeast
                {
                    if (CreatingWorld.TileLegitX(x - 1) && CreatingWorld.TileLegitY(y))
                    {
                        if (CheckRoadCorner(x - 1, y, tileGrid) == false)
                        {
                            isRoad = false;
                        }
                    }
                    if (CreatingWorld.TileLegitX(x) && CreatingWorld.TileLegitY(y + 1))
                    {
                        if (CheckRoadCorner(x, y + 1, tileGrid) == false)
                        {
                            isRoad = false;
                        }
                    }
                }
                if (dir == 3) //SouthEast
                {
                    if (CreatingWorld.TileLegitX(x - 1) && CreatingWorld.TileLegitY(y))
                    {
                        if (CheckRoadCorner(x - 1, y, tileGrid) == false)
                        {
                            isRoad = false;
                        }
                    }
                    if (CreatingWorld.TileLegitX(x) && CreatingWorld.TileLegitY(y - 1))
                    {
                        if (CheckRoadCorner(x, y - 1, tileGrid) == false)
                        {
                            isRoad = false;
                        }
                    }
                }
                if (dir == 4) //Southwest
                {
                    if (CreatingWorld.TileLegitX(x + 1) && CreatingWorld.TileLegitY(y))
                    {
                        if (CheckRoadCorner(x + 1, y, tileGrid) == false)
                        {
                            isRoad = false;
                        }
                    }
                    if (CreatingWorld.TileLegitX(x) && CreatingWorld.TileLegitY(y - 1))
                    {
                        if (CheckRoadCorner(x, y - 1, tileGrid) == false)
                        {
                            isRoad = false;
                        }
                    }
                }
            }
            return(isRoad);
        }