v0.3.1a: made trap spawning more consistent

This commit is contained in:
Evan Debenham 2015-08-22 19:22:57 -04:00 committed by Evan Debenham
parent 81341c93d0
commit 1c2312520d

View File

@ -43,8 +43,10 @@ import com.watabou.utils.Rect;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public abstract class RegularLevel extends Level {
@ -333,11 +335,23 @@ public abstract class RegularLevel extends Level {
float[] trapChances = trapChances();
Class<?>[] trapClasses = trapClasses();
LinkedList<Integer> validCells = new LinkedList<Integer>();
for (int i = 0; i < LENGTH; i ++) {
if (map[i] == Terrain.EMPTY){
validCells.add(i);
}
}
//no more than one trap every 5 valid tiles.
nTraps = Math.min(nTraps, validCells.size()/5);
Collections.shuffle(validCells);
for (int i = 0; i < nTraps; i++) {
int trapPos = Random.Int( LENGTH );
int trapPos = validCells.removeFirst();
if (map[trapPos] == Terrain.EMPTY) {
try {
Trap trap = ((Trap)trapClasses[Random.chances( trapChances )].newInstance()).hide();
setTrap( trap, trapPos );
@ -348,10 +362,9 @@ public abstract class RegularLevel extends Level {
}
}
}
}
protected int nTraps() {
return Random.NormalIntRange( 1, rooms.size() + Dungeon.depth );
return Random.NormalIntRange( 1, 4+(Dungeon.depth/2) );
}
protected Class<?>[] trapClasses(){