enum DefaultAnimState
{
	DEFAULT 			= 0, 	///< default weapon state, closed and discharged
};

/**@class		Rifle_Base
 * @brief		base for rifles
 * @NOTE		name copies config base class
 **/
class Rifle_Base extends Weapon_Base
{
	void Rifle_Base ()
	{
	}

	override void InitStateMachine ()
	{
		m_abilities.Insert(new AbilityRecord(WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED));

		// setup state machine
		// basic weapon states
		WeaponStableState E = new WeaponStableState(this, NULL, DefaultAnimState.DEFAULT);

		WeaponStateBase Mech = new WeaponCharging(this, NULL, WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);

		// events
		WeaponEventBase __M__ = new WeaponEventMechanism;
		WeaponEventBase _fin_ = new WeaponEventHumanCommandActionFinished;
		WeaponEventBase _abt_ = new WeaponEventHumanCommandActionAborted;

		m_fsm = new WeaponFSM();
		// charging
		m_fsm.AddTransition(new WeaponTransition(E		, __M__,	Mech));
		m_fsm.AddTransition(new WeaponTransition(Mech	, _fin_,	E));
		m_fsm.AddTransition(new WeaponTransition(Mech	, _abt_,	E));
		
		SetInitialState(E);

		SelectionBulletHide();

		m_fsm.Start();
	}

};


