/*!
* @file HaveSize.h
* @brief サイズ保持要素のプロトタイプ宣言
* @date 2014/06/19
* @author Deskull
* 2014 Sikabane Works.
*/

#pragma once

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

namespace Deeangband
{

	/*! 
	* @class HaveSize
	* @brief サイズ保持要素のクラス
	* @details 
	*/
	class HaveSize
	{
	private:

		friend class boost::serialization::access;

		/*!
		* @brief クラスのシリアライズを設定する
		* @param archive アーカイブ化するクラスのアドレス
		* @param version ファイルバージョン
		* @return XMLSerializeテンプレート
		*/
		template<class Archive> void serialize(Archive &archive, const unsigned int version) 
		{
			if(version >= 0)
			{
				archive & boost::serialization::make_nvp("Height", height);
				archive & boost::serialization::make_nvp("Weight", weight);
			}
		}

	protected:
		HEIGHT height;
		WEIGHT weight;

	public:

		/*! 
		* @brief HaveSizeクラスコンストラクタ(初期値代入)
		*/
		HaveSize::HaveSize(void);

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

		/*! 
		* @brief HaveSizeクラスのデータ消去
		*/
		void HaveSize::WipeData(void);

		/*!
		* @brief 全長を返す
		* @return 全長
		*/
		HEIGHT HaveSize::GetHeight(void);

		/*!
		* @brief 質量を返す
		* @return 質量
		*/
		WEIGHT HaveSize::GetWeight(void);

		/*!
		* @brief サイズを返す
		* @return サイズ
		*/
		BODY_SIZE HaveSize::GetSize(void);

	};

}

BOOST_CLASS_VERSION(Deeangband::HaveSize, 10);
