Beispiel #1
0
    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();
    }
Beispiel #3
0
 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;
 }
Beispiel #4
0
    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;
    }
Beispiel #5
0
    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();
    }
Beispiel #6
0
    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);
        }
    }
Beispiel #7
0
    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);
        }
    }
Beispiel #8
0
 void Awake()
 {
     this.Graphics = GetComponent <BoardGraphics>();
 }