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 DARKNESS = 32;
public static final int NO_SCROLLS = 64; public static final int NO_SCROLLS = 64;
public static final int MAX_VALUE = 127;
public static final String[] NAME_IDS = { public static final String[] NAME_IDS = {
"no_food", "no_food",
"no_armor", "no_armor",

View File

@ -55,30 +55,53 @@ enum Preferences {
} }
return prefs; 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 { 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) { } catch (ClassCastException e) {
ShatteredPixelDungeon.reportException(e); ShatteredPixelDungeon.reportException(e);
put(key, defValue);
return defValue; return defValue;
} }
} }
boolean getBoolean( String key, boolean defValue ) { boolean getBoolean( String key, boolean defValue ) {
try { try {
return get().getBoolean(key, defValue); return get().getBoolean(key, defValue);
} catch (ClassCastException e) { } catch (ClassCastException e) {
ShatteredPixelDungeon.reportException(e); ShatteredPixelDungeon.reportException(e);
put(key, defValue);
return 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 { 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) { } catch (ClassCastException e) {
ShatteredPixelDungeon.reportException(e); ShatteredPixelDungeon.reportException(e);
put(key, defValue);
return defValue; return defValue;
} }
} }

View File

@ -365,7 +365,7 @@ public class ShatteredPixelDungeon extends Game {
} }
public static int musicVol(){ 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 ) { public static void soundFx( boolean value ) {
@ -382,7 +382,7 @@ public class ShatteredPixelDungeon extends Game {
} }
public static int SFXVol() { 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 ) { public static void brightness( int value ) {
@ -393,7 +393,7 @@ public class ShatteredPixelDungeon extends Game {
} }
public static int brightness() { 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) { public static void language(Languages lang) {
@ -431,7 +431,7 @@ public class ShatteredPixelDungeon extends Game {
} }
public static int lastClass() { 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 ) { public static void challenges( int value ) {
@ -439,12 +439,12 @@ public class ShatteredPixelDungeon extends Game {
} }
public static int challenges() { 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 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) { public static void flipToolbar( boolean value) {
Preferences.INSTANCE.put(Preferences.KEY_FLIPTOOLBAR, value ); Preferences.INSTANCE.put(Preferences.KEY_FLIPTOOLBAR, value );