/// <summary> /// Changes to level to map that will be generated based on the current position /// </summary> /// <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(int tileColumn, int tileRow, bool disposeCurrentMap) { if (!disposeCurrentMap && currentLevel != null) { maps.Add(CurrentLevel); } UnSub(); currentLevel = generator.GenerateMap(tileColumn, tileRow); Sub(); GridChanged?.Invoke(this, new GridEventArgs(currentLevel.GridRow, currentLevel.GridColumn, -1, -1, false)); }
/// <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> /// Starts new map generation /// </summary> /// <param name="currentTileRow">Tile row index</param> /// <param name="currentTileColumn">tile column index</param> private void Resize(int currentTileRow, int currentTileColumn) { if (generator != null) { if (newMap != null) { newMapAvalible = true; if (TryMapUpdate(gridRow, gridColumn)) { return; } } newMapAvalible = false; newMapRequested = true; new Thread(() => { newMap = generator.GenerateMap(currentTileColumn, currentTileRow); newMapAvalible = true; }).Start(); } }