From e0d6f7227abd939287f58d62177b5414b1a83eb1 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sun, 30 Apr 2017 16:19:45 -0400 Subject: [PATCH] v0.6.0: refactored connecting rooms --- .../levels/CavesLevel.java | 2 +- .../levels/builders/Builder.java | 2 +- .../levels/builders/LegacyBuilder.java | 11 ++--- .../levels/builders/LineBuilder.java | 2 +- .../levels/builders/LoopBuilder.java | 2 +- .../rooms/connection/ConnectionRoom.java | 49 +++++++++++++++++++ .../PerimeterRoom.java} | 6 ++- .../{tunnel => connection}/TunnelRoom.java | 26 ++-------- 8 files changed, 65 insertions(+), 35 deletions(-) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/connection/ConnectionRoom.java rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/{tunnel/PassageRoom.java => connection/PerimeterRoom.java} (92%) rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/{tunnel => connection}/TunnelRoom.java (82%) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java index e9e9aa677..d3b1986c5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java @@ -26,8 +26,8 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Blacksmith; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room; +import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.connection.TunnelRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.StandardRoom; -import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.tunnel.TunnelRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.ConfusionTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.ExplosiveTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.FireTrap; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/Builder.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/Builder.java index 71a1d62d2..b2ccc99c1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/Builder.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/Builder.java @@ -22,7 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.builders; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room; -import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.tunnel.TunnelRoom; +import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.connection.TunnelRoom; import com.watabou.utils.GameMath; import com.watabou.utils.Point; import com.watabou.utils.PointF; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/LegacyBuilder.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/LegacyBuilder.java index c711a815a..dd7e5de6c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/LegacyBuilder.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/LegacyBuilder.java @@ -21,16 +21,14 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.builders; -import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Imp; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room; +import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.connection.TunnelRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.RatKingRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.ShopRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.EntranceRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.ExitRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.StandardRoom; -import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.tunnel.PassageRoom; -import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.tunnel.TunnelRoom; import com.watabou.utils.Graph; import com.watabou.utils.Random; import com.watabou.utils.Rect; @@ -378,6 +376,7 @@ public class LegacyBuilder extends Builder { Room roomShop = null; int shopSquare = 0; ListIterator it = rooms.listIterator(); + /* while (it.hasNext()) { Room r = it.next(); if (r.getClass().equals(Room.class) && r.connected.size() > 0) { @@ -387,7 +386,7 @@ public class LegacyBuilder extends Builder { shopSquare = r.square(); } } - } + }*/ if (roomShop == null || shopSquare < 54) { return null; @@ -547,7 +546,7 @@ public class LegacyBuilder extends Builder { } if (Level.pitRoomNeeded && !pitMade) return false; - */ + Class tunnelType = TunnelRoom.class; if ((Dungeon.depth > 5 && Dungeon.depth <= 10) || (Dungeon.depth > 15 && Dungeon.depth <= 20)){ @@ -583,7 +582,7 @@ public class LegacyBuilder extends Builder { } else { return false; } - } + }*/ return true; } 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 45d0d8c1e..f91c4fe46 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 @@ -22,10 +22,10 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.builders; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room; +import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.connection.TunnelRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.ShopRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.EntranceRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.ExitRoom; -import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.tunnel.TunnelRoom; import com.watabou.utils.Random; import java.util.ArrayList; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/LoopBuilder.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/LoopBuilder.java index aca2e65ee..714b3f177 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/LoopBuilder.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/LoopBuilder.java @@ -22,10 +22,10 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.builders; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room; +import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.connection.TunnelRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.EmptyRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.EntranceRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.ExitRoom; -import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.tunnel.TunnelRoom; import com.watabou.utils.Random; import java.util.ArrayList; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/connection/ConnectionRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/connection/ConnectionRoom.java new file mode 100644 index 000000000..1a3f279ed --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/connection/ConnectionRoom.java @@ -0,0 +1,49 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2017 Evan Debenham + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + */ + +package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.connection; + +import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room; + +public abstract class ConnectionRoom extends Room { + + @Override + public int minWidth() { return 3; } + public int maxWidth() { return 10; } + + @Override + public int minHeight() { return 3; } + public int maxHeight() { return 10; } + + @Override + public int minConnections(int direction) { + if (direction == ALL) return 2; + else return 0; + } + + @Override + public int maxConnections(int direction) { + if (direction == ALL) return 16; + else return 4; + } + + +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/tunnel/PassageRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/connection/PerimeterRoom.java similarity index 92% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/tunnel/PassageRoom.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/connection/PerimeterRoom.java index f03a03047..fa9541907 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/tunnel/PassageRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/connection/PerimeterRoom.java @@ -19,7 +19,7 @@ * along with this program. If not, see */ -package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.tunnel; +package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.connection; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; @@ -29,7 +29,9 @@ import com.watabou.utils.Point; import java.util.ArrayList; import java.util.Collections; -public class PassageRoom extends TunnelRoom { +//tunnels along the room's perimeter +//FIXME should be refactored, like shop rooms (which use perimiter logic for item placement) +public class PerimeterRoom extends ConnectionRoom { private static int pasWidth; private static int pasHeight; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/tunnel/TunnelRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/connection/TunnelRoom.java similarity index 82% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/tunnel/TunnelRoom.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/connection/TunnelRoom.java index 727a6279a..b1c20e09b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/tunnel/TunnelRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/connection/TunnelRoom.java @@ -19,35 +19,15 @@ * along with this program. If not, see */ -package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.tunnel; +package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.connection; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; -import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room; import com.watabou.utils.Point; import com.watabou.utils.Random; -public class TunnelRoom extends Room { - - @Override - public int minWidth() { return 3; } - public int maxWidth() { return 10; } - - @Override - public int minHeight() { return 3; } - public int maxHeight() { return 10; } - - @Override - public int minConnections(int direction) { - if (direction == ALL) return 2; - else return 0; - } - - @Override - public int maxConnections(int direction) { - if (direction == ALL) return 16; - else return 4; - } +//tunnels along the rooms center, with straight lines +public class TunnelRoom extends ConnectionRoom { public void paint(Level level) {