77 {
78 m_abilities.Insert(
new AbilityRecord(
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED));
88
89
94
95 WeaponStateBase Mech_C1 =
new WeaponChargingInnerMag(
this, NULL,
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);
96 WeaponStateBase Mech_D1 =
new WeaponChargingInnerMag(
this, NULL,
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);
97
98
102
104
109
111
112
122
123 m_fsm = new WeaponFSM();
124
125
126
128
130 m_fsm.AddTransition(
new WeaponTransition( Mech_C1, _fin_,
C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
132 m_fsm.AddTransition(
new WeaponTransition( Mech_C1, _abt_,
C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
134
136 m_fsm.AddTransition(
new WeaponTransition( Mech_D1, _fin_,
C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
137 m_fsm.AddTransition(
new WeaponTransition( Mech_D1, _fin_,
D1, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
139 m_fsm.AddTransition(
new WeaponTransition( Mech_D1, _abt_,
C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
140 m_fsm.AddTransition(
new WeaponTransition( Mech_D1, _abt_,
D1, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
142
143
144
145
148 m_fsm.AddTransition(
new WeaponTransition( Chamber_C0, _abt_,
C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
150
151 m_fsm.AddTransition(
new WeaponTransition(
C1, __L__, Chamber_C1, NULL,
new GuardNot(
new WeaponGuardInnerMagazineFullShareChamber(
this))));
154
157 m_fsm.AddTransition(
new WeaponTransition( Chamber_D1, _abt_,
D1, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
159
160
161
163 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _fin_,
JF, NULL,
new WeaponGuardJammed(
this)));
164 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _fin_,
C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
166 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _abt_,
JF, NULL,
new WeaponGuardJammed(
this)));
167 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _abt_,
C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
169
170
171
172
173
178
183
188
193
194
199
200
201
203
204 SelectionBulletHide();
205 HideMagazine();
206
207 m_fsm.Start();
208 }
enum FSMTransition WeaponTransition
enum FSMTransition WeaponEventBase
WeaponActionChamberingTypes
WeaponActionUnjammingTypes