/*!
 * @file Ability.h
 * @brief 発動技能のプロトタイプ
 * @date 2014/06/09
 * @author Deskull
 * 2013 Sikabane Works.
 */

#pragma once

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

namespace Deeangband
{

	/*! 
	 * @class Ability
	 * @brief 発動技能のクラス
	 * @details
	 * <h1>概要</h1>
	 * <p>Abilityはクリーチャーがゲーム中の引き起こすあらゆる能動的効果を定義する。</p>
	 */
	class Ability : public GameElement
	{
	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);
			}
		}

	public:

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

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

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

	};

}

BOOST_CLASS_VERSION(Deeangband::Ability, 10);
