v0.4.2: improved error handling in preferences

This commit is contained in:
Evan Debenham 2016-08-17 23:06:41 -04:00
parent 806217e209
commit e770d13d39
3 changed files with 36 additions and 11 deletions

View File

@ -30,6 +30,8 @@ public class Challenges {
public static final int DARKNESS = 32;
public static final int NO_SCROLLS = 64;
public static final int MAX_VALUE = 127;
public static final String[] NAME_IDS = {
"no_food",
"no_armor",

View File

@ -55,30 +55,53 @@ enum Preferences {
}
return prefs;
}
int getInt( String key, int defValue ) {
return getInt(key, defValue, Integer.MIN_VALUE, Integer.MAX_VALUE);
}
int getInt( String key, int defValue ) {
int getInt( String key, int defValue, int min, int max ) {
try {
return get().getInt( key, defValue );
int i = get().getInt( key, defValue );
if (i < min || i > max){
put(key, defValue);
return defValue;
} else {
return i;
}
} catch (ClassCastException e) {
ShatteredPixelDungeon.reportException(e);
put(key, defValue);
return defValue;
}
}
boolean getBoolean( String key, boolean defValue ) {
boolean getBoolean( String key, boolean defValue ) {
try {
return get().getBoolean(key, defValue);
} catch (ClassCastException e) {
ShatteredPixelDungeon.reportException(e);
put(key, defValue);
return defValue;
}
}
String getString( String key, String defValue ) {
return getString(key, defValue, Integer.MAX_VALUE);
}
String getString( String key, String defValue ) {
String getString( String key, String defValue, int maxLength ) {
try {
return get().getString( key, defValue );
String s = get().getString( key, defValue );
if (s.length() > maxLength) {
put(key, defValue);
return defValue;
} else {
return s;
}
} catch (ClassCastException e) {
ShatteredPixelDungeon.reportException(e);
put(key, defValue);
return defValue;
}
}

View File

@ -365,7 +365,7 @@ public class ShatteredPixelDungeon extends Game {
}
public static int musicVol(){
return Preferences.INSTANCE.getInt( Preferences.KEY_MUSIC_VOL, 10 );
return Preferences.INSTANCE.getInt( Preferences.KEY_MUSIC_VOL, 10, 0, 10 );
}
public static void soundFx( boolean value ) {
@ -382,7 +382,7 @@ public class ShatteredPixelDungeon extends Game {
}
public static int SFXVol() {
return Preferences.INSTANCE.getInt( Preferences.KEY_SFX_VOL, 10 );
return Preferences.INSTANCE.getInt( Preferences.KEY_SFX_VOL, 10, 0, 10 );
}
public static void brightness( int value ) {
@ -393,7 +393,7 @@ public class ShatteredPixelDungeon extends Game {
}
public static int brightness() {
return Preferences.INSTANCE.getInt( Preferences.KEY_BRIGHTNESS, 0 );
return Preferences.INSTANCE.getInt( Preferences.KEY_BRIGHTNESS, 0, -2, 4 );
}
public static void language(Languages lang) {
@ -431,7 +431,7 @@ public class ShatteredPixelDungeon extends Game {
}
public static int lastClass() {
return Preferences.INSTANCE.getInt( Preferences.KEY_LAST_CLASS, 0 );
return Preferences.INSTANCE.getInt( Preferences.KEY_LAST_CLASS, 0, 0, 3 );
}
public static void challenges( int value ) {
@ -439,12 +439,12 @@ public class ShatteredPixelDungeon extends Game {
}
public static int challenges() {
return Preferences.INSTANCE.getInt( Preferences.KEY_CHALLENGES, 0 );
return Preferences.INSTANCE.getInt( Preferences.KEY_CHALLENGES, 0, 0, Challenges.MAX_VALUE );
}
public static void quickSlots( int value ){ Preferences.INSTANCE.put( Preferences.KEY_QUICKSLOTS, value ); }
public static int quickSlots(){ return Preferences.INSTANCE.getInt( Preferences.KEY_QUICKSLOTS, 4); }
public static int quickSlots(){ return Preferences.INSTANCE.getInt( Preferences.KEY_QUICKSLOTS, 4, 0, 4); }
public static void flipToolbar( boolean value) {
Preferences.INSTANCE.put(Preferences.KEY_FLIPTOOLBAR, value );