]> git.zerfleddert.de Git - FreeShisen/blobdiff - src/de/cwde/shisensho/ShisenShoView.java
add scaling.
[FreeShisen] / src / de / cwde / shisensho / ShisenShoView.java
index 9872c6644654d91fa868035e15c5d04dc7d7b913..06162c18d9e31164edb9038339b17fc32759ada9 100644 (file)
@@ -86,20 +86,28 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
                // The tile set has 4 rows x 9 columns
                tilesetRows = 4;
                tilesetCols = 9;
-               tileWidth = tileset.getWidth()/tilesetCols;
-               tileHeight = tileset.getHeight()/tilesetRows;
+               int loadedtileWidth = tileset.getWidth()/tilesetCols;
+               int loadedtileHeight = tileset.getHeight()/tilesetRows;
                tile = new Bitmap[tilesetRows*tilesetCols];
-               
-               // align to screen
+
+               // align to screen:
+               // "large" is 16x6, and we want to have a nice border, so we use 17x7 and
+               // choose the lowest scale so everything fits
+               float scalex = ((float) screenWidth/17) / loadedtileWidth;
+               float scaley = ((float) screenHeight/7) / loadedtileHeight;
+               if (scaley < scalex) {
+                       scalex = scaley;
+               } else {
+                       scaley = scalex;
+               }
                Matrix matrix = new Matrix();
-               matrix.setScale(1.0f, 1.0f); // FIXME!
-               
-               // TODO: go on.
-               
+               matrix.setScale(scalex, scaley);
+
                int k=0;
                for (int i=0; i<tilesetRows; i++) {
                        for (int j=0; j<tilesetCols; j++) {
-                               tile[k] = Bitmap.createBitmap(tileset, j*tileWidth, i*tileHeight, tileWidth, tileHeight, matrix, false);
+                               tile[k] = Bitmap.createBitmap(tileset, j*loadedtileWidth, i*loadedtileHeight,
+                                               loadedtileWidth, loadedtileHeight, matrix, false);
                                tile[k].setDensity(Bitmap.DENSITY_NONE);
                                k++;
                        }
@@ -123,18 +131,18 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
                        }
                };
                timer=new Timer();
-       timer.scheduleAtFixedRate(new TimerTask() {
-               public void run() {
-                       timerHandler.sendEmptyMessage(Activity.RESULT_OK);
-               }
-       }, 0, 1000);
+               timer.scheduleAtFixedRate(new TimerTask() {
+                       public void run() {
+                               timerHandler.sendEmptyMessage(Activity.RESULT_OK);
+                       }
+               }, 0, 1000);
                timerRegistered=true;
        }
 
        private void unregisterTimer() {
                if (timer==null) return; // Already unregistered
                timer.cancel();
-       timer = null;
+               timer = null;
                timerHandler = null;
                timerRegistered=false;
        }
@@ -176,24 +184,24 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
        }
 
        public boolean onOptionsItemSelected(MenuItem item) {
-           // Handle item selection
-           switch (item.getItemId()) {
-           case R.id.hint:
-               this.postDelayed(new Runnable() { public void run() { onHintActivate(); } }, 100);
-               return true;
-           case R.id.undo:
-               this.postDelayed(new Runnable() { public void run() { onUndoActivate(); } }, 100);
-               return true;
-           case R.id.clean:
-               this.postDelayed(new Runnable() { public void run() { reset(); } }, 100);
-               return true;
-           case R.id.options:
-               return true;
-           case R.id.about:
-               return true;
-           default:
-               return false;
-           }
+               // Handle item selection
+               switch (item.getItemId()) {
+               case R.id.hint:
+                       this.postDelayed(new Runnable() { public void run() { onHintActivate(); } }, 100);
+                       return true;
+               case R.id.undo:
+                       this.postDelayed(new Runnable() { public void run() { onUndoActivate(); } }, 100);
+                       return true;
+               case R.id.clean:
+                       this.postDelayed(new Runnable() { public void run() { reset(); } }, 100);
+                       return true;
+               case R.id.options:
+                       return true;
+               case R.id.about:
+                       return true;
+               default:
+                       return false;
+               }
        }
 
        public void reset() {
@@ -235,9 +243,9 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
 
        private void onUpdateTime() {
                paint(pstate);
-           if (!(app.timeCounter && cstate!=StatePlay.GAMEOVER)) {
-               unregisterTimer();
-           }
+               if (!(app.timeCounter && cstate!=StatePlay.GAMEOVER)) {
+                       unregisterTimer();
+               }
        }
 
        @SuppressWarnings("deprecation")
@@ -483,7 +491,7 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
                                        l+=30;
                                }
                        }
-                       */
+                        */
 
                        // Double buffer dumping
                        // canvas.drawBitmap(buffer, 0, 0, null);
@@ -510,9 +518,9 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
                        switch (cstate) {
                        case IDLE:
                                if (i>=0 &&
-                                               i<app.board.boardSize[0] &&
-                                               j>=0 && j<app.board.boardSize[1] &&
-                                               app.board.board[i][j]!=0) {
+                               i<app.board.boardSize[0] &&
+                               j>=0 && j<app.board.boardSize[1] &&
+                               app.board.board[i][j]!=0) {
                                        selection1[0]=i;
                                        selection1[1]=j;
                                        paint(StatePaint.SELECTED1);
@@ -521,8 +529,8 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
                                break;
                        case SELECTED1:
                                if (i>=0 && i<app.board.boardSize[0] &&
-                                               j>=0 && j<app.board.boardSize[1] &&
-                                               app.board.board[i][j]!=0) {
+                               j>=0 && j<app.board.boardSize[1] &&
+                               app.board.board[i][j]!=0) {
                                        if (i==selection1[0] && j==selection1[1]) {
                                                paint(StatePaint.BOARD);
                                                control(StatePlay.IDLE);
@@ -670,5 +678,5 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
                paint.setColor(Color.parseColor("#006666"));
                paint.setFlags(Paint.ANTI_ALIAS_FLAG);
        }
-*/
+        */
 }
Impressum, Datenschutz