/*!
* @file Combat.h
* @brief ゲーム中の戦闘処理のプロトタイプ
* @date 2017/09/19
* @author Deskull
* 2017 Sikabane Works.
*/

#pragma once

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

namespace Deeangband
{

	/*!
	* @class Combat
	* @brief 戦闘処理のクラス
	* @details
	*/
	class Combat : 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);
			}
		}

	public:

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

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

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

		/*!
		* @brief 白兵のクリティカル率を計算する
		* @return なし
		*/
		PPM Combat::CalcCriticalRateMelee(Creature *attacker, Creature *target, Item *weapon_ptr);

		/*!
		* @brief 射撃のクリティカル率を計算する
		* @return なし
		*/
		PPM Combat::CalcCriticalRateProection(Creature *attacker, Creature *target, Item *weapon_ptr);


	};

}

BOOST_CLASS_VERSION(Deeangband::Combat, 10);
