/// <summary> /// initzilzes a new tile map manager /// </summary> /// <param name="settings">Generator settings for the tile map generator</param> /// <param name="spreads">Areas that should be placed during the map generation</param> public TileMapManager(GeneratorSettings settings, AreaSpread[] spreads) { this.settings = settings; this.spreads = spreads; maps = new List <StreamedTileMap>(); generator = new TileMapGenerator(); }
/// <summary> /// Changes to level to map that will be generated based on the current position /// </summary> /// <param name="settings">Setting to generate the new map</param> /// <param name="tileColumn">Tile column index</param> /// <param name="tileRow">Tile row index</param> /// <param name="disposeCurrentMap">Disposes the current level when true</param> public void Changelevel(GeneratorSettings settings, int tileColumn, int tileRow, bool disposeCurrentMap) { this.settings = settings; if (!disposeCurrentMap && currentLevel != null) { maps.Add(CurrentLevel); } generator = new TileMapGenerator(); UnSub(); currentLevel = generator.GenerateMap(settings, spreads, tileColumn, tileRow); Sub(); GridChanged?.Invoke(this, new GridEventArgs(currentLevel.GridRow, currentLevel.GridColumn, -1, -1, false)); }
/// <summary> /// Initzializes a new streamed tile map /// </summary> /// <param name="generator">Tile map generator</param> /// <param name="spawnTileRow">Tile row index</param> /// <param name="spawnTileColumn">Tile column index</param> /// <param name="gridColumnCount">Number of grid columns</param> /// <param name="gridRowCount">Number of grid rows</param> /// <param name="tileRowCount">Number of tile rows per grid</param> /// <param name="tileColumnCount">Number of tile columns per grid</param> /// <param name="tileSize">Tile size in pixel</param> public StreamedTileMap(TileMapGenerator generator, int spawnTileRow, int spawnTileColumn, int gridColumnCount, int gridRowCount, int tileRowCount, int tileColumnCount, int tileSize) { maps = new List <TileMapPart>(); this.gridColumnCount = gridColumnCount; this.gridRowCount = gridRowCount; this.tileSize = tileSize; this.tileRowCount = tileRowCount; this.tileColumnCount = tileColumnCount; this.generator = generator; currentMapIndex = 4; tileRow = spawnTileRow; tileColumn = spawnTileColumn; gridRow = (int)Math.Floor((double)spawnTileRow / (double)tileRowCount); gridColumn = (int)Math.Floor((double)spawnTileColumn / (double)tileColumnCount); gridRow = TileMathHelper.FixTileIndex(gridRow, gridRowCount); gridColumn = TileMathHelper.FixTileIndex(gridColumn, gridColumnCount); }