public Edge(Vertex nNorthVertex, Vertex nSouthVertex, EdgeOrientation nOrientation, int num, BoardGraphics nGraphics, bool isInWestHalf, float mapX) { graphics = nGraphics; tileList = new List <Tile>(); northVertex = nNorthVertex; southVertex = nSouthVertex; float northX = northVertex.getPosition().x; float northY = northVertex.getPosition().y; float southX = southVertex.getPosition().x; float southY = southVertex.getPosition().y; orientation = nOrientation; centre = new Vector3((northX / 2f) + (southX / 2f), (northY / 2f) + (southY / 2f), 0f); if (isInWestHalf) { secondCentre = new Vector3(centre.x + mapX, centre.y, 0); } else { secondCentre = new Vector3(centre.x - mapX, centre.y, 0); } edgeNumber = num; biomeTransisition = BiomeTransistion.None; }
private void generateWorld() { TempLoader temp = new TempLoader(); graphics = GameObject.Find("BoardObject").GetComponent <BoardGraphics>(); TileManager tileManager = new TileManager(tileI, tileJ, tileSize, graphics, temp); tM = tileManager; continents = new List <Continent>(); generateContinents(tM.getTileList()); generateCountries(); }
public Vertex(Vector3 nPosition, VertOrientation nOrientation, BoardGraphics nGraphics, int num, bool isInWestHalf, float mapX) { position = nPosition; if (isInWestHalf) { secondPosition = new Vector3(position.x + mapX, position.y, position.z); } else { secondPosition = new Vector3(position.x - mapX, position.y, position.z); } orientation = nOrientation; graphics = nGraphics; vertNum = num; isRiver = false; height = -500f; }
public Tile(int q, int r, int s, float xPos, float yPos, int i, int j, int tileNo, BoardGraphics nGraphics, bool inWestHalf, float mapX) { position = new Vector3(xPos, yPos, 0); if (inWestHalf) { phantomPosition = new Vector3(xPos + mapX, yPos, 0); } else { phantomPosition = new Vector3(xPos - mapX, yPos, 0); } graphics = nGraphics; qCoord = q; rCoord = r; sCoord = s; if (q + r + s != 0) { Debug.Log("False"); } iCoord = i; jCoord = j; tileNum = tileNo; vertexList = new Vertex[6]; edgeList = new Edge[6]; biome = Biome.Ocean; feature = BiomeFeatures.None; graphics.buildTile(position, phantomPosition, Biome.Ocean, tileNum); province = null; }
public TileManager(int ntileI, int ntileJ, float ntileSize, BoardGraphics graphics, TempLoader temp) { tileI = ntileI; tileJ = ntileJ; tileSize = ntileSize; graphics.setup(tileI * tileJ); tileHeight = tileSize * 2; tileWidth = Mathf.Sqrt(3) / 2 * tileHeight; mapX = tileWidth * (float)tileI; tileList = new List <Tile>(); vertexList = new List <Vertex>(); edgeList = new List <Edge>(); tileDictQRS = new Dictionary <int, Dictionary <int, Tile> >(); tileDictIJ = new Dictionary <int, Dictionary <int, Tile> >(); Dictionary <int, Tile> rowListQRS; //Q=X, R=Z, S=Y in the old cube coordinates Dictionary <int, Tile> rowListIJ; int tileCount = 0; for (int j = 0; j < tileJ; j++) { rowListIJ = new Dictionary <int, Tile>(); rowListQRS = new Dictionary <int, Tile>(); tileDictQRS.Add(-j, rowListQRS); tileDictIJ.Add(j, rowListIJ); int offset = Mathf.CeilToInt((float)j / 2); for (int i = 0; i < tileI; i++) { float x_Offset; if (j % 2 == 1) { x_Offset = tileWidth; } else { x_Offset = tileWidth / 2; } int q = i + offset; int s = -(i + offset) + j; int r = -j; bool inWestHalf; if (i <= tileI / 2) { inWestHalf = true; } else { inWestHalf = false; } Tile tile = new Tile(q, r, s, tileWidth * i + x_Offset, (tileSize) + (tileHeight * 0.75f * j), i, j, tileCount, graphics, inWestHalf, mapX); //Debug.Log (i+":"+j); tile.addStockList(temp.setUpStockList()); tile.addPriceList(temp.setUpStockList()); rowListIJ.Add(i, tile); rowListQRS.Add(i + offset, tile); tileList.Add(tile); addVerticesToTile(tile, graphics); addEdgesToTile(tile, graphics); tileCount = tileCount + 1; } } this.addEdgesToVertices(); graphics.setUpEdgeNum(edgeList.Count); graphics.setUpVertexNum(vertexList.Count); graphics.buildCollider(tileList[tileList.Count - 1]); this.wrapAroundMap(); }
private void addEdgesToTile(Tile tile, BoardGraphics graphics) { int q = tile.getQ(); int r = tile.getR(); int s = tile.getS(); bool c = false; if (tile.getI() < tileI / 2) { c = true; } //Edge 0 if (containsTile(q + 1, r - 1, s)) { tile.addEdge(0, getTileQRS(q + 1, r - 1, s).getEdge(3)); getTileQRS(q + 1, r - 1, s).getEdge(3).addTile(tile); } else { Edge edge = new Edge(tile.getVertex(0), tile.getVertex(1), EdgeOrientation.NWSE, edgeList.Count, graphics, c, mapX); tile.addEdge(0, edge); edgeList.Add(edge); edge.addTile(tile); } //Edge 1 if (containsTile(q + 1, r, s - 1)) { tile.addEdge(1, getTileQRS(q + 1, r, s - 1).getEdge(4)); getTileQRS(q + 1, r, s - 1).getEdge(4).addTile(tile); } else { Edge edge = new Edge(tile.getVertex(1), tile.getVertex(2), EdgeOrientation.NS, edgeList.Count, graphics, c, mapX); tile.addEdge(1, edge); edgeList.Add(edge); edge.addTile(tile); } //Edge 2 if (containsTile(q, r + 1, s - 1)) { tile.addEdge(2, getTileQRS(q, r + 1, s - 1).getEdge(5)); getTileQRS(q, r + 1, s - 1).getEdge(5).addTile(tile); } else { Edge edge = new Edge(tile.getVertex(2), tile.getVertex(3), EdgeOrientation.NESW, edgeList.Count, graphics, c, mapX); tile.addEdge(2, edge); edgeList.Add(edge); edge.addTile(tile); } //Edge 3 if (containsTile(q - 1, r + 1, s)) { tile.addEdge(3, getTileQRS(q - 1, r + 1, s).getEdge(0)); getTileQRS(q - 1, r + 1, s).getEdge(0).addTile(tile); } else { Edge edge = new Edge(tile.getVertex(4), tile.getVertex(3), EdgeOrientation.NWSE, edgeList.Count, graphics, c, mapX); tile.addEdge(3, edge); edgeList.Add(edge); edge.addTile(tile); } //Edge 4 if (containsTile(q - 1, r, s + 1)) { tile.addEdge(4, getTileQRS(q - 1, r, s + 1).getEdge(1)); getTileQRS(q - 1, r, s + 1).getEdge(1).addTile(tile); } else { Edge edge = new Edge(tile.getVertex(5), tile.getVertex(4), EdgeOrientation.NS, edgeList.Count, graphics, c, mapX); tile.addEdge(4, edge); edgeList.Add(edge); edge.addTile(tile); } //Edge 5 if (containsTile(q, r - 1, s + 1)) { tile.addEdge(5, getTileQRS(q, r - 1, s + 1).getEdge(2)); getTileQRS(q, r - 1, s + 1).getEdge(2).addTile(tile); } else { Edge edge = new Edge(tile.getVertex(0), tile.getVertex(5), EdgeOrientation.NESW, edgeList.Count, graphics, c, mapX); tile.addEdge(5, edge); edgeList.Add(edge); edge.addTile(tile); } }
private void addVerticesToTile(Tile tile, BoardGraphics graphics) { float xPos = tile.getPosition().x; float yPos = tile.getPosition().y; int q = tile.getQ(); int r = tile.getR(); int s = tile.getS(); bool c = false; if (tile.getI() < tileI / 2) { c = true; } //Vertex 0 if (containsTile(q, r - 1, s + 1)) { tile.addVertex(0, getTileQRS(q, r - 1, s + 1).getVertex(2)); } else if (containsTile(q + 1, r - 1, s)) { tile.addVertex(0, getTileQRS(q + 1, r - 1, s).getVertex(4)); } else { Vertex vert = new Vertex(new Vector3(xPos, yPos + tileSize, 0), VertOrientation.Up, graphics, vertexList.Count, c, mapX); tile.addVertex(0, vert); vertexList.Add(vert); } //Vertex 1 if (containsTile(q + 1, r - 1, s)) { tile.addVertex(1, getTileQRS(q + 1, r - 1, s).getVertex(3)); } else if (containsTile(q + 1, r, s - 1)) { tile.addVertex(1, getTileQRS(q + 1, r, s - 1).getVertex(5)); } else { Vertex vert = new Vertex(new Vector3(xPos + (tileWidth / 2), yPos + (tileSize / 2), 0), VertOrientation.Down, graphics, vertexList.Count, c, mapX); tile.addVertex(1, vert); vertexList.Add(vert); } //Vertex 2 if (containsTile(q + 1, r, s - 1)) { tile.addVertex(2, getTileQRS(q + 1, r, s - 1).getVertex(4)); } else if (containsTile(q, r + 1, s - 1)) { tile.addVertex(2, getTileQRS(q, r + 1, s - 1).getVertex(0)); } else { Vertex vert = new Vertex(new Vector3(xPos + (tileWidth / 2), yPos - (tileSize / 2), 0), VertOrientation.Up, graphics, vertexList.Count, c, mapX); tile.addVertex(2, vert); vertexList.Add(vert); } //Vertex 3 if (containsTile(q, r + 1, s - 1)) { tile.addVertex(3, getTileQRS(q, r + 1, s - 1).getVertex(5)); } else if (containsTile(q - 1, r + 1, s)) { tile.addVertex(3, getTileQRS(q - 1, r + 1, s).getVertex(1)); } else { Vertex vert = new Vertex(new Vector3(xPos, yPos - tileSize, 0), VertOrientation.Down, graphics, vertexList.Count, c, mapX); tile.addVertex(3, vert); vertexList.Add(vert); } //Vertex 4 if (containsTile(q - 1, r + 1, s)) { tile.addVertex(4, getTileQRS(q - 1, r + 1, s).getVertex(0)); } else if (containsTile(q - 1, r, s + 1)) { tile.addVertex(4, getTileQRS(q - 1, r, s + 1).getVertex(2)); } else { Vertex vert = new Vertex(new Vector3(xPos - (tileWidth / 2), yPos - (tileSize / 2), 0), VertOrientation.Up, graphics, vertexList.Count, c, mapX); tile.addVertex(4, vert); vertexList.Add(vert); } //Vertex 5 if (containsTile(q - 1, r, s + 1)) { tile.addVertex(5, getTileQRS(q - 1, r, s + 1).getVertex(1)); } else if (containsTile(q, r - 1, s + 1)) { tile.addVertex(5, getTileQRS(q, r - 1, s + 1).getVertex(3)); } else { Vertex vert = new Vertex(new Vector3(xPos - (tileWidth / 2), yPos + (tileSize / 2), 0), VertOrientation.Down, graphics, vertexList.Count, c, mapX); tile.addVertex(5, vert); vertexList.Add(vert); } }
void Awake() { this.Graphics = GetComponent <BoardGraphics>(); }