v0.6.0: improved striped room logic for larger sizes

This commit is contained in:
Evan Debenham 2017-05-10 20:23:29 -04:00
parent 94a07c9474
commit 833ca0a257

View File

@ -28,6 +28,11 @@ import com.watabou.utils.Random;
public class StripedRoom extends StandardRoom {
@Override
public float[] sizeCatProbs() {
return new float[]{2, 1, 0};
}
@Override
public void paint(Level level) {
Painter.fill( level, this, Terrain.WALL );
@ -35,15 +40,22 @@ public class StripedRoom extends StandardRoom {
door.set( Door.Type.REGULAR );
}
Painter.fill( level, this, 1 , Terrain.EMPTY_SP );
if (width() > height() || (width() == height() && Random.Int(2) == 0)) {
for (int i=left + 2; i < right; i += 2) {
Painter.fill( level, i, top + 1, 1, height() - 2, Terrain.HIGH_GRASS );
if (sizeCat == SizeCategory.NORMAL) {
Painter.fill(level, this, 1, Terrain.EMPTY_SP);
if (width() > height() || (width() == height() && Random.Int(2) == 0)) {
for (int i = left + 2; i < right; i += 2) {
Painter.fill(level, i, top + 1, 1, height() - 2, Terrain.HIGH_GRASS);
}
} else {
for (int i = top + 2; i < bottom; i += 2) {
Painter.fill(level, left + 1, i, width() - 2, 1, Terrain.HIGH_GRASS);
}
}
} else {
for (int i=top + 2; i < bottom; i += 2) {
Painter.fill( level, left + 1, i, width() - 2, 1, Terrain.HIGH_GRASS );
} else if (sizeCat == SizeCategory.LARGE){
int layers = (Math.min(width(), height())-1)/2;
for (int i = 1; i <= layers; i++){
Painter.fill(level, this, i, (i % 2 == 1) ? Terrain.EMPTY_SP : Terrain.HIGH_GRASS);
}
}
}