diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionEditor.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionEditor.java index 9e581bda..6a0034a7 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionEditor.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionEditor.java @@ -367,11 +367,13 @@ public class DynamicRegionEditor implements SWPlayer.Component, Listener { checkSpawnRegionAndDelete(Tile.TILE_NP); checkSpawnRegionAndDelete(Tile.TILE_PN); checkSpawnRegionAndDelete(Tile.TILE_PP); + + DynamicRegionSystem.INSTANCE.get(Tile.ZERO).getArea().place(new PasteBuilder(), false); + DynamicRegionSystem.INSTANCE.get(Tile.TILE_NZ).getArea().place(new PasteBuilder(), false); + DynamicRegionSystem.INSTANCE.get(Tile.TILE_PZ).getArea().place(new PasteBuilder(), false); + DynamicRegionSystem.INSTANCE.get(Tile.TILE_ZN).getArea().place(new PasteBuilder(), false); + DynamicRegionSystem.INSTANCE.get(Tile.TILE_ZP).getArea().place(new PasteBuilder(), false); }); - DynamicRegionSystem.INSTANCE.get(Tile.TILE_NZ).getArea().place(new PasteBuilder(), false); - DynamicRegionSystem.INSTANCE.get(Tile.TILE_PZ).getArea().place(new PasteBuilder(), false); - DynamicRegionSystem.INSTANCE.get(Tile.TILE_ZN).getArea().place(new PasteBuilder(), false); - DynamicRegionSystem.INSTANCE.get(Tile.TILE_ZP).getArea().place(new PasteBuilder(), false); } private void checkSpawnRegionAndDelete(Tile tile) { diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/PathArea.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/PathArea.java index 4434378d..2ef7dbe4 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/PathArea.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/PathArea.java @@ -241,7 +241,7 @@ public class PathArea extends Region.Area { if (optionalSide == null && side.opposite().equals(spawnRegion.getPathSide())) { return spawnPathConnection; } else { - return Plot; + return Void; } } return region.getType().getConnectionType(); diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/SelectorCorner.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/SelectorCorner.java index fe495900..b374a99a 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/SelectorCorner.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/SelectorCorner.java @@ -59,8 +59,8 @@ class SelectorCorner { } public Pair Select(Tile tile, PathCorner corner) { - RegionType.ConnectionType left = PathArea.getConnectionType(tile, corner.side1, null, RegionType.ConnectionType.Plot); - RegionType.ConnectionType right = PathArea.getConnectionType(tile, corner.side2, null, RegionType.ConnectionType.Plot); + RegionType.ConnectionType left = PathArea.getConnectionType(tile, corner.side1, null); + RegionType.ConnectionType right = PathArea.getConnectionType(tile, corner.side2, null); RegionType.ConnectionType diagonal = PathArea.getConnectionType(tile, corner.side1, corner.side2); int index = getIndex(left, right, diagonal); return new Pair<>(selectors[index], rotationCorrections[index]); diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnArea.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnArea.java index d8cc6710..7cab122c 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnArea.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnArea.java @@ -35,6 +35,11 @@ import java.util.List; public class SpawnArea extends Region.Area { private static final VariantSelector SPAWN_BIG = VariantSelector.Schematic(179980); + private static final VariantSelector SPAWN_LITTLE_ZZ = VariantSelector.Schematic(180022); + private static final VariantSelector SPAWN_LITTLE_NZ = VariantSelector.Schematic(180024); + private static final VariantSelector SPAWN_LITTLE_PZ = VariantSelector.Schematic(180025); + private static final VariantSelector SPAWN_LITTLE_ZN = VariantSelector.Schematic(180023); + private static final VariantSelector SPAWN_LITTLE_ZP = VariantSelector.Schematic(180021); private final Tile tile; @@ -63,11 +68,12 @@ public class SpawnArea extends Region.Area { .map(DynamicRegionSystem.Neighbour::region) .toList(); - if (regions.stream().map(DynamicRegion::getType).allMatch(RegionType::isSpawn)) { + if (regions.size() == 8) { PasteUtils.paste(SPAWN_BIG.select().orElseThrow(), Tile.TILE_NN.getMinPoint().setY(WORLD_MIN_Y), 0); return; } + DynamicRegionSystem.INSTANCE.get(Tile.ZERO).getArea().place(new PasteBuilder(), false); for (DynamicRegion region : regions) { if (region.getArea() instanceof SpawnArea spawnArea) { spawnArea.place(new PasteBuilder(), false); @@ -77,6 +83,16 @@ public class SpawnArea extends Region.Area { @Override public void place(PasteBuilder pasteBuilder, boolean extension) { - + if (tile.equals(Tile.ZERO)) { + PasteUtils.paste(SPAWN_LITTLE_ZZ.select().orElseThrow(), getMinPoint(false), 0); + } else if (tile.equals(Tile.TILE_NZ)) { + PasteUtils.paste(SPAWN_LITTLE_NZ.select().orElseThrow(), getMinPoint(false), 0); + } else if (tile.equals(Tile.TILE_PZ)) { + PasteUtils.paste(SPAWN_LITTLE_PZ.select().orElseThrow(), getMinPoint(false), 0); + } else if (tile.equals(Tile.TILE_ZN)) { + PasteUtils.paste(SPAWN_LITTLE_ZN.select().orElseThrow(), getMinPoint(false), 0); + } else if (tile.equals(Tile.TILE_ZP)) { + PasteUtils.paste(SPAWN_LITTLE_ZP.select().orElseThrow(), getMinPoint(false), 0); + } } }