/** クォータービュー用の描画エンジン */

import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.applet.*;


public class UnitGraphicsEngineAppQuarter extends UnitGraphicsEngine {

	static Image imgBlueInfantry[] = new Image[4];
	static Image imgRedInfantry[] = new Image[4];

	static Image imgBlueArcher[] = new Image[4];
	static Image imgRedArcher[] = new Image[4];

	static Image imgBlueCavalry[] = new Image[4];
	static Image imgRedCavalry[] = new Image[4];

	static Image imgBlueKing[] = new Image[4];
	static Image imgRedKing[] = new Image[4];


	public UnitGraphicsEngineAppQuarter(Applet viewer, MediaTracker mediaTracker) {
		this.mediaTracker = mediaTracker;
		MTID = 0;


		// 歩兵画像の読み込み。
		for ( int i = 0; 4 > i; i++ ) {
			imgBlueInfantry[i] = viewer.getImage(viewer.getCodeBase(), "blueInfantry" + i + ".gif");
			mediaTracker.addImage( imgBlueInfantry[i], MTID );

			imgRedInfantry[i] = viewer.getImage(viewer.getCodeBase(), "redInfantry" + i + ".gif");
			mediaTracker.addImage( imgRedInfantry[i], MTID );
		}

		// 弓兵画像の読み込み。
		for ( int i = 0; 4 > i; i++ ) {
			imgBlueArcher[i] = viewer.getImage(viewer.getCodeBase(), "blueArcher" + i + ".gif");
			mediaTracker.addImage( imgBlueArcher[i], MTID );

			imgRedArcher[i] = viewer.getImage(viewer.getCodeBase(), "redArcher" + i + ".gif");
			mediaTracker.addImage( imgRedArcher[i], MTID );
		}


		// 騎兵画像の読み込み。
		for ( int i = 0; 4 > i; i++ ) {
			imgBlueCavalry[i] = viewer.getImage(viewer.getCodeBase(), "blueCavalry" + i + ".gif");
			mediaTracker.addImage( imgBlueCavalry[i], MTID );

			imgRedCavalry[i] = viewer.getImage(viewer.getCodeBase(), "redCavalry" + i + ".gif");
			mediaTracker.addImage( imgRedCavalry[i], MTID );
		}

		// 王様画像の読み込み。
		for ( int i = 0; 4 > i; i++ ) {
			imgBlueKing[i] = viewer.getImage(viewer.getCodeBase(), "blueKing" + i + ".gif");
			mediaTracker.addImage( imgBlueKing[i], MTID );

			imgRedKing[i] = viewer.getImage(viewer.getCodeBase(), "redKing" + i + ".gif");
			mediaTracker.addImage( imgRedKing[i], MTID );
		}


		try
		{
			//イメージの強制ロードを要求
			mediaTracker.waitForID(MTID);
		}
		catch (InterruptedException e)
		{
			return;
		}

	}
	public void show(Graphics g, int viewerX, int viewerY, Unit unit, Component view) {

		viewerX += ( unit.getX() * 68 - unit.getY() * 68);
		viewerY += ( unit.getX() + unit.getY() ) * 34;

		if (1 == unit.getNationality()) {
			g.drawImage( imgBlueCavalry[unit.getDirection().getDirection()],
				viewerX + 34,  viewerY - 34, view);
		}
		else {
			g.drawImage( imgRedCavalry[unit.getDirection().getDirection()],
				viewerX + 34,  viewerY - 34, view);
		}
	}

	public void show(Graphics g, int squareSizeX, int squareSizeY, Ground ground, Component view) {
	}

	public void show(Graphics g, int squareSizeX, int squareSizeY, Structure structure, Component view) {
	}

	/** 道を描画するルーチン。 */
	public void show(Graphics g, int squareSizeX, int squareSizeY, Road road, Component view) {
	}

	/** 都市を描画するルーチン。 */
	public void show(Graphics g, int squareSizeX, int squareSizeY, NapCity city, Component view) {
	}

	/** 首都を描画するルーチン。 */
	public void show(Graphics g, int squareSizeX, int squareSizeY, NapCapital capital, Component view) {
	}

