/*!
 * @file Item.h
 * @brief ゲーム中のアイテムと付随要素のプロトタイプ
 * @date 2013/12/11
 * @author Deskull
 * 2013 Sikabane Works.
 */

#pragma once

#include "stdafx.h"
#include "Dice.h"
#include "Effect.h"
#include "GameElement.h"
#include "SavingTable.h"

/*!
 * @class Item
 * @brief アイテムのクラス
 */
class Item : public GameElement
{
private:

	Dice baseDamage; //!< ベースダメージのダイス
	WEIGHT weight; //!< アイテムの重量
	SavingTable baseSaving; //!< 基本セービング修正
	SavingTable plusSaving; //!< 追加セービング修正

public:

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

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

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

	/*! 
	 * @brief ダミーデータによる初期化
	 * @return なし
	 */
	void Item::SetDammyData(void);

	/*! 受けた効果を処理する */
	bool Item::TakeEffect(Effect *effectPtr, POWER amount);

	/*! 基本装甲修正を返す */
	AC Item::GetBaseAC(void);

	/*! 追加装甲修正を返す */
	AC Item::GetPlusAC(void);

	/*! 基本回避修正を返す */
	EV Item::GetBaseEV(void);

	/*! 追加回避修正を返す */
	EV Item::GetPlusEV(void);

	/*! 基本意志修正を返す */
	VO Item::GetBaseVO(void);

	/*! 追加意志修正を返す */
	VO Item::GetPlusVO(void);

};
