v3.1.0: improved connection limit logic on exits/entrances
This commit is contained in:
@@ -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)) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user