forked from SteamWar/SteamWar
Add initial regions
This commit is contained in:
+31
-29
@@ -161,7 +161,7 @@ public class DynamicRegionVisualizer implements SWPlayer.Component, Listener {
|
||||
RInteraction interaction = new RInteraction(entityServer, location.clone().add(0.5, 0, 0.5));
|
||||
interaction.setInteraction((player, entityAction) -> {
|
||||
if (placement != null) {
|
||||
if (regionType.isGlobal()) placement.click(tile);
|
||||
placement.click(tile, regionType.isGlobal());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -254,45 +254,47 @@ public class DynamicRegionVisualizer implements SWPlayer.Component, Listener {
|
||||
valid = true;
|
||||
}
|
||||
|
||||
public void click(Tile tile) {
|
||||
public void click(Tile tile, boolean global) {
|
||||
if (tile.getTileX() >= sourceTile.getTileX() && tile.getTileX() <= sourceTile.getTileX() + dx && tile.getTileZ() >= sourceTile.getTileZ() && tile.getTileZ() <= sourceTile.getTileZ() + dz) {
|
||||
SWInventory inv = new SWInventory(player, 9, "Place Region: " + constructorData.name());
|
||||
inv.setItem(0, new SWItem(SWItem.getDye(1), "§cDeselect", click -> {
|
||||
placement = null;
|
||||
wireframe.die();
|
||||
player.closeInventory();
|
||||
}));
|
||||
if (valid) {
|
||||
SWInventory inv = new SWInventory(player, 9, "Place Region: " + constructorData.name());
|
||||
inv.setItem(0, new SWItem(SWItem.getDye(1), "§cDeselect", click -> {
|
||||
placement = null;
|
||||
wireframe.die();
|
||||
player.closeInventory();
|
||||
}));
|
||||
inv.setItem(8, new SWItem(SWItem.getDye(10), "§aPlace", click -> {
|
||||
player.closeInventory();
|
||||
place();
|
||||
}));
|
||||
inv.open();
|
||||
} else {
|
||||
inv.setItem(8, new SWItem(SWItem.getDye(8), "§8Place", click -> {
|
||||
}));
|
||||
}
|
||||
inv.open();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (dx == 0 && dz == 0) {
|
||||
sourceTile = tile;
|
||||
} else {
|
||||
Set<Tile> tiles = new HashSet<>();
|
||||
for (int x = 0; x <= dx; x++) {
|
||||
for (int z = 0; z <= dz; z++) {
|
||||
tiles.add(Tile.fromTile(x + sourceTile.getTileX(), z + sourceTile.getTileZ()).orElseThrow());
|
||||
}
|
||||
}
|
||||
Tile selected = tiles.stream().min(Comparator.comparing(current -> {
|
||||
int dx = current.getTileX() - tile.getTileX();
|
||||
int dz = current.getTileZ() - tile.getTileZ();
|
||||
return dx * dx + dz * dz;
|
||||
}))
|
||||
.orElseThrow();
|
||||
|
||||
int dx = tile.getTileX() - selected.getTileX();
|
||||
int dz = tile.getTileZ() - selected.getTileZ();
|
||||
sourceTile = sourceTile.add(dx, dz).orElseThrow();
|
||||
if (!global) {
|
||||
return;
|
||||
}
|
||||
|
||||
Set<Tile> tiles = new HashSet<>();
|
||||
for (int x = 0; x <= dx; x++) {
|
||||
for (int z = 0; z <= dz; z++) {
|
||||
tiles.add(Tile.fromTile(x + sourceTile.getTileX(), z + sourceTile.getTileZ()).orElseThrow());
|
||||
}
|
||||
}
|
||||
Tile selected = tiles.stream().min(Comparator.comparing(current -> {
|
||||
int dx = current.getTileX() - tile.getTileX();
|
||||
int dz = current.getTileZ() - tile.getTileZ();
|
||||
return dx * dx + dz * dz;
|
||||
}))
|
||||
.orElseThrow();
|
||||
|
||||
int dx = tile.getTileX() - selected.getTileX();
|
||||
int dz = tile.getTileZ() - selected.getTileZ();
|
||||
sourceTile = sourceTile.add(dx, dz).orElseThrow();
|
||||
check();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user