v3.1.0: improved connection limit logic on exits/entrances

This commit is contained in:
Evan Debenham
2025-04-24 15:25:48 -04:00
parent 31741b931e
commit 983a805b67
5 changed files with 5 additions and 34 deletions

View File

@@ -216,6 +216,11 @@ public abstract class Room extends Rect implements Graph.Node, Bundlable {
//considers both direction and point limits
public boolean canConnect( Room r ){
if (isExit() && r.isEntrance() || isEntrance() && r.isExit()){
//entrance and exit rooms cannot directly connect
return false;
}
Rect i = intersect( r );
boolean foundPoint = false;
@@ -263,10 +268,6 @@ public abstract class Room extends Rect implements Graph.Node, Bundlable {
}
public boolean connect( Room room ) {
if (isExit() && room.isEntrance() || isEntrance() && room.isExit()){
//entrance and exit rooms cannot directly connect
return false;
}
if ((neigbours.contains(room) || addNeigbour(room))
&& !connected.containsKey( room ) && canConnect(room)) {

View File

@@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.CaveRoom;
import com.watabou.utils.PathFinder;
@@ -83,11 +82,4 @@ public class CaveEntranceRoom extends CaveRoom {
level.transitions.add(new LevelTransition(level, entrance, LevelTransition.Type.REGULAR_ENTRANCE));
}
@Override
public boolean connect(Room room) {
//cannot connect to exit, otherwise works normally
if (room.isExit()) return false;
else return super.connect(room);
}
}

View File

@@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.CircleBasinRoom;
public class CircleBasinEntranceRoom extends CircleBasinRoom {
@@ -50,10 +49,4 @@ public class CircleBasinEntranceRoom extends CircleBasinRoom {
level.transitions.add(new LevelTransition(level, entrance, LevelTransition.Type.REGULAR_ENTRANCE));
}
@Override
public boolean connect(Room room) {
//cannot connect to exit, otherwise works normally
if (room.isExit()) return false;
else return super.connect(room);
}
}

View File

@@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.CaveRoom;
import com.watabou.utils.PathFinder;
import com.watabou.utils.Point;
@@ -89,10 +88,4 @@ public class CaveExitRoom extends CaveRoom {
return super.canPlaceCharacter(p, l) && l.pointToCell(p) != l.exit();
}
@Override
public boolean connect(Room room) {
//cannot connect to entrance, otherwise works normally
if (room.isEntrance()) return false;
else return super.connect(room);
}
}

View File

@@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.CircleBasinRoom;
public class CircleBasinExitRoom extends CircleBasinRoom {
@@ -50,11 +49,4 @@ public class CircleBasinExitRoom extends CircleBasinRoom {
level.transitions.add(new LevelTransition(level, exit, LevelTransition.Type.REGULAR_EXIT));
}
@Override
public boolean connect(Room room) {
//cannot connect to exit, otherwise works normally
if (room.isExit()) return false;
else return super.connect(room);
}
}