v0.9.1: improved the caves painter, halls painter, and ruins room
This commit is contained in:
parent
c37c25fd84
commit
fafb887d3b
|
@ -26,7 +26,6 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.connection.ConnectionRoom;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.connection.ConnectionRoom;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.CaveRoom;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.CaveRoom;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.EmptyRoom;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.StandardRoom;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.StandardRoom;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTileSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTileSheet;
|
||||||
import com.watabou.utils.Random;
|
import com.watabou.utils.Random;
|
||||||
|
@ -42,9 +41,33 @@ public class CavesPainter extends RegularPainter {
|
||||||
int w = level.width();
|
int w = level.width();
|
||||||
int l = level.length();
|
int l = level.length();
|
||||||
int[] map = level.map;
|
int[] map = level.map;
|
||||||
|
|
||||||
|
for (Room r : rooms) {
|
||||||
|
if (r instanceof StandardRoom && ((StandardRoom) r).joinable) {
|
||||||
|
for (Room n : r.neigbours) {
|
||||||
|
if (n instanceof StandardRoom && ((StandardRoom) n).joinable && !r.connected.containsKey( n )) {
|
||||||
|
Rect i = r.intersect( n );
|
||||||
|
if (i.left == i.right && i.bottom - i.top >= 3) {
|
||||||
|
|
||||||
|
i.top++;
|
||||||
|
i.right++;
|
||||||
|
|
||||||
|
Painter.fill( level, i.left, i.top, 1, i.height(), Terrain.CHASM );
|
||||||
|
|
||||||
|
} else if (i.top == i.bottom && i.right - i.left >= 3) {
|
||||||
|
|
||||||
|
i.left++;
|
||||||
|
i.bottom++;
|
||||||
|
|
||||||
|
Painter.fill( level, i.left, i.top, i.width(), 1, Terrain.CHASM );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (Room room : rooms) {
|
for (Room room : rooms) {
|
||||||
if (!(room instanceof EmptyRoom || room instanceof CaveRoom)) {
|
if (!(room instanceof StandardRoom)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,7 +110,10 @@ public class CavesPainter extends RegularPainter {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Room n : room.connected.keySet()) {
|
for (Room n : room.connected.keySet()) {
|
||||||
if ((n instanceof StandardRoom || n instanceof ConnectionRoom) && Random.Int( 3 ) == 0) {
|
if ((n instanceof StandardRoom || n instanceof ConnectionRoom) && Random.Int( 5 ) == 0) {
|
||||||
|
Painter.set( level, room.connected.get( n ), Terrain.EMPTY_DECO );
|
||||||
|
}
|
||||||
|
if (n instanceof CaveRoom && room instanceof CaveRoom){
|
||||||
Painter.set( level, room.connected.get( n ), Terrain.EMPTY_DECO );
|
Painter.set( level, room.connected.get( n ), Terrain.EMPTY_DECO );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -121,33 +147,6 @@ public class CavesPainter extends RegularPainter {
|
||||||
map[i] = Terrain.WALL_DECO;
|
map[i] = Terrain.WALL_DECO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Room r : rooms) {
|
|
||||||
if (r instanceof EmptyRoom) {
|
|
||||||
for (Room n : r.neigbours) {
|
|
||||||
if (n instanceof EmptyRoom && !r.connected.containsKey( n )) {
|
|
||||||
Rect i = r.intersect( n );
|
|
||||||
if (i.left == i.right && i.bottom - i.top >= 5) {
|
|
||||||
|
|
||||||
i.top += 2;
|
|
||||||
i.bottom -= 1;
|
|
||||||
|
|
||||||
i.right++;
|
|
||||||
|
|
||||||
Painter.fill( level, i.left, i.top, 1, i.height(), Terrain.CHASM );
|
|
||||||
|
|
||||||
} else if (i.top == i.bottom && i.right - i.left >= 5) {
|
|
||||||
|
|
||||||
i.left += 2;
|
|
||||||
i.right -= 1;
|
|
||||||
|
|
||||||
i.bottom++;
|
|
||||||
|
|
||||||
Painter.fill( level, i.left, i.top, i.width(), 1, Terrain.CHASM );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,8 +24,10 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.painters;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.StandardRoom;
|
||||||
import com.watabou.utils.PathFinder;
|
import com.watabou.utils.PathFinder;
|
||||||
import com.watabou.utils.Random;
|
import com.watabou.utils.Random;
|
||||||
|
import com.watabou.utils.Rect;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
@ -61,5 +63,30 @@ public class HallsPainter extends RegularPainter {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (Room r : rooms) {
|
||||||
|
if (r instanceof StandardRoom && ((StandardRoom) r).joinable) {
|
||||||
|
for (Room n : r.neigbours) {
|
||||||
|
if (n instanceof StandardRoom && ((StandardRoom) n).joinable && !r.connected.containsKey( n )) {
|
||||||
|
Rect i = r.intersect( n );
|
||||||
|
if (i.left == i.right && i.bottom - i.top >= 3) {
|
||||||
|
|
||||||
|
i.top++;
|
||||||
|
i.right++;
|
||||||
|
|
||||||
|
Painter.fill( level, i.left, i.top, 1, i.height(), Terrain.CHASM );
|
||||||
|
|
||||||
|
} else if (i.top == i.bottom && i.right - i.left >= 3) {
|
||||||
|
|
||||||
|
i.left++;
|
||||||
|
i.bottom++;
|
||||||
|
|
||||||
|
Painter.fill( level, i.left, i.top, i.width(), 1, Terrain.CHASM );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ public class RuinsRoom extends PatchRoom {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float[] sizeCatProbs() {
|
public float[] sizeCatProbs() {
|
||||||
return new float[]{9, 3, 1};
|
return new float[]{4, 2, 1};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -39,12 +39,12 @@ public class RuinsRoom extends PatchRoom {
|
||||||
for (Door door : connected.values()) {
|
for (Door door : connected.values()) {
|
||||||
door.set( Door.Type.REGULAR );
|
door.set( Door.Type.REGULAR );
|
||||||
}
|
}
|
||||||
|
|
||||||
//fill scales from ~10% at 4x4, to ~25% at 18x18
|
//fill scales from ~20% at 4x4, to ~50% at 18x18
|
||||||
// normal ~20% to ~25%
|
// normal ~20% to ~30%
|
||||||
// large ~25% to ~30%
|
// large ~30% to ~40%
|
||||||
// giant ~30% to ~35%
|
// giant ~40% to ~50%
|
||||||
float fill = .2f + (width()*height())/2048f;
|
float fill = 0.20f + (width()*height())/1024f;
|
||||||
|
|
||||||
setupPatch(level, fill, 0, true);
|
setupPatch(level, fill, 0, true);
|
||||||
cleanDiagonalEdges();
|
cleanDiagonalEdges();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user