private void SetFOWCell(HexCell cell) { Vector3Int tilemapPosition = HexCoordinates.CoordinatesToTilemapCoordinates(cell.coordinates); switch (cell.FOWMode) { case FOWMode.Hidden: hiddenTilemap.SetTile(tilemapPosition, hidden); outOfViewTilemap.SetTile(tilemapPosition, outOfView); if (cell.Unit) { cell.Unit.ShowUnit(false); } break; case FOWMode.Viewed: hiddenTilemap.SetTile(tilemapPosition, null); outOfViewTilemap.SetTile(tilemapPosition, outOfView); if (cell.Unit) { cell.Unit.ShowUnit(false); } break; case FOWMode.InView: hiddenTilemap.SetTile(tilemapPosition, null); outOfViewTilemap.SetTile(tilemapPosition, null); if (cell.Unit) { cell.Unit.ShowUnit(true); } break; } }
Stronghold AddStronghold(HexCell cell, SetupData setupData) { Vector3Int tilemapPosition = HexCoordinates.CoordinatesToTilemapCoordinates(cell.coordinates); cell.HasStronghold = true; string strongholdName = setupData.strongholdNames[0]; if (setupData.strongholdNames.Count > 1) { setupData.strongholdNames.RemoveAt(0); } Stronghold newStronghold = new Stronghold(strongholdName, cell, setupData.difficultySettings, worldUIView.EnablePOIInteraction); cell.PointOfInterest = newStronghold; List <HexDirection> openwaterConnections = new List <HexDirection>(); for (HexDirection d = HexDirection.NE; d <= HexDirection.NW; d++) { HexCell neighbor = cell.GetNeighbor(d); if (neighbor && neighbor.IsOcean) { openwaterConnections.Add(d); } } HexDirection dir = Utility.ReturnRandom(openwaterConnections); featuresTilemap.SetTile(tilemapPosition, strongholdTiles[(int)dir]); return(newStronghold); }
Harbor AddHarbor(HexCell cell, SetupData setupData) { Vector3Int tilemapPosition = HexCoordinates.CoordinatesToTilemapCoordinates(cell.coordinates); cell.HasHarbor = true; string harborName = setupData.islandNames[0]; if (setupData.islandNames.Count > 1) { setupData.islandNames.RemoveAt(0); } bool hasTavern = setupData.harborTavernChance > HexMetrics.SampleHashGrid(cell.Position).b; bool hasMerchant = setupData.harborMerchantChance > HexMetrics.SampleHashGrid(cell.Position).c; Harbor newHarbor = new Harbor(harborName, cell, worldUIView.EnablePOIInteraction, hasMerchant, hasTavern); cell.PointOfInterest = newHarbor; List <HexDirection> openwaterConnections = new List <HexDirection>(); for (HexDirection d = HexDirection.NE; d <= HexDirection.NW; d++) { HexCell neighbor = cell.GetNeighbor(d); if (neighbor && neighbor.IsOcean) { openwaterConnections.Add(d); } } HexDirection dir = Utility.ReturnRandom(openwaterConnections); featuresTilemap.SetTile(tilemapPosition, harborTiles[(int)dir]); return(newHarbor); }
/// <summary> /// Paints terrain on the tilemap /// </summary> /// <param name="cell"></param> private void SetTerrainCellVisual(HexCell cell) { Vector3Int tilemapPosition = HexCoordinates.CoordinatesToTilemapCoordinates(cell.coordinates); TileBase tile; int cellBitmask = cell.Bitmask; if (cell.IsShore) //Edge of islands { tile = edgeTiles[cell.Bitmask]; } else if (cell.IsOcean) //Ocean tile { //tile = Utility.ReturnRandom(oceanTiles); //For now ignore ocean tiles tile = null; } else //If over 62 (full land tile with all neighbors also landtiles) { tile = Utility.ReturnRandom(landTiles); } terrainTilemap.SetTile(tilemapPosition, tile); }