public static HexTileDirection GetInverse(this HexTileDirection p_hexTileDirection) { switch (p_hexTileDirection) { case HexTileDirection.North: return(HexTileDirection.South); case HexTileDirection.NorthEast: return(HexTileDirection.SouthWest); case HexTileDirection.SouthEast: return(HexTileDirection.NorthWest); case HexTileDirection.South: return(HexTileDirection.North); case HexTileDirection.SouthWest: return(HexTileDirection.NorthEast); case HexTileDirection.NorthWest: return(HexTileDirection.SouthEast); default: return(HexTileDirection.North); } }
private HexTileDirection GetNextClockwise(HexTileDirection p_direction) { if (p_direction == HexTileDirection.NorthWest) { return(HexTileDirection.North); } else { return((HexTileDirection)(((int)p_direction) + 1)); } }
public void HandleSelection(Vector3 p_inputPosition, HexTile[] p_candidateTiles) { HexTile selectedTile = null; float distance = float.MaxValue; for (int i = 0; i < p_candidateTiles.Length; i++) { float currentDistance = Vector2.Distance(p_inputPosition, p_candidateTiles[i].transform.position); if (currentDistance < distance) { selectedTile = p_candidateTiles[i]; distance = currentDistance; } } HexTileDirection selectionDirection = FindSelectionDirection(p_inputPosition, selectedTile); _selectedHexTiles = GetTilesFromConnectionDirection(selectionDirection, selectedTile); ConstructSelectionTiles(_selectedHexTiles); }
private HexTile[] GetTilesFromConnectionDirection(HexTileDirection p_selectionDirection, HexTile p_selectedTile) { HexTile[] result = new HexTile[3]; result[0] = p_selectedTile; while (p_selectedTile.ConnectedTiles[(int)p_selectionDirection] == null) { p_selectionDirection = GetNextClockwise(p_selectionDirection); } result[1] = p_selectedTile.ConnectedTiles[(int)p_selectionDirection]; while (p_selectedTile.ConnectedTiles[(int)p_selectionDirection] == null || !p_selectedTile.ConnectedTiles[(int)p_selectionDirection].HasConnection(result[1])) { p_selectionDirection = GetNextClockwise(p_selectionDirection); } result[2] = p_selectedTile.ConnectedTiles[(int)p_selectionDirection]; return(result); }
public HexTile GetConnectedTile(HexTileDirection p_direction) { return(ConnectedTiles[(int)p_direction]); }
public void SetConnection(HexTileDirection p_direction, HexTile p_tile) { ConnectedTiles[(int)p_direction] = p_tile; }