/*!
 * @file ItemTrait.h
 * @brief ゲーム中のアイテム特性のプロトタイプ定義
 * @date 2013/12/22
 * @author Deskull
 * 2013 Sikabane Works.
 */

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

namespace Deeangband
{

/*!
 * @class ItemTrait
 * @brief アイテム特性のクラス
 */
class ItemTrait : public GameElement
{

private:

	std::string name;

	friend class boost::serialization::access;

	/*!
	 * @brief クラスのシリアライズ化を設定する
	 * @param archive アーカイブ化するクラスのアドレス
	 * @param fileVersion ファイルバージョン
	 * @return XMLSerializeテンプレート
	 */
	template<class Archive> void serialize(Archive &archive, const unsigned int fileVersion) 
	{
		archive & BOOST_SERIALIZATION_NVP(name);
	}

public:

	/*! 
	 * @brief ItemTraitクラスコンストラクタ(GameElementメンバ対応)
	 * @param id GameElementのID
	 * @param tag GameElementのタグ
	 * @param gameWorld 所属元gameWorld参照ポインタ
	 */
	ItemTrait::ItemTrait(ID id, TAG tag, GameWorld *gameWorld);

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

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

	/*!
	 * @brief アイテム特性の名称を返す
	 * @return アイテム特性名
	 */
	std::string ItemTrait::GetName(void);
};

}