	/** 動的ユニットを描画するルーチン。 */
	public void show(Graphics g, int squareSizeX, int squareSizeY, Creature creature, Component view) {
	}


	/** 軍隊を描画するルーチン。 */
	public void show(Graphics g, int viewerX, int viewerY, Army army, Component view) {

		viewerX += ( army.getX() * 68 - army.getY() * 68);
		viewerY += ( army.getX() + army.getY() ) * 34;

		if (1 == army.getNationality()) {
			g.drawImage( imgBlueInfantry[army.getDirection().getDirection()],
				viewerX + 42,  viewerY - 20, view);
		}
		else {
			g.drawImage( imgRedInfantry[army.getDirection().getDirection()],
				viewerX + 42,  viewerY - 20, view);
		}
	}


	/** 兵士を描画するルーチン。 */
	public void show(Graphics g, int viewerX, int viewerY, Soldier soldier, Component view) {

		viewerX += ( soldier.getX() * 68 - soldier.getY() * 68);
		viewerY += ( soldier.getX() + soldier.getY() ) * 34;

		if (1 == soldier.getNationality()) {
			g.drawImage( imgBlueInfantry[soldier.getDirection().getDirection()],
				viewerX + 42,  viewerY - 20, view);
		}
		else {
			g.drawImage( imgRedInfantry[soldier.getDirection().getDirection()],
				viewerX + 42,  viewerY - 20, view);
		}
	}

	/** 歩兵を描画するルーチン。 */
	public void show(Graphics g, int viewerX, int viewerY, Infantry infantry, Component view) {

		viewerX += ( infantry.getX() * 68 - infantry.getY() * 68);
		viewerY += ( infantry.getX() + infantry.getY() ) * 34;

		if (1 == infantry.getNationality()) {
			g.drawImage( imgBlueInfantry[infantry.getDirection().getDirection()],
				viewerX + 42,  viewerY - 20, view);
		}
		else {
			g.drawImage( imgRedInfantry[infantry.getDirection().getDirection()],
				viewerX + 42,  viewerY - 20, view);
		}
	}

	/** 弓兵を描画するルーチン。 */
	public void show(Graphics g, int viewerX, int viewerY, Archer archer, Component view) {

		viewerX += ( archer.getX() * 68 - archer.getY() * 68);
		viewerY += ( archer.getX() + archer.getY() ) * 34;

		if (1 == archer.getNationality()) {
			g.drawImage( imgBlueArcher[archer.getDirection().getDirection()],
				viewerX + 42,  viewerY - 20, view);
		}
		else {
			g.drawImage( imgRedArcher[archer.getDirection().getDirection()],
				viewerX + 42,  viewerY - 20, view);
		}
	}
	/** 矢を描画するルーチン。 */
	public void show(Graphics g, int viewerX, int viewerY, Arrow arrow, Component view) {
	}

	/** 騎兵を描画するルーチン。 */
	public void show(Graphics g, int viewerX, int viewerY, Cavalry cavalry, Component view) {

		viewerX += ( cavalry.getX() * 68 - cavalry.getY() * 68);
		viewerY += ( cavalry.getX() + cavalry.getY() ) * 34;

		if (1 == cavalry.getNationality()) {
			g.drawImage( imgBlueCavalry[cavalry.getDirection().getDirection()],
				viewerX + 34,  viewerY - 34, view);
		}
		else {
			g.drawImage( imgRedCavalry[cavalry.getDirection().getDirection()],
				viewerX + 34,  viewerY - 34, view);
		}
	}

	/** 指揮官を描画するルーチン。 */
	public void show(Graphics g, int viewerX, int viewerY, Commander commander, Component view) {

		viewerX += ( commander.getX() * 68 - commander.getY() * 68);
		viewerY += ( commander.getX() + commander.getY() ) * 34;

		if (1 == commander.getNationality()) {
			g.drawImage( imgBlueKing[commander.getDirection().getDirection()],
				viewerX + 34,  viewerY - 34, view);
		}
		else {
			g.drawImage( imgRedKing[commander.getDirection().getDirection()],
				viewerX + 34,  viewerY - 34, view);
		}
	}

}