/**@class	WeaponActionBase
 * @brief	represents action executed on transition just between OnExit from old state and OnEntry to new state
 **/
class WeaponActionBase
{
	/**@fn		Action
	 * @brief	executed when transition occurs
	 **/
	void Action (WeaponEventBase e) { }
};

// FSM Actions /////////////////////////////////////////////////////////////////////////////////////////////////////////
// fire
class WeaponActionDryFire extends WeaponActionBase
{
	protected Weapon_Base m_weapon;
	void WeaponActionDryFire (Weapon_Base w = NULL) { m_weapon = w; }

	override void Action (WeaponEventBase e)
	{
		Print("[wpnfsm] " + Object.GetDebugName(m_weapon) + " action=dry fire");
		int mi = m_weapon.GetCurrentMuzzle();
		m_weapon.DryFire(mi);
	}
};
class WeaponActionDryDryFire extends WeaponActionBase
{
	protected Weapon_Base m_weapon;
	void WeaponActionDryDryFire (Weapon_Base w = NULL) { m_weapon = w; }

	override void Action (WeaponEventBase e)
	{
		Print("[wpnfsm] " + Object.GetDebugName(m_weapon) + " action=dry dry fire");
		int mi = m_weapon.GetCurrentMuzzle();
		m_weapon.DryDryFire(mi);
	}
};

