@Override public boolean onTouchEvent(MotionEvent event) { if (moveAnimation.isActive() || explosionAnimation.isActive()) { return true; } if (event.getAction() != MotionEvent.ACTION_UP) { return true; // super.onTouchEvent(event); } int x = Math.round((event.getX() - dataHolder.getCellSize() / 2) / dataHolder.getCellSize()); int y = Math.round((event.getY() - dataHolder.getCellSize() / 2) / dataHolder.getCellSize()); if (x < 0 || x >= dataHolder.getGameEngine().getGameField().getSizeX() || y < 0 || y >= dataHolder.getGameEngine().getGameField().getSizeY()) { return super.onTouchEvent(event); } else { TouchResult results = dataHolder.getGameEngine().touchAction(x, y); switch (results) { case explode: startExplosion(); break; case selected: startSelection(); break; case no_action: if (selectionAnimation.isActive()) { selectionAnimation.stop(); invalidate(); } if (moveAnimation.isActive()) { moveAnimation.stop(); invalidate(); } break; default: break; } } return true; }
private void drawBackGroudImageOnGivenCanvas(Canvas canvas) { canvas.drawBitmap(dataHolder.getBackgroundImage(), 0, 0, null); dataHolder.getLightPaint().setColor(Color.rgb(0x83, 0x83, 0x83)); dataHolder.getDarkPaint().setColor(Color.rgb(0x3b, 0x3b, 0x3b)); final int cellSize = dataHolder.getCellSize(); final int sizeY = dataHolder.getGameEngine().getGameField().getSizeY(); final int sizeX = dataHolder.getGameEngine().getGameField().getSizeX(); for (int i = 1; i < sizeX; i++) { canvas.drawLine( i * cellSize - 1, 0, i * cellSize - 1, sizeY * cellSize, dataHolder.getLightPaint()); canvas.drawLine(i * cellSize, 0, i * cellSize, sizeY * cellSize, dataHolder.getDarkPaint()); } for (int i = 1; i < sizeY; i++) { canvas.drawLine(0, i * cellSize, sizeX * cellSize, i * cellSize, dataHolder.getDarkPaint()); canvas.drawLine( 0, i * cellSize + 1, sizeX * cellSize, i * cellSize + 1, dataHolder.getLightPaint()); } }
public int getCellSize() { return dataHolder.getCellSize(); }