ShockWave.java

/**
* Copyright (c) 2012-2013 Nokia Corporation. All rights reserved.
* Nokia and Nokia Connecting People are registered trademarks of Nokia Corporation. 
* Oracle and Java are trademarks or registered trademarks of Oracle and/or its
* affiliates. Other product and company names mentioned herein may be trademarks
* or trade names of their respective owners. 
* See LICENSE.TXT for license information.
*/

package com.nokia.example.explonoid.effects;

import javax.microedition.lcdui.Graphics;

/**
 * Paints a shock wave effect on a Graphics object. 
 * 
 * Triggered when e.g. the ball hits a wall or the player 
 * taps the screen. For usage, see the ShockWaveManager class.
 * 
 * @see com.nokia.example.explonoid.effects.ShockWaveManager
 */
public class ShockWave {

    private int maxSize = 100;
    private int frames = 6;
    private int frame = 1;
    private int x = 0;
    private int y = 0;

    public ShockWave(int x, int y, int size, int frames) {
        this.x = x;
        this.y = y;
        this.maxSize = size;
        this.frames = frames;
    }

    public boolean paint(Graphics g) {
        int width = (int) (frame * maxSize / frames + 0.5);
        int height = (int) (0.5 * frame * maxSize / frames + 0.5);
        g.setColor(0x88FFFFFF);
        g.drawArc(x - width / 2, y - height / 2, width, height, 0, 360);
        if (frame < frames) {
            frame++;
            return true;
        }
        else {
            return false;
        }
    }
}