diff --git a/core/src/mindustry/editor/MapEditor.java b/core/src/mindustry/editor/MapEditor.java index 768e1dd013..aa71088b6d 100644 --- a/core/src/mindustry/editor/MapEditor.java +++ b/core/src/mindustry/editor/MapEditor.java @@ -68,6 +68,22 @@ public class MapEditor{ } public void updateRenderer(){ + Tiles tiles = world.tiles; + Seq builds = new Seq<>(); + + for(int i = 0; i < tiles.width * tiles.height; i++){ + Tile tile = tiles.geti(i); + var build = tile.build; + if(build != null){ + builds.add(build); + } + tiles.seti(i, new EditorTile(tile.x, tile.y, tile.floorID(), tile.overlayID(), build == null ? tile.blockID() : 0)); + } + + for(var build : builds){ + tiles.get(build.tileX(), build.tileY()).setBlock(build.block, build.team, build.rotation, () -> build); + } + renderer.resize(width(), height()); } diff --git a/core/src/mindustry/editor/MapEditorDialog.java b/core/src/mindustry/editor/MapEditorDialog.java index 17f2bf15d7..0fd6fcca25 100644 --- a/core/src/mindustry/editor/MapEditorDialog.java +++ b/core/src/mindustry/editor/MapEditorDialog.java @@ -278,6 +278,8 @@ public class MapEditorDialog extends Dialog implements Disposable{ unit.spawnedByCore = true; player.unit(unit); } + + player.checkSpawn(); }); } diff --git a/core/src/mindustry/editor/SectorGenerateDialog.java b/core/src/mindustry/editor/SectorGenerateDialog.java index f0f80f1797..6c1834c8c8 100644 --- a/core/src/mindustry/editor/SectorGenerateDialog.java +++ b/core/src/mindustry/editor/SectorGenerateDialog.java @@ -87,7 +87,16 @@ public class SectorGenerateDialog extends BaseDialog{ ui.loadAnd(() -> { editor.clearOp(); editor.load(() -> { - world.loadSector(planet.sectors.get(sector), seed); + var sectorobj = planet.sectors.get(sector); + + //remove presets during generation: massive hack, but it works + var preset = sectorobj.preset; + sectorobj.preset = null; + + world.loadSector(sectorobj, seed); + + sectorobj.preset = preset; + editor.updateRenderer(); state.rules.sector = null; //clear extra filters diff --git a/core/src/mindustry/world/Tiles.java b/core/src/mindustry/world/Tiles.java index a996757256..6aac9c6ec4 100644 --- a/core/src/mindustry/world/Tiles.java +++ b/core/src/mindustry/world/Tiles.java @@ -39,6 +39,11 @@ public class Tiles implements Iterable{ array[y*width + x] = tile; } + /** set a tile at a raw array position; does not range-check. use with caution. */ + public void seti(int i, Tile tile){ + array[i] = tile; + } + /** @return whether these coordinates are in bounds */ public boolean in(int x, int y){ return x >= 0 && x < width && y >= 0 && y < height;