/*
 * step3.java
 *
 * DATE : 2005/11/27 12:56
 */
import com.nttdocomo.ui.*;
import com.nttdocomo.io.*;
import java.io.*;

/**
 * step3
 *
 * @author NAME
 */
public class step3 extends IApplication {

	MainCanvas mc;

	public void start() {
		/*
		 * The program of IApplication is written here.
		 */
		System.out.println("Start IApplication");

		mc = new MainCanvas();
		mc.init();
		Display.setCurrent(mc);

	}

}

class MainCanvas extends Canvas implements Runnable {

	Image		imgMain;				//メインイメージ：最終形態（キャンバス）
	Image		imgLoadResouce1;		//リソースからの読み込みイメージ：作業域
	Image		imgLoadResouce2;		//リソースからの読み込みイメージ：作業域
	Graphics	graMain;				//グラフィックオブジェクト

	int intWidth;						//キャンバスの幅
	int intHeight;						//キャンバスの高さ
	int intResourse1X;					//リソース1を描画するx座標
	int intResourse1Y;					//キャンバスの高さy座標

	private Thread thread;				//スレッド

	int intTime;						//タイムカウント

	MainCanvas() 
	{
		//キャンバスのサイズをセット
		intWidth = 240;
		intHeight = 240;
		intResourse1X = 0;
		intResourse1Y = 0;

		intTime = 0;

		//画像が取得できないときヌルポになるので初期化
		imgMain = Image.createImage(intWidth, intHeight);
		imgLoadResouce1 = Image.createImage(intWidth, intHeight);
		imgLoadResouce2 = Image.createImage(intWidth, intHeight);
		graMain = imgMain.getGraphics();

		//リソースからの読み込み
		try
		{
			MediaImage mediaImg = MediaManager.getImage("resource:///image1.gif");
			mediaImg.use();
			imgLoadResouce1 = mediaImg.getImage();
			mediaImg = MediaManager.getImage("resource:///image2.gif");
			mediaImg.use();
			imgLoadResouce2 = mediaImg.getImage();
		}
		catch( ConnectionException e)
		{}
		catch(IOException e)
		{}

		graMain.lock();
		//キャンバスをクリア
		graMain.clearRect(0, 0, intWidth, intHeight);
		//リソース1を描画
		graMain.drawImage(imgLoadResouce1, 0, 0);
		graMain.unlock(true);

	}

	void init()
	{
		//スレッド作成・スタート
		thread = new Thread(this);
		thread.start();
	}


	public void paint(Graphics g)
	{//repaint()が呼び出されると実行される

		//imgMain再描画
		g.lock();
		//g.clearRect(0, 0, intWidth, intHeight);
		g.drawImage(imgMain, 0, 0);
		g.unlock(true);

		//System.out.println("paint");
	}

	public void run()
	{
		//作ったスレッドと現在のスレッドが一致しているときループ
		Thread thisThread = Thread.currentThread();
		while(thread == thisThread)
		{

			try
			{
				//10ミリ秒スリープさせる
				Thread.sleep(10);
			}
			catch(InterruptedException e)
			{}

			if(intTime == 1000)
			{	//タイムカウントをリセット
				intTime = 0;
			}
			else
			{	//タイムをカウント
				intTime = intTime + 10;
			}

			if(intResourse1X > -240)
			{	//リソース描画X座標をマイナス
				intResourse1X = intResourse1X - 24;
			}
			else
			{	//threadを破棄し、ループ終了
				thread = null;
			}

			//graMainを再構築
			graMain.lock();
			graMain.clearRect(0, 0, intWidth, intHeight);
			graMain.drawImage(imgLoadResouce1, intResourse1X, 0);
			graMain.drawImage(imgLoadResouce2, 240 + intResourse1X, 0);

			//タイムカウントを描画
			if((intTime / 100) >= 10)
			{
				graMain.drawString(Integer.toString((intTime / 100)) + "/10", 200, 220);
			}
			else
			{
				graMain.drawString("0" + Integer.toString((intTime / 100)) + "/10", 200, 220);
			}

			graMain.unlock(true);

			//再描画
			repaint();
		}
	}
}
