From e7ffb0214fa1b73672a31b46bded0d070ca9117f Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Mar 2020 16:04:19 -0400 Subject: [PATCH] Fixed some invalid sectors --- .../maps/generators/BasicGenerator.java | 7 ++++--- .../maps/planet/TODOPlanetGenerator.java | 2 +- core/src/mindustry/type/Sector.java | 2 +- .../src/mindustry/ui/dialogs/PlanetDialog.java | 18 ++++++++++++------ gradle.properties | 2 +- 5 files changed, 19 insertions(+), 12 deletions(-) diff --git a/core/src/mindustry/maps/generators/BasicGenerator.java b/core/src/mindustry/maps/generators/BasicGenerator.java index 77f512e35e..cf9c1c0e36 100644 --- a/core/src/mindustry/maps/generators/BasicGenerator.java +++ b/core/src/mindustry/maps/generators/BasicGenerator.java @@ -319,7 +319,7 @@ public abstract class BasicGenerator implements WorldGenerator{ Tile end = tiles.getn(endX, endY); GridBits closed = new GridBits(width, height); IntFloatMap costs = new IntFloatMap(); - PriorityQueue queue = new PriorityQueue<>(tiles.width * tiles.height /4, (a, b) -> Float.compare(costs.get(a.pos(), 0f) + dh.cost(a.x, a.y, end.x, end.y), costs.get(b.pos(), 0f) + dh.cost(b.x, b.y, end.x, end.y))); + PriorityQueue queue = new PriorityQueue<>(tiles.width * tiles.height / 4, Structs.comparingFloat(a -> costs.get(a.pos(), 0f) + dh.cost(a.x, a.y, end.x, end.y))); queue.add(start); boolean found = false; while(!queue.isEmpty()){ @@ -332,12 +332,13 @@ public abstract class BasicGenerator implements WorldGenerator{ closed.set(next.x, next.y); for(Point2 point : Geometry.d4){ int newx = next.x + point.x, newy = next.y + point.y; - if(Structs.inBounds(newx, newy, width, height) && world.getDarkness(newx, newy) == 0){ + if(Structs.inBounds(newx, newy, width, height) && world.getDarkness(newx, newy) <= 1f){ Tile child = tiles.getn(newx, newy); + float newCost = th.cost(child) + baseCost; if(!closed.get(child.x, child.y)){ closed.set(child.x, child.y); child.rotation(child.relativeTo(next.x, next.y)); - costs.put(child.pos(), th.cost(child) + baseCost); + costs.put(child.pos(), newCost); queue.add(child); } } diff --git a/core/src/mindustry/maps/planet/TODOPlanetGenerator.java b/core/src/mindustry/maps/planet/TODOPlanetGenerator.java index 3b5d4afcd8..b1981abc94 100644 --- a/core/src/mindustry/maps/planet/TODOPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/TODOPlanetGenerator.java @@ -115,7 +115,7 @@ public class TODOPlanetGenerator extends PlanetGenerator{ connected.add(to); float nscl = rand.random(20f, 60f); int stroke = rand.random(4, 12); - brush(pathfind(x, y, to.x, to.y, tile -> (tile.solid() ? 5f : 0f) + noise(tile.x, tile.y, 1, 1, 1f / nscl) * 50, manhattan), stroke); + brush(pathfind(x, y, to.x, to.y, tile -> (tile.solid() ? 5f : 0f) + noise(tile.x, tile.y, 1, 1, 1f / nscl) * 60, manhattan), stroke); } } diff --git a/core/src/mindustry/type/Sector.java b/core/src/mindustry/type/Sector.java index fa07800efd..5a2af67357 100644 --- a/core/src/mindustry/type/Sector.java +++ b/core/src/mindustry/type/Sector.java @@ -41,7 +41,7 @@ public class Sector{ public void generate(){ //TODO use simplex and a seed - hostility = Noise.snoise3(tile.v.x, tile.v.y, tile.v.z, 4f, 1f); + hostility = Math.max(Noise.snoise3(tile.v.x, tile.v.y, tile.v.z, 1f, 0.5f), 0); } public boolean locked(){ diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 46c818fc07..cdfa75134b 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -216,6 +216,10 @@ public class PlanetDialog extends FloatingDialog{ if(sec.locked()){ draw(sec, shadowColor, -0.001f); } + + if(sec.hostility >= 0f){ + //drawSelection(sec, Color.scarlet, 0.1f * sec.hostility); + } } if(hovered != null){ @@ -234,7 +238,6 @@ public class PlanetDialog extends FloatingDialog{ Mesh mesh = outline(planet.grid.size); Shader shader = Shaders.planetGrid; Vec3 tile = planet.intersect(cam.getMouseRay(), outlineRad); - //Log.info(tile); Shaders.planetGrid.mouse.lerp(tile == null ? Vec3.Zero : tile.sub(planet.position).rotate(Vec3.Y, planet.getRotation()), 0.2f); shader.bind(); @@ -338,7 +341,10 @@ public class PlanetDialog extends FloatingDialog{ } private void drawSelection(Sector sector){ - float length = 0.1f; + drawSelection(sector, Pal.accent, 0.04f); + } + + private void drawSelection(Sector sector, Color color, float length){ float arad = outlineRad + 0.0001f; for(int i = 0; i < sector.tile.corners.length; i++){ @@ -349,11 +355,11 @@ public class PlanetDialog extends FloatingDialog{ curr.v.scl(arad); sector.tile.v.scl(arad); - Tmp.v31.set(curr.v).sub(sector.tile.v).setLength(length).add(sector.tile.v); - Tmp.v32.set(next.v).sub(sector.tile.v).setLength(length).add(sector.tile.v); + Tmp.v31.set(curr.v).sub(sector.tile.v).setLength(curr.v.dst(sector.tile.v) - length).add(sector.tile.v); + Tmp.v32.set(next.v).sub(sector.tile.v).setLength(next.v.dst(sector.tile.v) - length).add(sector.tile.v); - batch.tri(curr.v, next.v, Tmp.v31, Pal.accent); - batch.tri(Tmp.v31, next.v, Tmp.v32, Pal.accent); + batch.tri(curr.v, next.v, Tmp.v31, color); + batch.tri(Tmp.v31, next.v, Tmp.v32, color); sector.tile.v.scl(1f / arad); next.v.scl(1f / arad); diff --git a/gradle.properties b/gradle.properties index dcdcd0d28a..dadde32ebe 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=2b1be987f1bad28c7f4456cbfa651f5139204e65 +archash=dd0f2c60c53919ce97c987e502acf94af3a9a2b4