/*!
 * @file Square.h
 * @brief ゲーム中のマスと付随要素のプロトタイプ
 * @date 2013/12/11
 * @author Deskull
 * 2013 Sikabane Works.
 */

#pragma once

#include "stdafx.h"
#include "Deeangband.h"
#include "GameElement.h"

/*! 
 * @class Square
 * @brief マスのクラス
 */
class Square : public GameElement
{
private:
	Floor *floorPtr;  //!<所属フロア参照ポインタ
	TAG featureTag;    //!<地形タグ
	HP hitPoint;      //!<地形現HP
	HP maxPoint;      //!<地形最大HP
public:

	/*! 
	 * @brief Squareクラスコンストラクタ(GameElementメンバ対応)
	 * @param Floor 所属元Floor参照ポインタ
	 */
	Square::Square(Floor *floorPtr);

	/*! 
	 * @brief Squareクラスコンストラクタ
	 */
	Square::Square();

	/*! 
	 * @brief Squareクラスデストラクタ
	 */
	Square::~Square();

	/*! 
	 * @brief ダミーデータによる初期化
	 * @return なし
	 */
	void Square::SetDammyData(void);

	/*!
	 * @brief 所属するフロアのポインタを返す。
	 */
	Floor* getFloorPtr(void);

	/*!
	 * @brief 対応する地形のタグを返す。
	 */
	TAG getFeatureTag(void);

	/*!
	 * @brief 対応する地形のポインタを返す。
	 */
	Feature* getFeaturePtr(void);

	/*!
	 * @brief 受けた効果を処理する
	 */
	bool Square::TakeEffect(Effect *effectPtr, POWER amount);

	/*!
	 * @brief 現在の地形HPを返す
	 * @return 現地形HP
	 */
	const HP Square::GetCurrentHP(void);

	/*!
	 * @brief 最大の地形HPを返す
	 * @return 最大地形HP
	 */
	const HP Square::GetMaxHP(void);

};
