/*!
* @file HaveRace.h
* @brief 種族保持抽象クラスのプロトタイプ宣言
* @date 2014/06/24
* @author Deskull
* 2014 Sikabane Works.
*/

#pragma once

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

namespace Deeangband
{

	/*! 
	* @class HaveRace
	* @brief 種族保持抽象クラス
	*/
	class HaveRace
	{
	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("First", firstRaceTag);
				archive & boost::serialization::make_nvp("Second", secondRaceTag);
			}
		}

	protected:

		TAG firstRaceTag;
		TAG secondRaceTag;

	public:

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

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

		/*! 
		* @brief HaveRaceデータ初期化
		*/
		void HaveRace::WipeData(void);

	};
}

BOOST_CLASS_VERSION(Deeangband::HaveRace, 10);
