Rifle_Base.c
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();
}
};