From 25b01c2e7d4c98cb138369c38df7f15ca8052aec Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Tue, 25 Apr 2017 20:30:03 -0400 Subject: [PATCH] v0.6.0: fixed line builder generated dead end tunnel rooms --- .../levels/builders/LineBuilder.java | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/LineBuilder.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/LineBuilder.java index 9b056cc38..6f82af602 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/LineBuilder.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/LineBuilder.java @@ -134,8 +134,10 @@ public class LineBuilder extends Builder { int i = roomsOnPath; float angle; int tries; + ArrayList tunnelsThisBranch = new ArrayList<>(); while (i < multiConnections.size() + singleConnections.size()){ - + + tunnelsThisBranch.clear(); curr = Random.element(branchable); int tunnels = Random.chances(branchTunnelChances); @@ -148,13 +150,24 @@ public class LineBuilder extends Builder { tries--; } while (angle == -1 && tries >= 0); - if (angle == -1) - continue; - else + if (angle == -1) { + for (Room r : tunnelsThisBranch){ + r.clearConnections(); + rooms.remove(r); + } + tunnelsThisBranch.clear(); + break; + } else { + tunnelsThisBranch.add(t); rooms.add(t); + } curr = t; } + + if (tunnelsThisBranch.size() != tunnels){ + continue; + } Room r; if (i < multiConnections.size()) { @@ -170,8 +183,15 @@ public class LineBuilder extends Builder { tries--; } while (angle == -1 && tries >= 0); - if (angle == -1) + if (angle == -1){ + for (Room t : tunnelsThisBranch){ + t.clearConnections(); + rooms.remove(t); + } + tunnelsThisBranch.clear(); continue; + } + if (r.maxConnections(Room.ALL) > 1 && Random.Int(2) == 0) branchable.add(r);