public void GenerateMapForEdit(Declarations.IntVector2 mapSize, Declarations.TileType[,] map) { ClearMap(); MapSize = mapSize; Map = new Tile[MapSize.y, MapSize.x]; for (int row = 0; row < MapSize.y; row++) { for (int col = 0; col < MapSize.x; col++) { Vector3 tilePosition = Helpers.GetPositionForTile(row, col); var tileObj = Instantiate(editTile, tilePosition, Quaternion.identity, transform).GetComponent <EditableTile>(); tileObj.SetData(row, col, map[row, col]); Map[row, col] = tileObj; } } }
private static bool ReadMapData(XElement mapElement, out Declarations.IntVector2 mapSize, out Declarations.TileType[,] map, bool canHaveEmptyTiles) { var result = true; var width = mapElement.Attribute(Constants.cst_Width); var height = mapElement.Attribute(Constants.cst_Height); if (width != null && height != null && !string.IsNullOrEmpty(width.Value) && !string.IsNullOrEmpty(height.Value)) { mapSize = new Declarations.IntVector2(int.Parse(width.Value), int.Parse(height.Value)); map = new Declarations.TileType[mapSize.y, mapSize.x]; var lines = mapElement.Value.Trim().Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); if (lines.Count() == mapSize.y) { for (int row = 0; row < mapSize.y; row++) { var line = lines[row].Trim(); if (line.Count() == mapSize.x) { for (int col = 0; col < mapSize.x; col++) { Declarations.TileType tileType; if (Helpers.GetTileType(line[col], out tileType, canHaveEmptyTiles)) { map[row, col] = tileType; } else { return(false); } } } else { return(false); } } return(true); } } mapSize = null; map = null; return(result); }
public void SetBrushSize(float value) { BrushSize = (int)value * 1.4f; CurrectMousePos = new Declarations.IntVector2(-5, -5); UpdateTiles.Invoke(); }
public void ChangeMousePos(Declarations.IntVector2 mousePos) { CurrectMousePos = mousePos; UpdateTiles.Invoke(); }
public void GenerateMap(Declarations.LevelData levelData) { ClearMap(); var startTime = Time.realtimeSinceStartup; MapSize = new Declarations.IntVector2(levelData.MapSize.x + (LeftRightBorderSize * 2), levelData.MapSize.y + TopBorderSize + BotBorderSize); CurrentLevel = levelData; TileTypeMap = new Declarations.TileType[MapSize.y, MapSize.x]; for (int row = 0; row < levelData.MapSize.y; row++) { for (int col = 0; col < levelData.MapSize.x; col++) { TileTypeMap[row + TopBorderSize, col + LeftRightBorderSize] = levelData.Map[row, col]; } } int[,] heightMap = GenerateHeightMapForCurrentLevel(); var heightMapGeneration = Time.realtimeSinceStartup - startTime; Map = new Tile[MapSize.y, MapSize.x]; for (int row = 0; row < MapSize.y; row++) { for (int col = 0; col < MapSize.x; col++) { var tile = GetObjectByTileType(TileTypeMap[row, col]); var tilePosition = Helpers.GetPositionForTile(row - TopBorderSize, col - LeftRightBorderSize); var tileRealPosition = tilePosition; if (TileTypeMap[row, col] == Declarations.TileType.Grass || TileTypeMap[row, col] == Declarations.TileType.Environment) { var randomFactor = GetRandomFactor(heightMap[row, col]); var lift = heightMap[row, col] * 0.4f; lift += UnityEngine.Random.Range(-randomFactor, randomFactor); if (lift > 0) { tileRealPosition.y = lift; } } var tileObj = Instantiate(tile, tileRealPosition, Quaternion.identity, transform).GetComponent <Tile>(); tileObj.SetData(row, col, TileTypeMap[row, col]); tileObj.transform.rotation = Quaternion.Euler(new Vector3(0, (UnityEngine.Random.Range(0, 2) + UnityEngine.Random.Range(0, 2) + UnityEngine.Random.Range(0, 2) + UnityEngine.Random.Range(0, 2) + UnityEngine.Random.Range(0, 2)) * 60, 0)); Map[row, col] = tileObj; if (tileRealPosition.y > 0) { var lifterObj = Instantiate(Lifter, tilePosition, tileObj.transform.rotation, tileObj.transform).GetComponent <Lifter>(); lifterObj.transform.localScale = new Vector3(1, tileRealPosition.y, 1); tileObj.SetLifter(lifterObj); lifterObj.SetTile(tileObj); } } } var tilePlacement = Time.realtimeSinceStartup - startTime - heightMapGeneration; PutObjectives(); RotateSpawner(); var finishingTouches = Time.realtimeSinceStartup - startTime - heightMapGeneration - tilePlacement; Debug.Log("Total Seconds for new map generation: " + (Time.realtimeSinceStartup - startTime)); Debug.Log("Seconds for height map generation: " + heightMapGeneration); Debug.Log("Seconds for tile placement: " + tilePlacement); Debug.Log("Seconds for finishing touches: " + finishingTouches); }