/***
 * 
 * Copyright (C) 2008 Alessandro La Rosa
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * Contact: alessandro.larosa@gmail.com
 *
 * Author: Alessandro La Rosa
 */

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

public class ExplodingImageCanvas extends Canvas implements Runnable
{
	int width = 0;
	int height = 0;
	
	ExplodingImage[] images = null;
	int explodingIndex = 0;
	boolean explodesEnded = false;
	
	public ExplodingImageCanvas()
	{
		this.width = getWidth();
		this.height = getHeight();
		
		try
		{
			images = new ExplodingImage[3];
			
			this.images[0] = new ExplodingImage(Image.createImage("/image1.png"), ExplodingImage.DEFAULT_LEVEL, 2, 2);
			this.images[1] = new ExplodingImage(Image.createImage("/image2.png"), ExplodingImage.DEFAULT_LEVEL, 4, 4);
			this.images[2] = new ExplodingImage(Image.createImage("/image3.png"), ExplodingImage.DEFAULT_LEVEL, 8, 8);
			
			images[0].explode(2000L);
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		new Thread(this).start();
	}
	protected void keyPressed(int arg0)
	{
		if(explodesEnded)
		{
			for(int i = images.length - 1; i >= 0; i--)
			{
				images[i].ended = false;
			}
			
			explodesEnded = false;
			
			explodingIndex = 0;
			
			images[explodingIndex].explode(2000L);
		}
	}
	
	
	protected void paint(Graphics g)
	{
		g.setColor(0xffffff);
		g.fillRect(0, 0, width, height);
		
		if(explodesEnded)
		{
			g.setColor(0x000000);
			g.drawString("Press a key to restart", width / 2, height / 2, Graphics.BASELINE | Graphics.HCENTER);
		}
		else
		{
			for(int i = images.length - 1; i >= 0; i--)
			{
				//images[i].paint(g, width / 2, height / 2, Graphics.HCENTER | Graphics.VCENTER);
				images[i].paint(g, width / 2, height / 2, Graphics.HCENTER | Graphics.VCENTER);
			}
		}
	}
	public void run()
	{
		while(true)
		{
			repaint();
			
			if(images[explodingIndex].ended)
			{
				if(explodingIndex < images.length - 1)
				{
					explodingIndex++;
					
					images[explodingIndex].explode(2000L);
				}
				else
				{
					explodesEnded = true;
				}
				
			}
			
			try
			{
				synchronized(this)
				{
					wait(50L);
				}
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}
		}
	}
	
}
