diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Challenges.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Challenges.java index 7c5394c8e..61d6d1cc3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Challenges.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Challenges.java @@ -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", diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Preferences.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Preferences.java index deaa64fc2..7ee43dccd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Preferences.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Preferences.java @@ -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; } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java index c5f413204..4e2495aad 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java @@ -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 );