v0.3.1a: made trap spawning more consistent
This commit is contained in:
parent
81341c93d0
commit
1c2312520d
|
@ -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(){
|
||||
|
|
Loading…
Reference in New Issue
Block a user