forked from SteamWar/SteamWar
Fix SpawnArea and PathArea connections
This commit is contained in:
+3
-1
@@ -367,11 +367,13 @@ public class DynamicRegionEditor implements SWPlayer.Component, Listener {
|
|||||||
checkSpawnRegionAndDelete(Tile.TILE_NP);
|
checkSpawnRegionAndDelete(Tile.TILE_NP);
|
||||||
checkSpawnRegionAndDelete(Tile.TILE_PN);
|
checkSpawnRegionAndDelete(Tile.TILE_PN);
|
||||||
checkSpawnRegionAndDelete(Tile.TILE_PP);
|
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_NZ).getArea().place(new PasteBuilder(), false);
|
||||||
DynamicRegionSystem.INSTANCE.get(Tile.TILE_PZ).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_ZN).getArea().place(new PasteBuilder(), false);
|
||||||
DynamicRegionSystem.INSTANCE.get(Tile.TILE_ZP).getArea().place(new PasteBuilder(), false);
|
DynamicRegionSystem.INSTANCE.get(Tile.TILE_ZP).getArea().place(new PasteBuilder(), false);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkSpawnRegionAndDelete(Tile tile) {
|
private void checkSpawnRegionAndDelete(Tile tile) {
|
||||||
|
|||||||
+1
-1
@@ -241,7 +241,7 @@ public class PathArea extends Region.Area {
|
|||||||
if (optionalSide == null && side.opposite().equals(spawnRegion.getPathSide())) {
|
if (optionalSide == null && side.opposite().equals(spawnRegion.getPathSide())) {
|
||||||
return spawnPathConnection;
|
return spawnPathConnection;
|
||||||
} else {
|
} else {
|
||||||
return Plot;
|
return Void;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return region.getType().getConnectionType();
|
return region.getType().getConnectionType();
|
||||||
|
|||||||
+2
-2
@@ -59,8 +59,8 @@ class SelectorCorner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Pair<VariantSelector, PathArea.RotationCorrection> Select(Tile tile, PathCorner corner) {
|
public Pair<VariantSelector, PathArea.RotationCorrection> Select(Tile tile, PathCorner corner) {
|
||||||
RegionType.ConnectionType left = PathArea.getConnectionType(tile, corner.side1, null, RegionType.ConnectionType.Plot);
|
RegionType.ConnectionType left = PathArea.getConnectionType(tile, corner.side1, null);
|
||||||
RegionType.ConnectionType right = PathArea.getConnectionType(tile, corner.side2, null, RegionType.ConnectionType.Plot);
|
RegionType.ConnectionType right = PathArea.getConnectionType(tile, corner.side2, null);
|
||||||
RegionType.ConnectionType diagonal = PathArea.getConnectionType(tile, corner.side1, corner.side2);
|
RegionType.ConnectionType diagonal = PathArea.getConnectionType(tile, corner.side1, corner.side2);
|
||||||
int index = getIndex(left, right, diagonal);
|
int index = getIndex(left, right, diagonal);
|
||||||
return new Pair<>(selectors[index], rotationCorrections[index]);
|
return new Pair<>(selectors[index], rotationCorrections[index]);
|
||||||
|
|||||||
+18
-2
@@ -35,6 +35,11 @@ import java.util.List;
|
|||||||
public class SpawnArea extends Region.Area {
|
public class SpawnArea extends Region.Area {
|
||||||
|
|
||||||
private static final VariantSelector SPAWN_BIG = VariantSelector.Schematic(179980);
|
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;
|
private final Tile tile;
|
||||||
|
|
||||||
@@ -63,11 +68,12 @@ public class SpawnArea extends Region.Area {
|
|||||||
.map(DynamicRegionSystem.Neighbour::region)
|
.map(DynamicRegionSystem.Neighbour::region)
|
||||||
.toList();
|
.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);
|
PasteUtils.paste(SPAWN_BIG.select().orElseThrow(), Tile.TILE_NN.getMinPoint().setY(WORLD_MIN_Y), 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DynamicRegionSystem.INSTANCE.get(Tile.ZERO).getArea().place(new PasteBuilder(), false);
|
||||||
for (DynamicRegion region : regions) {
|
for (DynamicRegion region : regions) {
|
||||||
if (region.getArea() instanceof SpawnArea spawnArea) {
|
if (region.getArea() instanceof SpawnArea spawnArea) {
|
||||||
spawnArea.place(new PasteBuilder(), false);
|
spawnArea.place(new PasteBuilder(), false);
|
||||||
@@ -77,6 +83,16 @@ public class SpawnArea extends Region.Area {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void place(PasteBuilder pasteBuilder, boolean extension) {
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user