v0.6.0: improved some elements of special room logic

This commit is contained in:
Evan Debenham 2017-05-14 13:55:08 -04:00
parent 7cdbb43818
commit b421b9506a

View File

@ -137,8 +137,13 @@ public class SpecialRoom extends Room {
} }
Room r = null; Room r = null;
int index = floorSpecials.size();
for (int i = 0; i < 4; i++){
int newidx = Random.Int( floorSpecials.size() );
if (newidx < index) index = newidx;
}
try { try {
r = floorSpecials.get( Math.min( Random.Int( floorSpecials.size() ), Random.Int( floorSpecials.size() ) ) ).newInstance(); r = floorSpecials.get( index ).newInstance();
} catch (Exception e) { } catch (Exception e) {
ShatteredPixelDungeon.reportException(e); ShatteredPixelDungeon.reportException(e);
} }
@ -159,8 +164,13 @@ public class SpecialRoom extends Room {
public static void restoreRoomsFromBundle( Bundle bundle ) { public static void restoreRoomsFromBundle( Bundle bundle ) {
runSpecials.clear(); runSpecials.clear();
for (Class<?extends Room> type : bundle.getClassArray( ROOMS )) { if (bundle.contains( ROOMS )) {
runSpecials.add( type ); for (Class<? extends Room> type : bundle.getClassArray(ROOMS)) {
runSpecials.add(type);
}
} else {
initForRun();
ShatteredPixelDungeon.reportException(new Exception("specials array didn't exist!"));
} }
pitNeededDepth = bundle.getInt(PIT); pitNeededDepth = bundle.getInt(PIT);
guaranteedWellDepth = bundle.getInt(WELL); guaranteedWellDepth = bundle.getInt(WELL);