Example #1
0
 public virtual void setAdjacentHex(HexEdgeEnum edge, MapHex hex)
 {
     if (hex == this)
     {
         throw new Exception("A map hex can't be set adjacent to itself.");
     }
 }
Example #2
0
    public Vector3 calculateAdajcentPostition(HexEdgeEnum edge)
    {
        /*
         * for (int i = 0; i < mapHexHeight; i++) {
         *  float y = i + initialOffsetY;
         *  for (int j = 0; j < mapHexWidth; j++) {
         *      float x = j + initialOffsetX;
         *      GameObject tempGameObject = Instantiate(HexTilePrefab);
         *
         *      if (randomizeColors) {
         *          tempGameObject.GetComponent<MeshRenderer>().sharedMaterial = getRandomHexColorMaterial();
         *      }
         *
         *      if (i % 2 == 0) {
         *          tempGameObject.transform.position = new Vector3(x * hexTileOffset_X, y * hexTileOffset_Y, 0);
         *      } else {
         *          tempGameObject.transform.position = new Vector3(x * hexTileOffset_X + hexTileOffset_X / 2.0f, y * hexTileOffset_Y, 0);
         *      }
         *  }
         * }
         */
        Vector3 position = this.gameObject.transform.position;

        switch (edge)
        {
        case HexEdgeEnum.LEFT:
            return(new Vector3(position.x - hexTileOffset_X, position.y, position.z));

        case HexEdgeEnum.RIGHT:
            return(new Vector3(position.x + hexTileOffset_X, position.y, position.z));

        case HexEdgeEnum.TOP_LEFT:
            return(new Vector3(position.x - getSideLength(), position.y + ROOT_3 * getSideLength(), position.z));

        case HexEdgeEnum.TOP_RIGHT:
            return(new Vector3(position.x + getSideLength(), position.y + ROOT_3 * getSideLength(), position.z));

        case HexEdgeEnum.BOTTOM_LEFT:
            return(new Vector3(position.x - getSideLength(), position.y - ROOT_3 * getSideLength(), position.z));

        case HexEdgeEnum.BOTTOM_RIGHT:
            return(new Vector3(position.x + getSideLength(), position.y - ROOT_3 * getSideLength(), position.z));

        default:
            return(new Vector3());
        }
    }
    void GenerateHexMapExperimental()
    {
        intializeReferenceHexMap();

        UnityMapHex startHex = new UnityMapHex(Instantiate(HexTilePrefab));

        if (randomizeColors)
        {
            startHex.gameObject.GetComponent <MeshRenderer>().sharedMaterial = getRandomHexColorMaterial();
        }

        // TODO: set edges on these (and any new edges that have been "met" upon placement ...?)

        UnityMapHex nextHex = new UnityMapHex(Instantiate(HexTilePrefab));
        HexEdgeEnum edge    = HexEdgeEnum.LEFT;

        nextHex.gameObject.transform.position = startHex.calculateAdajcentPostition(edge);
        if (randomizeColors)
        {
            nextHex.gameObject.GetComponent <MeshRenderer>().sharedMaterial = getRandomHexColorMaterial();
        }

        nextHex = new UnityMapHex(Instantiate(HexTilePrefab));
        edge    = HexEdgeEnum.RIGHT;
        nextHex.gameObject.transform.position = startHex.calculateAdajcentPostition(edge);
        if (randomizeColors)
        {
            nextHex.gameObject.GetComponent <MeshRenderer>().sharedMaterial = getRandomHexColorMaterial();
        }

        nextHex = new UnityMapHex(Instantiate(HexTilePrefab));
        edge    = HexEdgeEnum.TOP_LEFT;
        nextHex.gameObject.transform.position = startHex.calculateAdajcentPostition(edge);
        if (randomizeColors)
        {
            nextHex.gameObject.GetComponent <MeshRenderer>().sharedMaterial = getRandomHexColorMaterial();
        }

        nextHex = new UnityMapHex(Instantiate(HexTilePrefab));
        edge    = HexEdgeEnum.TOP_RIGHT;
        nextHex.gameObject.transform.position = startHex.calculateAdajcentPostition(edge);
        if (randomizeColors)
        {
            nextHex.gameObject.GetComponent <MeshRenderer>().sharedMaterial = getRandomHexColorMaterial();
        }

        nextHex = new UnityMapHex(Instantiate(HexTilePrefab));
        edge    = HexEdgeEnum.BOTTOM_LEFT;
        nextHex.gameObject.transform.position = startHex.calculateAdajcentPostition(edge);
        if (randomizeColors)
        {
            nextHex.gameObject.GetComponent <MeshRenderer>().sharedMaterial = getRandomHexColorMaterial();
        }

        nextHex = new UnityMapHex(Instantiate(HexTilePrefab));
        edge    = HexEdgeEnum.BOTTOM_RIGHT;
        nextHex.gameObject.transform.position = startHex.calculateAdajcentPostition(edge);
        if (randomizeColors)
        {
            nextHex.gameObject.GetComponent <MeshRenderer>().sharedMaterial = getRandomHexColorMaterial();
        }
    }
Example #4
0
 public Boolean hasAdajacentHex(HexEdgeEnum edge)
 {
     return(getAdjacentHex(edge) != PLACEHOLDER_HEX);
 }
Example #5
0
 public MapHex getAdjacentHex(HexEdgeEnum edge)
 {
     return(adjacentHexes[edge]);
 }
Example #6
0
 public override void setAdjacentHex(HexEdgeEnum edge, MapHex hex)
 {
     Debug.LogWarning("Called setAdjacentHex for ImmutableMapHex");
 }