v0.6.0: fixed line builder generated dead end tunnel rooms

This commit is contained in:
Evan Debenham 2017-04-25 20:30:03 -04:00
parent 73aed6726c
commit 25b01c2e7d

View File

@ -134,8 +134,10 @@ public class LineBuilder extends Builder {
int i = roomsOnPath;
float angle;
int tries;
ArrayList<Room> 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);