/*!
* @file CreatureTrait.h
* @brief ゲーム中のクリーチャー特性のプロトタイプ
* @date 2013/12/22
* @author Deskull
* 2013 Sikabane Works.
*/

#pragma once

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

namespace Deeangband
{

	/*! 
	* @class CreatureTrait
	* @brief クリーチャー特性のクラス
	* @details
	* <h1>概要</h1>
	* <p>CreatureTraitはクリーチャーが保持しているあらゆる状態的要素を定義したものである。
	* この状態的要素とは、悪魔族、アンデッド族、といたごく先天的なものから、毒や祝福といった
	* 次元的な要素まで全てを含み、そのような性質から「先天的に毒状態を持っていてHPが減っていく種族」や
	* 「一時的にアンデッドの特性を得ている」といった実装を可能にしている。</p>
	*/
	class CreatureTrait : public CreatureTemplate
	{
	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("Name", name);
				archive & boost::serialization::make_nvp("Description", description);
				archive & boost::serialization::make_nvp("Status", statusPlus);
				archive & boost::serialization::make_nvp("Discipline", disciplinePlus);
			}
		}

	public:

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

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

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

	};

}

BOOST_CLASS_VERSION(Deeangband::CreatureTrait, 10);
