public virtual void setAdjacentHex(HexEdgeEnum edge, MapHex hex) { if (hex == this) { throw new Exception("A map hex can't be set adjacent to itself."); } }
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(); } }
public Boolean hasAdajacentHex(HexEdgeEnum edge) { return(getAdjacentHex(edge) != PLACEHOLDER_HEX); }
public MapHex getAdjacentHex(HexEdgeEnum edge) { return(adjacentHexes[edge]); }
public override void setAdjacentHex(HexEdgeEnum edge, MapHex hex) { Debug.LogWarning("Called setAdjacentHex for ImmutableMapHex"); }