void Default() { selectorTilemap.SetTile(lastSelectedCell, null); // Get location Vector3 point = Camera.main.ScreenToWorldPoint(Input.mousePosition); // Get tile at that point Vector3Int selectedCell = baseTilemap.WorldToCell(point); lastSelectedCell = selectedCell; // Update UI if (selectedCell.x >= 0 && selectedCell.y >= 0) { uiManager.UpdateTextInfo(mapManager.GetWorldTileData()[selectedCell.x, selectedCell.y]); } if (Input.GetMouseButtonDown(0)) { if (!EventSystem.current.IsPointerOverGameObject()) { // Selection WorldTileData selectedTile = mapManager.GetWorldTileData()[selectedCell.x, selectedCell.y]; uiManager.UpdateActionInfo(selectedTile.actionList); updateAction = TileSelected; } } selectorTilemap.SetTile(selectedCell, selectorTile); }
public void TileSelected(WorldTile tile, WorldTileData tileData) { selectedImage.sprite = tile.sprite; selectedDescription.text = tile.description; selectedTurnsAlive.text = "Turns alive: " + tileData.turnsAlive.ToString(); selectedWaterLevel.text = "Water: " + tileData.WaterAmount().ToString(); }
public void UpdateTextInfo(WorldTileData tileData) { positionText.text = "Position: " + tileData.position.x.ToString() + ", " + tileData.position.y.ToString(); floorTileText.text = "Floor Tile Type: " + tileData.floorType; buildTileText.text = "Build Tile Type: " + tileData.buildType; traversableText.text = "Traversable: " + tileData.traversable.ToString(); openText.text = "Open: " + tileData.openForPlacement.ToString(); floorNoiseText.text = "Noise: " + tileData.floorNoiseValue.ToString(); buildNoiseText.text = "Build: " + tileData.buildNoiseValue.ToString(); }
private SaveData BuildSave() { var save = new SaveData { worldData = new WorldData() { tileData = new List <WorldTileData>(), areaData = new List <WorldAreaData>(), regionData = new List <WorldRegionData>(), } }; _tileCount = 1; _areaCount = 1; _regionCount = 1; foreach (var worldTile in _tiles) { var(areaId, area, region) = SaveArea(worldTile.worldArea); var tileData = new WorldTileData() { id = _tileCount, position = worldTile.position, biome = worldTile.biome, weatherEffects = worldTile.weatherEffects, type = worldTile.type, terrain = worldTile.terrain, area = areaId }; save.worldData.tileData.Add(tileData); if (area != null) { save.worldData.areaData.Add(area); } if (region != null) { save.worldData.regionData.Add(region); } _tileCount += 1; } _savedAreasIdMap.Clear(); _savedRegionsIdMap.Clear(); return(save); }
void GenerateMapData(int width, int height) { worldTileData = new WorldTileData[width, height]; float[,] floorNoiseMap = Noise.GenerateNoiseMap(width, height, seed, scale, octaves, persistence, lacunarity, offset); float[,] buildNoiseMap = Noise.GenerateNoiseMap(width, height, buildSeed, buildScale, buildOctaves, buildPersistence, buildLacunarity, buildOffset); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { if (floorNoiseMap[x, y] > 0.5) { if (buildNoiseMap[x, y] > 0.6) { if (buildNoiseMap[x, y] > 0.7) { worldTileData[x, y] = new WorldTileData(new Vector3Int(x, y, 0), grassTile, treeTile, floorNoiseMap[x, y], buildNoiseMap[x, y]); } else if (buildNoiseMap[x, y] > 0.65) { worldTileData[x, y] = new WorldTileData(new Vector3Int(x, y, 0), grassTile, foodTile, floorNoiseMap[x, y], buildNoiseMap[x, y]); } else { worldTileData[x, y] = new WorldTileData(new Vector3Int(x, y, 0), grassTile, stoneTile, floorNoiseMap[x, y], buildNoiseMap[x, y]); } } else { worldTileData[x, y] = new WorldTileData(new Vector3Int(x, y, 0), grassTile, defaultOpenTile, floorNoiseMap[x, y], buildNoiseMap[x, y]); } } else { worldTileData[x, y] = new WorldTileData(new Vector3Int(x, y, 0), waterTile, defaultOpenTile, floorNoiseMap[x, y], buildNoiseMap[x, y]); } } } }
// Start is called before the first frame update void Start() { Screen.SetResolution(1024, 768, false); // components audioSource = GetComponent <AudioSource>(); // populate player parameters actionPointsLeft = baseActionPoints; waterAvailable = startingWater; // populate tile data Vector3Int dimensions = gameTiles.size; sizeXTiles = dimensions[0]; xMin = gameTiles.cellBounds.xMin; xMax = gameTiles.cellBounds.xMax; sizeYTiles = dimensions[1]; yMin = gameTiles.cellBounds.yMin; yMax = gameTiles.cellBounds.yMax; totalTiles = sizeXTiles * sizeYTiles; worldTilesData = new WorldTileData[sizeXTiles, sizeYTiles]; foreach (Vector3Int pos in gameTiles.cellBounds.allPositionsWithin) { int x = pos[0] - xMin; int y = pos[1] - yMin; WorldTile tile = GetTileAtPoint(pos); worldTilesData[x, y] = new WorldTileData(new Vector3Int(pos[0], pos[1], pos[2]), tile); } // update HUD with starting values hud.UpdateStatusIndicators(actionPointsLeft, turnsUsed, waterAvailable); }