]> cvs.zerfleddert.de Git - FreeShisen/blobdiff - src/de/cwde/freeshisen/ShisenSho.java
remove some hardcoded strings
[FreeShisen] / src / de / cwde / freeshisen / ShisenSho.java
index 9d5d1dd98a959583192a824cf4728da00eebc271..f24f0c07a623eac9182f6728457922233adf857f 100644 (file)
@@ -14,36 +14,32 @@ public class ShisenSho extends Application {
        public int[] boardSize=new int[2];
        public int difficulty=1; // 1=Easy, 2=Hard
        public int size=3; // 1=Small, 2=Medium, 3=Big
-       public int tilesetid = R.drawable.classic;
+       public String tilesetid = "classic";
        public boolean gravity=true;
        public boolean timeCounter=true;
 
-       public static void log(String msg) {
-               Log.w("ShisenSho", msg);
-       }
-
        public void newPlay() {
+               loadOptions();
                board = new Board();
                board.buildRandomBoard(boardSize[0],boardSize[1],difficulty,gravity);
        }
 
        public void setSize(int s) {
+               size = s;
+
                switch (s) {
                case 1:
-                       size=1;
-                       boardSize[0]=6+2;
-                       boardSize[1]=8+2;
+                       boardSize[0] = 6 + 2;
+                       boardSize[1] = 8 + 2;
                        break;
                case 2:
-                       size=2;
-                       boardSize[0]=6+2;
-                       boardSize[1]=12+2;
+                       boardSize[0] = 6 + 2;
+                       boardSize[1] = 12 + 2;
                        break;
                case 3:
                default:
-                       size=3;
-                       boardSize[0]=6+2;
-                       boardSize[1]=16+2;
+                       boardSize[0] = 6 + 2;
+                       boardSize[1] = 16 + 2;
                        break;
                }
        }
@@ -73,64 +69,62 @@ public class ShisenSho extends Application {
        public void onCreate() {
                super.onCreate();
                PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
-               setOptions();
+               Log.d("ShisenSho", "starting up...");
+               loadOptions();
        }
 
-       public void setOptions() {
-               SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
+       private void loadOptions() {
+               SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
 
                // FIXME: handle NumberFormatException here?
-               int size = Integer.parseInt(sharedPref.getString("pref_size", "1"));
-               int difficulty = Integer.parseInt(sharedPref.getString("pref_diff", "1"));
-               boolean gravity = sharedPref.getBoolean("pref_grav", true);
-               boolean timeCounter = sharedPref.getBoolean("pref_time", true);
-               int tilesetid = tilesetStringToRes(sharedPref.getString("pref_tile", ""));
+               setSize(Integer.parseInt(sp.getString("pref_size", "1")));
+               difficulty = Integer.parseInt(sp.getString("pref_diff", "1"));
+               gravity = sp.getBoolean("pref_grav", true);
+               timeCounter = sp.getBoolean("pref_time", true);
+               tilesetid = sp.getString("pref_tile", "");
+       }
+
+       public void checkForChangedOptions() {
+               SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
+
+               // FIXME: handle NumberFormatException here?
+               int size = Integer.parseInt(sp.getString("pref_size", "1"));
+               int difficulty = Integer.parseInt(sp.getString("pref_diff", "1"));
+               boolean gravity = sp.getBoolean("pref_grav", true);
+               boolean timeCounter = sp.getBoolean("pref_time", true);
+               String tilesetid = sp.getString("pref_tile", "");
 
                boolean needsReset = false;
 
                if (size != this.size) {
-                       setSize(size);
                        needsReset = true;
                }
 
                if (difficulty != this.difficulty) {
-                       this.difficulty = difficulty;
                        needsReset = true;
                }
 
                if (gravity != this.gravity) {
-                       this.gravity = gravity;
                        needsReset = true;
                }
 
-               if ((timeCounter != this.timeCounter) && (view != null)) {
-                       this.timeCounter = timeCounter;
-                       view.onTimeCounterActivate();
+               if (timeCounter != this.timeCounter) {
+                       needsReset = true;
                }
 
                if ((tilesetid != this.tilesetid) && (view != null)) {
+                       // tileset can be changed without a reset
                        this.tilesetid = tilesetid;
                        view.loadTileset();
                }
 
-               if (needsReset && (view != null)) {
-                       view.reset();
+               if (needsReset) {
+                       if ((view != null) && (activity != null)) {
+                               activity.onOptionsChanged();
+                       } else {
+                               Log.d("ShisenSho", "Preferences changed, but no view or activity online - huh?");
+                       }
                }
 
        }
-
-       private int tilesetStringToRes(String s)
-       {
-               if (s.equals("classic")) {
-                       return R.drawable.classic;
-               } else if (s.equals("jade")) {
-                       return R.drawable.jade;
-               } else if (s.equals("traditional")) {
-                       return R.drawable.traditional;
-               } else if (s.equals("pixel")) {
-                       return R.drawable.pixel;
-               } else {
-                       return R.drawable.classic;
-               }
-       }
 }
Impressum, Datenschutz