/** 兵士クラスや、馬防柵クラスや、馬クラスや、山クラス、川クラス
などの盤上(boardクラス)におかれるすべてのオブジェクトの親クラス */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;




public abstract class unit {

	String name;	//オブジェクトの名前。
	int x;	//そのユニットが盤上のどの位置に設置されるか。
	int y;
	static board gameBoard; //そのユニットが配置される盤。
	static Component viewer;	//描画用のパネル。

	static UnitGraphicsEngineApp UGE;


	int weight;	//そのユニットの重量。
	int HP;		//ヒットポイント。ゼロになると、そのユニットは消滅する。
	static int maxHP = 100;	//そのクラスの最大ヒットポイント。

	public int getX() { return x; }
	public int getY() { return y; }
	public int getHP() { return HP; }
	public int getMaxHP() { return maxHP; }

	public void show(Graphics g, int x, int y, Component view) {
		UGE.show(g, x,y, this, view);
	}

	public static void setGameBoard(board gameBoard) {
		unit.gameBoard = gameBoard;
	}
	public static void setViewer(Component viewer) {
		unit.viewer = viewer;
	}
	public static void setUGE(UnitGraphicsEngineApp UGE) {
		unit.UGE = UGE;
	}

	/** 生きているか(HPがゼロより大きい)をチェックし、死んでいたらボードから自分自身を削除 */
	public boolean checkExistence() {
		if (HP > 0) {
			if (this == gameBoard.getUnit(x,y))
				return true;
			else
				return false;
		} else {
			if (this == gameBoard.getUnit(x,y))
				gameBoard.removeUnit(x,y);

			return false;
		}
	
	}

}