public void onAnimationFinished(Animation animation) { if (animation == moveAnimation) { dataHolder.getGameEngine().moveFinished(); } else if (animation == explosionAnimation) { dataHolder.getGameEngine().selectionExploded(); startMove(); } }
private void drawBackGroud(Canvas canvas) { if (dataHolder.getGameEngine().getGameField().getSizeY() != backGroundImageFieldSizeY || dataHolder.getGameEngine().getGameField().getSizeX() != backGroundImageFieldSizeX || backgroundImageSaved == null) { backgroundImageSaved = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.RGB_565); Canvas newCanvas = new Canvas(backgroundImageSaved); drawBackGroudImageOnGivenCanvas(newCanvas); backGroundImageFieldSizeX = dataHolder.getGameEngine().getGameField().getSizeX(); backGroundImageFieldSizeY = dataHolder.getGameEngine().getGameField().getSizeY(); } canvas.drawBitmap(backgroundImageSaved, 0, 0, null); }
@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; }
public void startMove() { if (selectionAnimation.isActive()) { selectionAnimation.stop(); } moveAnimation.setSpeed(dataHolder.getConfiguration().isFastAnimation()); moveAnimation.setStartValues( dataHolder.getGameEngine().getGameField().getMaxMoveX(), dataHolder.getGameEngine().getGameField().getMaxMoveY()); moveAnimation.init(SystemClock.elapsedRealtime()); invalidate(); }
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()); } }