package com.imps.tabletennis.tranning; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; public class Table { static final float x=Constant.TABLE_X; static final float y=Constant.TABLE_Y; Bitmap[] bitmaps; static final float bottomWidth=Constant.BOTTOM_WIDTH; static final float bottomHeight=Constant.BOTTOM_HEIGHT; static final float edgeBig=Constant.EDGE_BIG; static final float edgeSmall=Constant.EDGE_SMALL; static final float middle=Constant.MIDDLE; static final float disCorner=Constant.DIS_CORNER; static final float disMiddle=Constant.DIS_MIDDLE; static float tableAreaWidth=bottomWidth-edgeBig*2; static float TableAreaHeight=bottomHeight-edgeBig*2; static final float ab=(tableAreaWidth-middle)/2-edgeSmall; static final float ef=TableAreaHeight-edgeSmall*2; static float lkx=x+edgeBig; static float efx=lkx+tableAreaWidth; static float ady=y+edgeBig; static float jgy=ady+TableAreaHeight; static final float A[]={lkx+edgeSmall-disCorner, ady}; static final float B[]={lkx+edgeSmall+ab+disMiddle, ady}; static final float C[]={lkx+edgeSmall+ab+middle-disMiddle, ady}; static final float D[]={lkx+edgeSmall+ab*2+middle+disCorner, ady}; static final float E[]={efx, ady+edgeSmall-disCorner}; static final float F[]={efx, ady+edgeSmall+ef+disCorner}; static final float G[]={lkx+edgeSmall+ab*2+middle+disCorner, jgy}; static final float H[]={lkx+edgeSmall+ab+middle-disMiddle, jgy}; static final float I[]={lkx+edgeSmall+ab+disMiddle, jgy}; static final float J[]={lkx+edgeSmall-disCorner, jgy}; static final float K[]={lkx, ady+edgeSmall+ef+disCorner}; static final float L[]={lkx, ady+edgeSmall-disCorner}; public static float collisionPoints[][]={A,B,C,D,E,F,G,H,I,J,K,L}; static final float holeCenterRevise=Constant.HOLE_CENTER_REVISE; static /*final*/ float M[]={lkx,ady}; static /*final*/ float N[]={lkx+edgeSmall+ab+middle/2, ady-holeCenterRevise}; static /*final*/ float O[]={efx,ady}; static /*final*/ float P[]={efx,jgy}; static /*final*/ float Q[]={lkx+edgeSmall+ab+middle/2, jgy+holeCenterRevise-2}; static /*final*/ float R[]={lkx,jgy}; public static float holeCenterPoints[][]={M,N,O,P,Q,R}; static float cornerHoleR=Constant.CORNER_HOLE_R; static float middleHoleR=Constant.MIDDLE_HOLE_R; static final float xBall1=lkx+Constant.X_OFFESET_BALL1; static final float yBall1=ady+TableAreaHeight/2-Ball.r; static final float xBallDis=(float) ((Ball.d+Constant.GAP_BETWEEN_BALLS)*Math.sin(Math.PI/3)); static final float yBallDis=(float) ((Ball.d+Constant.GAP_BETWEEN_BALLS)*Math.cos(Math.PI/3)); static final float yDis=Ball.d+Constant.GAP_BETWEEN_BALLS; public static void scale(float ratio){ lkx = lkx* ratio; efx = efx*ratio; ady = ady*ratio; jgy = jgy*ratio; tableAreaWidth = tableAreaWidth*ratio; TableAreaHeight = TableAreaHeight*ratio; cornerHoleR = cornerHoleR*ratio; middleHoleR = middleHoleR*ratio; M[0] = M[0]*ratio;M[1] = M[1]*ratio; N[0] = N[0]*ratio;N[1] = N[1]*ratio; O[0] = O[0]*ratio;O[1] = O[1]*ratio; P[0] = P[0]*ratio;P[1] = P[1]*ratio; Q[0] = Q[0]*ratio;Q[1] = Q[1]*ratio; R[0] = R[0]*ratio;R[1] = R[1]*ratio; } public static float[][] AllBallsPos={ new float[]{xBall1-Constant.DIS_WITH_MAIN_BALL,yBall1}, new float[]{xBall1,yBall1}, new float[]{xBall1+xBallDis,yBall1+yBallDis}, new float[]{xBall1+xBallDis,yBall1+yBallDis-yDis}, new float[]{xBall1+xBallDis*2,yBall1+yBallDis*2}, new float[]{xBall1+xBallDis*2,yBall1+yBallDis*2-yDis}, new float[]{xBall1+xBallDis*2,yBall1+yBallDis*2-yDis*2}, new float[]{xBall1+xBallDis*3,yBall1+yBallDis*3}, new float[]{xBall1+xBallDis*3,yBall1+yBallDis*3-yDis}, new float[]{xBall1+xBallDis*3,yBall1+yBallDis*3-yDis*2}, new float[]{xBall1+xBallDis*3,yBall1+yBallDis*3-yDis*3}, new float[]{xBall1+xBallDis*4,yBall1+yBallDis*4}, new float[]{xBall1+xBallDis*4,yBall1+yBallDis*4-yDis}, new float[]{xBall1+xBallDis*4,yBall1+yBallDis*4-yDis*2}, new float[]{xBall1+xBallDis*4,yBall1+yBallDis*4-yDis*3}, new float[]{xBall1+xBallDis*4,yBall1+yBallDis*4-yDis*4}, }; public static float[][] bmpsPos={ new float[]{lkx,ady},//0 new float[]{x,y},//1 new float[]{lkx+edgeSmall, y},//2 new float[]{lkx+edgeSmall+ab, y},//3 new float[]{lkx+edgeSmall+ab+middle, y},//4 new float[]{lkx+edgeSmall+ab*2+middle, y},//5 new float[]{efx, ady+edgeSmall},//6 new float[]{lkx+edgeSmall+ab*2+middle, ady+edgeSmall+ef},//7 new float[]{lkx+edgeSmall+ab+middle, jgy},//8 new float[]{lkx+edgeSmall+ab, jgy},//9 new float[]{lkx+edgeSmall, jgy},//10 new float[]{x, ady+edgeSmall+ef},//11 new float[]{x, ady+edgeSmall},//12 }; public Table(Bitmap[] bitmaps) { this.bitmaps=bitmaps; } public void drawSelf(Canvas canvas,Paint paint) { for(int i=0;i<bitmaps.length;i++){ canvas.drawBitmap(bitmaps[i], bmpsPos[i][0]+Constant.X_OFFSET, bmpsPos[i][1]+Constant.Y_OFFSET, paint); } // // // paint.setColor(Color.YELLOW);paint.setAlpha(100); // canvas.drawRect(lkx+Constant.X_OFFSET, ady+Constant.Y_OFFSET, efx+Constant.X_OFFSET, jgy+Constant.Y_OFFSET, paint); // paint.setColor(Color.WHITE);paint.setAlpha(130); // canvas.drawRect(lkx+Constant.X_OFFSET, y+Constant.Y_OFFSET, lkx+edgeSmall+Constant.X_OFFSET, y+edgeBig+Constant.Y_OFFSET, paint); // canvas.drawRect(efx+Constant.X_OFFSET, jgy-edgeSmall+Constant.Y_OFFSET, efx+edgeBig+Constant.X_OFFSET, jgy+Constant.Y_OFFSET, paint); // canvas.drawRect(x+(bottomWidth-middle)/2+Constant.X_OFFSET, y+Constant.Y_OFFSET, x+(bottomWidth+middle)/2+Constant.X_OFFSET, jgy+Constant.Y_OFFSET, paint); // paint.setAlpha(255); // paint.setColor(Color.YELLOW);paint.setAlpha(100); // for(float[] p:holeCenterPoints) // { // // // if(p==Table.N || p==Table.Q){ // canvas.drawCircle(p[0]+Constant.X_OFFSET, p[1]+Constant.Y_OFFSET, middleHoleR, paint); // }else{// // canvas.drawCircle(p[0]+Constant.X_OFFSET, p[1]+Constant.Y_OFFSET, cornerHoleR, paint); // } // } // paint.setAlpha(255); } }