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