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
|
//considers both direction and point limits
|
||||||
public boolean canConnect( Room r ){
|
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 );
|
Rect i = intersect( r );
|
||||||
|
|
||||||
boolean foundPoint = false;
|
boolean foundPoint = false;
|
||||||
@@ -263,10 +268,6 @@ public abstract class Room extends Rect implements Graph.Node, Bundlable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean connect( Room room ) {
|
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))
|
if ((neigbours.contains(room) || addNeigbour(room))
|
||||||
&& !connected.containsKey( room ) && canConnect(room)) {
|
&& !connected.containsKey( room ) && canConnect(room)) {
|
||||||
|
|||||||
-8
@@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.CaveRoom;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.CaveRoom;
|
||||||
import com.watabou.utils.PathFinder;
|
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));
|
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
-7
@@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.CircleBasinRoom;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.CircleBasinRoom;
|
||||||
|
|
||||||
public class CircleBasinEntranceRoom extends 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));
|
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
-7
@@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.CaveRoom;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.CaveRoom;
|
||||||
import com.watabou.utils.PathFinder;
|
import com.watabou.utils.PathFinder;
|
||||||
import com.watabou.utils.Point;
|
import com.watabou.utils.Point;
|
||||||
@@ -89,10 +88,4 @@ public class CaveExitRoom extends CaveRoom {
|
|||||||
return super.canPlaceCharacter(p, l) && l.pointToCell(p) != l.exit();
|
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
-8
@@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.CircleBasinRoom;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.CircleBasinRoom;
|
||||||
|
|
||||||
public class CircleBasinExitRoom extends 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));
|
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