12 {
13
14 m_abilities.Insert(
new AbilityRecord(
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED));
15 m_abilities.Insert(
new AbilityRecord(
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED));
22
23
24
29
30 WeaponStateBase Mech_E =
new WeaponCharging(
this, NULL,
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED);
31 WeaponStateBase Mech_F =
new WeaponCharging(
this, NULL,
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);
32 WeaponStateBase Mech_L =
new WeaponEjectBullet(
this, NULL,
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);
33
36
37
41
43
45
46
55
56 m_fsm = new WeaponFSM();
57
61
63 m_fsm.AddTransition(
new WeaponTransition( Mech_F, _fin_,
F, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
65 m_fsm.AddTransition(
new WeaponTransition( Mech_F, _abt_,
F, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
67
68
70 m_fsm.AddTransition(
new WeaponTransition( Mech_L, _fin_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
72 m_fsm.AddTransition(
new WeaponTransition( Mech_L, _abt_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
74
75
77 m_fsm.AddTransition(
new WeaponTransition( Chamber_E, _fin_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
79 m_fsm.AddTransition(
new WeaponTransition( Chamber_E, _abt_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
81
83 m_fsm.AddTransition(
new WeaponTransition( Chamber_F, _fin_,
F, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
84 m_fsm.AddTransition(
new WeaponTransition( Chamber_F, _fin_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
86 m_fsm.AddTransition(
new WeaponTransition( Chamber_F, _abt_,
F, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
87 m_fsm.AddTransition(
new WeaponTransition( Chamber_F, _abt_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
89
90
95
100
104
108
109
111 m_fsm.AddTransition(
new WeaponTransition( Unjam_J, _fin_, J, NULL,
new WeaponGuardJammed(
this)));
113
114
115 bool empty = true;
116 bool discharged = false;
118 if (empty)
119 {
120 if (!discharged)
122 }
123 else
124 {
126 }
127 SetInitialState(init_state);
128
129 SelectionBulletHide();
130
131 m_fsm.Start();
132 }
enum FSMTransition WeaponTransition
enum FSMTransition WeaponEventBase
void WeaponStableState(Weapon_Base w=NULL, WeaponStateBase parent=NULL, int anim_state=-1)
WeaponActionChamberingTypes
WeaponActionUnjammingTypes