diff --git a/core/src/mindustry/editor/MapEditorDialog.java b/core/src/mindustry/editor/MapEditorDialog.java index 316d29f5e6..ba9fe16325 100644 --- a/core/src/mindustry/editor/MapEditorDialog.java +++ b/core/src/mindustry/editor/MapEditorDialog.java @@ -263,7 +263,9 @@ public class MapEditorDialog extends Dialog implements Disposable{ if(player.team().core() == null){ player.set(world.width() * tilesize/2f, world.height() * tilesize/2f); - player.unit(UnitTypes.alpha.spawn(player.team(), player.x, player.y)); + var unit = UnitTypes.alpha.spawn(player.team(), player.x, player.y); + unit.spawnedByCore = true; + player.unit(unit); } }); } diff --git a/core/src/mindustry/editor/MapGenerateDialog.java b/core/src/mindustry/editor/MapGenerateDialog.java index f6a87f77b1..0c4b553a87 100644 --- a/core/src/mindustry/editor/MapGenerateDialog.java +++ b/core/src/mindustry/editor/MapGenerateDialog.java @@ -285,30 +285,32 @@ public class MapGenerateDialog extends BaseDialog{ void showAdd(){ BaseDialog selection = new BaseDialog("@add"); - selection.setFillParent(false); - selection.cont.defaults().size(210f, 60f); - int i = 0; - for(Prov gen : filterTypes){ - GenerateFilter filter = gen.get(); + selection.cont.pane(p -> { + p.marginRight(14); + p.defaults().size(210f, 60f); + int i = 0; + for(Prov gen : filterTypes){ + GenerateFilter filter = gen.get(); - if((filter.isPost() && applied)) continue; + if((filter.isPost() && applied)) continue; - selection.cont.button(filter.name(), () -> { - filters.add(filter); + p.button(filter.name(), () -> { + filters.add(filter); + rebuildFilters(); + update(); + selection.hide(); + }); + if(++i % 2 == 0) p.row(); + } + + p.button("@filter.defaultores", () -> { + maps.addDefaultOres(filters); rebuildFilters(); update(); selection.hide(); }); - if(++i % 2 == 0) selection.cont.row(); - } - - selection.cont.button("@filter.defaultores", () -> { - maps.addDefaultOres(filters); - rebuildFilters(); - update(); - selection.hide(); - }); - + }).get().setScrollingDisabled(true, false); + F selection.addCloseButton(); selection.show(); } diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index d602f1ec15..2389b22f7d 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -123,6 +123,7 @@ public class Universe{ } /** @return the last selected loadout for this specific core type. */ + @Nullable public Schematic getLoadout(CoreBlock core){ //for tools - schem if(schematics == null) return Loadouts.basicShard; @@ -134,7 +135,7 @@ public class Universe{ Seq all = schematics.getLoadouts(core); Schematic schem = all.find(s -> s.file != null && s.file.nameWithoutExtension().equals(file)); - return schem == null ? all.first() : schem; + return schem == null ? all.any() ? all.first() : null : schem; } /** Runs possible events. Resets event counter. */ diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index d2b38efe2c..a72d4669e1 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -299,6 +299,10 @@ public class UnitType extends UnlockableContent{ } } + if(weapons.isEmpty()){ + range = maxRange = 0f; + } + if(mechStride < 0){ mechStride = 4f + (hitSize -8f)/2.1f; } diff --git a/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java b/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java index 77ae944639..b9e05308e3 100644 --- a/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java +++ b/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java @@ -5,6 +5,7 @@ import arc.func.*; import arc.scene.ui.*; import arc.scene.ui.layout.*; import arc.struct.*; +import mindustry.content.*; import mindustry.ctype.*; import mindustry.game.*; import mindustry.gen.*; @@ -105,6 +106,7 @@ public class LaunchLoadoutDialog extends BaseDialog{ int cols = Math.max((int)(Core.graphics.getWidth() / Scl.scl(230)), 1); ButtonGroup