]> git.zerfleddert.de Git - FreeShisen/commitdiff
Merge branch 'master' of https://code.google.com/p/freeshisen
authorgitknilch <gitknilch@cwde.de>
Sat, 9 Mar 2013 18:39:28 +0000 (19:39 +0100)
committergitknilch <gitknilch@cwde.de>
Sat, 9 Mar 2013 18:39:28 +0000 (19:39 +0100)
Conflicts:
src/de/cwde/freeshisen/ShisenShoView.java

src/de/cwde/freeshisen/ShisenShoView.java

index 617e5f7058e59a1c9e4d1cd660791af9fc67fdfb..76d7fc65671cf8bc008e8e3b462c9cc4136526b7 100644 (file)
@@ -28,6 +28,7 @@ import android.view.SurfaceView;
 
 class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
 
+       private static final String INVALID_TIME = "9:99:99";
        private static final String COLOR_TEXT = "#FFFFFF";
        private static final String COLOR_TEXT_SHADOW = "#000000";
        private static final String COLOR_HINT = "#F0C000";
@@ -60,6 +61,7 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
        private StatePaint pstate;
        private Canvas canvas = null;
        private SurfaceHolder surfaceHolder = null;
+       private String time = INVALID_TIME;
 
        public ShisenShoView(ShisenSho shishenSho) {
                super((Context) shishenSho);
@@ -289,14 +291,8 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
 
        protected void doDraw(Canvas canvas) {
                try {
-                       // Double buffering
-                       // Bitmap buffer = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888);
-                       //Canvas cbuffer = new Canvas(buffer);
-                       Canvas cbuffer = canvas;
                        if (canvas == null) return;
 
-                       //super.onDraw(canvas);
-
                        // Board upper left corner on screen
                        int x0=0;
                        int y0=0;
@@ -308,8 +304,6 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
 
                        int selectcolor = Color.parseColor(COLOR_SELECTED);
                        int hintcolor = Color.parseColor(COLOR_HINT);
-                       Paint paint = new Paint();
-                       paint.setFlags(Paint.ANTI_ALIAS_FLAG);
 
                        // Background & board painting
                        switch (pstate) {
@@ -326,7 +320,7 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
                                int bgHeight = bg.getHeight();
                                for (int i=0; i<screenHeight/bgHeight+1; i++) {
                                        for (int j=0; j<screenWidth/bgWidth+1; j++) {
-                                               cbuffer.drawBitmap(bg, j*bgWidth, i*bgHeight, paint);
+                                               canvas.drawBitmap(bg, j*bgWidth, i*bgHeight, null);
                                        }
                                }
 
@@ -338,7 +332,7 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
                                                        // Tiles are 56px height, 40px width each
                                                        char piece=app.board.board[i][j];
                                                        if (piece!=0) {
-                                                               cbuffer.drawBitmap(tile[piece], x0+j*tileWidth, y0+i*tileHeight, paint);
+                                                               canvas.drawBitmap(tile[piece], x0+j*tileWidth, y0+i*tileHeight, null);
                                                        }
                                                }
                                        }
@@ -346,37 +340,31 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
                                break;
                        }
 
-                       // Red rectangle for selection 1
+                       // rectangle for selection 1
                        switch (pstate) {
                        case SELECTED1:
                        case SELECTED2:
                        case MATCHED:
-                               highlightTile(cbuffer, x0, y0, selection1, selectcolor);
+                               highlightTile(canvas, x0, y0, selection1, selectcolor);
                                break;
                        }
 
-                       // Red rectangle for selection 2
+                       // rectangle for selection 2
                        switch (pstate) {
                        case SELECTED2:
                        case MATCHED:
-                               highlightTile(cbuffer, x0, y0, selection2, selectcolor);
+                               highlightTile(canvas, x0, y0, selection2, selectcolor);
                                break;
                        }
 
                        // Matching path
                        switch (pstate) {
                        case MATCHED:
-                               paint.setColor(selectcolor);
-                               paint.setStyle(Style.STROKE);
-                               paint.setStrokeCap(Cap.ROUND);
-                               paint.setStrokeJoin(Join.ROUND);
-                               paint.setStrokeWidth(3);
-
                                if (path!=null) {
                                        Point p0=null;
                                        for (Point p1 : path) {
                                                if (p0!=null) {
-                                                       drawLine(cbuffer, x0, y0, p0, p1, paint);
+                                                       drawLine(canvas, x0, y0, p0, p1, selectcolor);
                                                }
                                                p0=p1;
                                        }
@@ -384,7 +372,7 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
                                break;
                        }
 
-                       // Orange hint rectangles
+                       // hint rectangles
                        switch (pstate) {
                        case HINT:
                                if (pairs != null && pairs.size() > 0) {
@@ -392,26 +380,21 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
                                        Point a = pair.a;
                                        Point b = pair.b;
                                        path = app.board.getPath(a, b);
-                                       paint.setColor(hintcolor);
-                                       paint.setStyle(Style.STROKE);
-                                       paint.setStrokeCap(Cap.ROUND);
-                                       paint.setStrokeJoin(Join.ROUND);
-                                       paint.setStrokeWidth(3);
 
-                                       highlightTile(cbuffer, x0, y0, a, hintcolor);
+                                       highlightTile(canvas, x0, y0, a, hintcolor);
 
                                        if (path != null) {
                                                Point p0 = null;
                                                for (Point p1 : path) {
                                                        if (p0 != null) {
-                                                               drawLine(cbuffer, x0, y0, p0, p1, paint);
+                                                               drawLine(canvas, x0, y0, p0, p1, hintcolor);
                                                        }
                                                        p0 = p1;
                                                }
                                                path = null;
                                        }
 
-                                       highlightTile(cbuffer, x0, y0, b, hintcolor);
+                                       highlightTile(canvas, x0, y0, b, hintcolor);
                                }
                                break;
                        }
@@ -419,16 +402,16 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
                        // Win & loose notifications
                        switch (pstate) {
                        case WIN:
-                               drawMessage(cbuffer, screenWidth / 2, screenHeight / 2, true,
+                               drawMessage(canvas, screenWidth / 2, screenHeight / 2, true,
                                                "You Win!", 100);
                                break;
                        case LOSE:
-                               drawMessage(cbuffer, screenWidth / 2, screenHeight / 2, true,
+                               drawMessage(canvas, screenWidth / 2, screenHeight / 2, true,
                                                "Game Over", 100);
                                break;
                        }
 
-                       if (app.timeCounter) switch (pstate) {
+                       switch (pstate) {
                        case BOARD:
                        case SELECTED1:
                        case SELECTED2:
@@ -441,31 +424,21 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
                                int hours = (int) (playTime / (60 * 60));
                                int minutes = (int) ((playTime / 60) % 60);
                                int seconds = (int) (playTime % 60);
-                               String time = String.format(Locale.US, "%01d:%02d:%02d",
-                                               hours, minutes, seconds);
+                               if (hours < 10) {
+                                       time = String.format(Locale.US, "%01d:%02d:%02d",
+                                                       hours, minutes, seconds);
+                               } else {
+                                       time = INVALID_TIME;
+                               }
 
                                int timePosX=screenWidth-120;
                                int timePosY=screenHeight-10;
-
-                               drawMessage(cbuffer, timePosX, timePosY, false, time, 30);
-                               break;
-                       }
-
-                       // Debug messages
-                       /*
-                       debugMessage="StatePlay: "+cstate+"\n"+"StatePaint: "+pstate;
-                       if (debugMessage!=null && debugMessage.length()>0) {
-                               int l = 20;
-                               String lines[] = debugMessage.split("\n");
-                               for (int i=0; i<lines.length; i++) {
-                                       drawMessage(cbuffer,1,l,false,lines[i],"#FFFF00",30);
-                                       l+=30;
+                               
+                               if (app.timeCounter) {
+                                       drawMessage(canvas, timePosX, timePosY, false, time, 30);
                                }
+                               break;
                        }
-                        */
-
-                       // Double buffer dumping
-                       // canvas.drawBitmap(buffer, 0, 0, null);
 
                } catch (Exception e) {
                        e.printStackTrace();
@@ -473,16 +446,22 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
 
        }
 
-       private void drawLine(Canvas cbuffer, int x0, int y0, Point p0, Point p1,
-                       Paint paint) {
-               cbuffer.drawLine(
+       private void drawLine(Canvas canvas, int x0, int y0, Point p0, Point p1, int color) {
+               Paint paint = new Paint();
+               paint.setFlags(Paint.ANTI_ALIAS_FLAG);
+               paint.setColor(color);
+               paint.setStyle(Style.STROKE);
+               paint.setStrokeCap(Cap.ROUND);
+               paint.setStrokeJoin(Join.ROUND);
+               paint.setStrokeWidth(3);
+               canvas.drawLine(
                                x0 + p0.j * tileWidth - 2 + (tileWidth / 2),
                                y0 + p0.i * tileHeight - 2 + (tileHeight / 2),
                                x0 + p1.j * tileWidth - 2 + (tileWidth / 2),
                                y0 + p1.i * tileHeight - 2 + (tileHeight / 2), paint);
        }
 
-       private void highlightTile(Canvas cbuffer, int x0, int y0, Point p, int color) {
+       private void highlightTile(Canvas canvas, int x0, int y0, Point p, int color) {
                Paint paint = new Paint();
                paint.setFlags(Paint.ANTI_ALIAS_FLAG);
                paint.setColor(color);
@@ -495,7 +474,7 @@ class ShisenShoView extends SurfaceView implements SurfaceHolder.Callback {
                                y0 + p.i * tileHeight - 2,
                                x0 + p.j * tileWidth + tileWidth + 2,
                                y0 + p.i * tileHeight + tileHeight + 2);
-               cbuffer.drawRect(r, paint);
+               canvas.drawRect(r, paint);
        }
 
        @Override
Impressum, Datenschutz