DayZ 1.28
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ChamberFirstInnerMagazineSemiAutomatic_Base.c
См. документацию.
2{
3 DEFAULT = 0,
4 OPENNED = 1,
5 JAMMED = 2,
6};
7
9{
10 UNKNOWN = 0,
11 Empty = 1,
12 Open = 2,
13 Loaded = 3,
14 Jammed = 4,
15}
16
17
18class CFIMSAEmpty extends WeaponStableState
19{
20 override void OnEntry (WeaponEventBase e) { if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " { Empty E"); } super.OnEntry(e); }
21 override void OnExit (WeaponEventBase e) { super.OnExit(e); if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " } Empty E"); } }
22 override int GetCurrentStateID () { return CFIMSAStableStateID.Empty; }
23 override bool HasBullet () { return false; }
24 override bool HasMagazine () { return false; }
25 override bool IsJammed () { return false; }
26 override bool IsRepairEnabled () { return true; }
27 override void InitMuzzleArray () { m_muzzleHasBullet = {MuzzleState.E}; }
28};
29class CFIMSAOpenned extends WeaponStableState
30{
31 override void OnEntry (WeaponEventBase e) { if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " { Open O"); } super.OnEntry(e); }
32 override void OnExit (WeaponEventBase e) { super.OnExit(e); if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " } Open O"); } }
33 override int GetCurrentStateID () { return CFIMSAStableStateID.Empty; }
34 override bool HasBullet () { return false; }
35 override bool HasMagazine () { return false; }
36 override bool IsJammed () { return false; }
37 override bool IsRepairEnabled () { return true; }
38 override void InitMuzzleArray () { m_muzzleHasBullet = {MuzzleState.E}; }
39};
40class CFIMSALoaded extends WeaponStableState
41{
42 override void OnEntry (WeaponEventBase e) { if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " { Loaded L"); } super.OnEntry(e); }
43 override void OnExit (WeaponEventBase e) { super.OnExit(e); if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " } Loaded L"); } }
44 override int GetCurrentStateID () { return CFIMSAStableStateID.Loaded; }
45 override bool HasBullet () { return true; }
46 override bool HasMagazine () { return false; }
47 override bool IsJammed () { return false; }
48 override bool IsRepairEnabled () { return true; }
49 override void InitMuzzleArray () { m_muzzleHasBullet = {MuzzleState.L}; }
50};
51class CFIMSAJammed extends WeaponStableState
52{
53 override void OnEntry (WeaponEventBase e) { if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " { Jammed J"); } super.OnEntry(e); }
54 override void OnExit (WeaponEventBase e) { super.OnExit(e); if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " } Jammed J"); } }
55 override int GetCurrentStateID () { return CFIMSAStableStateID.Jammed; }
56 override bool HasBullet () { return true; }
57 override bool HasMagazine () { return false; }
58 override bool IsJammed () { return true; }
59 override bool IsRepairEnabled () { return true; }
60 override void InitMuzzleArray () { m_muzzleHasBullet = {MuzzleState.F}; }
61};
62
63
68class ChamberFirst_InnerMagazine_SemiAutomatic_Base extends Rifle_Base
69{
74
75
76 override void InitStateMachine ()
77 {
78 m_abilities.Insert(new AbilityRecord(WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED));
79 m_abilities.Insert(new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED_EXTRA));
80 m_abilities.Insert(new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED_WITHCHAMBER));
81 m_abilities.Insert(new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_OPENED));
82 m_abilities.Insert(new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE));
83 m_abilities.Insert(new AbilityRecord(WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_START));
84 m_abilities.Insert(new AbilityRecord(WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_END));
85 m_abilities.Insert(new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_NORMAL));
86 m_abilities.Insert(new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_LAST));
87 m_abilities.Insert(new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY));
88 m_abilities.Insert(new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_JAM));
89
90
91 E = new CFIMSAEmpty(this, NULL, CFIMSAAnimState.DEFAULT);
92 O = new CFIMSAOpenned(this, NULL, CFIMSAAnimState.OPENNED);
93 L = new CFIMSALoaded(this, NULL, CFIMSAAnimState.DEFAULT);
94 J = new CFIMSAJammed(this, NULL, CFIMSAAnimState.JAMMED);
95
96 WeaponStateBase Mech_E = new WeaponChargingInnerMag(this, NULL, WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);
97 WeaponStateBase Mech_O = new WeaponChargingInnerMag(this, NULL, WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED);
98 WeaponStateBase Mech_L = new WeaponChargingInnerMag(this, NULL, WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);
99
100
101 LoopedChamberingCombineChamberInternalMagazine Chamber_E = new LoopedChamberingCombineChamberInternalMagazine(this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED_EXTRA, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE);
102 LoopedChamberingCombineChamberInternalMagazine Chamber_O = new LoopedChamberingCombineChamberInternalMagazine(this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_OPENED, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE);
103 LoopedChamberingEjectLast Chamber_L = new LoopedChamberingEjectLast(this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED_WITHCHAMBER, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE);
104
105 WeaponStateBase Unjam_J = new WeaponUnjamming(this, NULL, WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_START);
106
107 WeaponStateBase Trigger_E = new WeaponDryFire(this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY);
108 WeaponStateBase Trigger_O = new WeaponDryFire(this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY);
109 WeaponStateBase Trigger_L = new WeaponFireAndChamberFromInnerMagazine(this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_NORMAL);
110 WeaponStateBase Trigger_J = new WeaponDryFire(this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY);
111 WeaponStateBase Trigger_LL = new WeaponFireLast(this, NULL, WeaponActions.FIRE, GetWeaponSpecificCommand(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_LAST));
112
113 WeaponStateBase Trigger_LJ = new WeaponFireToJam(this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_JAM);
114
115
116 WeaponEventBase _fin_ = new WeaponEventHumanCommandActionFinished;
117 WeaponEventBase __L__ = new WeaponEventLoad1Bullet;
118 WeaponEventBase __T__ = new WeaponEventTrigger;
119 WeaponEventBase __TJ_ = new WeaponEventTriggerToJam;
120 WeaponEventBase __U__ = new WeaponEventUnjam;
121 WeaponEventBase __M__ = new WeaponEventMechanism;
122 WeaponEventBase _abt_ = new WeaponEventHumanCommandActionAborted;
123 WeaponEventBase _rto_ = new WeaponEventReloadTimeout;
124 WeaponEventBase _dto_ = new WeaponEventDryFireTimeout;
125
126 m_fsm = new WeaponFSM();
127
128 // Mechanism
129//----------------------------------------
130 m_fsm.AddTransition(new WeaponTransition( E, __M__, Mech_E));
131 m_fsm.AddTransition(new WeaponTransition( Mech_E, _fin_, E));
132 m_fsm.AddTransition(new WeaponTransition( Mech_E, _abt_, E));
133
134 m_fsm.AddTransition(new WeaponTransition( O, __M__, Mech_O));
135 m_fsm.AddTransition(new WeaponTransition( Mech_O, _fin_, O, NULL, new WeaponGuardWeaponOpen(this)));
136 m_fsm.AddTransition(new WeaponTransition( Mech_O, _fin_, E));
137 m_fsm.AddTransition(new WeaponTransition( Mech_O, _abt_, O, NULL, new WeaponGuardWeaponOpen(this)));
138 m_fsm.AddTransition(new WeaponTransition( Mech_O, _abt_, E));
139
140 m_fsm.AddTransition(new WeaponTransition( L, __M__, Mech_L));
141 m_fsm.AddTransition(new WeaponTransition( Mech_L, _fin_, E, NULL, new WeaponGuardCurrentChamberEmpty(this)));
142 m_fsm.AddTransition(new WeaponTransition( Mech_L, _fin_, L));
143 m_fsm.AddTransition(new WeaponTransition( Mech_L, _abt_, E, NULL, new WeaponGuardCurrentChamberEmpty(this)));
144 m_fsm.AddTransition(new WeaponTransition( Mech_L, _abt_, L));
145//----------------------------------------
146
147 m_fsm.AddTransition(new WeaponTransition( E, __L__, Chamber_E));
148 m_fsm.AddTransition(new WeaponTransition( Chamber_E, _fin_, E, NULL, new WeaponGuardCurrentChamberEmpty(this)));
149 m_fsm.AddTransition(new WeaponTransition( Chamber_E, _fin_, L));
150 m_fsm.AddTransition(new WeaponTransition( Chamber_E, _abt_, O, NULL, new WeaponGuardWeaponOpen(this)));
151 m_fsm.AddTransition(new WeaponTransition( Chamber_E, _abt_, E, NULL, new WeaponGuardCurrentChamberEmpty(this)));
152 m_fsm.AddTransition(new WeaponTransition( Chamber_E, _abt_, L));
153
154 m_fsm.AddTransition(new WeaponTransition( O, __L__, Chamber_O));
155 m_fsm.AddTransition(new WeaponTransition( Chamber_O, _fin_, E, NULL, new WeaponGuardCurrentChamberEmpty(this)));
156 m_fsm.AddTransition(new WeaponTransition( Chamber_O, _fin_, L));
157 m_fsm.AddTransition(new WeaponTransition( Chamber_O, _abt_, O, NULL, new WeaponGuardWeaponOpen(this)));
158 m_fsm.AddTransition(new WeaponTransition( Chamber_O, _abt_, E, NULL, new WeaponGuardCurrentChamberEmpty(this)));
159 m_fsm.AddTransition(new WeaponTransition( Chamber_O, _abt_, L));
160
161
162 m_fsm.AddTransition(new WeaponTransition( L, __L__, Chamber_L, NULL, new GuardNot(new WeaponGuardInnerMagazineFullShareChamber(this))));
163 m_fsm.AddTransition(new WeaponTransition( Chamber_L, _fin_, L));
164 m_fsm.AddTransition(new WeaponTransition( Chamber_L, _abt_, L));
165//------------------------------------------
166
167 m_fsm.AddTransition(new WeaponTransition( J, __U__, Unjam_J));
168 m_fsm.AddTransition(new WeaponTransition( Unjam_J, _fin_, J, NULL, new WeaponGuardJammed(this)));
169 m_fsm.AddTransition(new WeaponTransition( Unjam_J, _fin_, E, NULL, new WeaponGuardCurrentChamberEmpty(this)));
170 m_fsm.AddTransition(new WeaponTransition( Unjam_J, _fin_, L));
171 m_fsm.AddTransition(new WeaponTransition( Unjam_J, _abt_, J, NULL, new WeaponGuardJammed(this)));
172 m_fsm.AddTransition(new WeaponTransition( Unjam_J, _abt_, E, NULL, new WeaponGuardCurrentChamberEmpty(this)));
173 m_fsm.AddTransition(new WeaponTransition( Unjam_J, _abt_, L));
174
175
176//-----------------------------------------
177
178 // fire
179 m_fsm.AddTransition(new WeaponTransition( E, __T__, Trigger_E)); // fire.cocked
180 m_fsm.AddTransition(new WeaponTransition( Trigger_E, _fin_, E));
181 m_fsm.AddTransition(new WeaponTransition( Trigger_E, _dto_, E));
182 m_fsm.AddTransition(new WeaponTransition( Trigger_E, _abt_, E));
183
184 m_fsm.AddTransition(new WeaponTransition( O, __T__, Trigger_O)); // fire.cocked
185 m_fsm.AddTransition(new WeaponTransition( Trigger_O, _fin_, O));
186 m_fsm.AddTransition(new WeaponTransition( Trigger_O, _dto_, O));
187 m_fsm.AddTransition(new WeaponTransition( Trigger_O, _abt_, O));
188
189 m_fsm.AddTransition(new WeaponTransition( L, __T__, Trigger_L, NULL, new WeaponGuardHasAmmoInnerMagazine(this)));
190 m_fsm.AddTransition(new WeaponTransition( Trigger_L, _fin_, L));
191 m_fsm.AddTransition(new WeaponTransition( Trigger_L, _rto_, L));
192 m_fsm.AddTransition(new WeaponTransition( Trigger_L, _abt_, L));
193
194 m_fsm.AddTransition(new WeaponTransition( L, __T__, Trigger_LL));
195 m_fsm.AddTransition(new WeaponTransition( Trigger_LL, _fin_, O));
196 m_fsm.AddTransition(new WeaponTransition( Trigger_LL, _rto_, O));
197 m_fsm.AddTransition(new WeaponTransition( Trigger_LL, _abt_, O));
198
199 m_fsm.AddTransition(new WeaponTransition( J, __T__, Trigger_J)); // fire.cocked
200 m_fsm.AddTransition(new WeaponTransition( Trigger_J, _fin_, J));
201 m_fsm.AddTransition(new WeaponTransition( Trigger_J, _dto_, J));
202 m_fsm.AddTransition(new WeaponTransition( Trigger_J, _abt_, J));
203
204
205 m_fsm.AddTransition(new WeaponTransition( L, __TJ_, Trigger_LJ)); // fire.cocked
206 m_fsm.AddTransition(new WeaponTransition( Trigger_LJ, _fin_, J));
207 m_fsm.AddTransition(new WeaponTransition( Trigger_LJ, _rto_, J));
208 m_fsm.AddTransition(new WeaponTransition( Trigger_LJ, _abt_, J));
209
210//---------------------------------------------
211
212 SetInitialState(E);
213
214 SelectionBulletHide();
215 HideMagazine();
216
217 m_fsm.Start();
218 }
219
220 override void SetActions()
221 {
223 super.SetActions();
225 }
226};
227
228
void wpnPrint(string s)
void AddAction(typename actionName)
Определения AdvancedCommunication.c:220
@ UNKNOWN
24 - Any other error. Can be returned from any call.
Определения BIOSErrorModule.c:56
Open
Implementations only.
Loaded
Определения Crossbow.c:21
@ DEFAULT
Определения ECrewMemberState.c:4
class WeaponGuardIsDestroyed extends WeaponGuardBase m_weapon
Определения Guards.c:604
void WeaponGuardWeaponOpen(Weapon_Base w=NULL)
Определения Guards.c:606
Empty
Определения Hand_States.c:14
@ JAMMED
Определения SKS.c:5
class SSPFireout extends WeaponStableState OnEntry
enum FSMTransition WeaponTransition
enum FSMTransition WeaponEventBase
class WeaponChambering_Chamber_OnEntry extends WeaponChambering_Base OnExit
Определения WeaponChambering.c:352
MuzzleState
Определения WeaponStableState.c:15
ref array< MuzzleState > m_muzzleHasBullet
Определения WeaponStableState.c:30
pair ( action, actionType )
Определения Weapon_Base.c:5
static bool IsWeaponLogEnable()
Определения 3_Game/tools/Debug.c:718
Определения 3_Game/tools/Debug.c:594
Определения ObjectTyped.c:2
ref WeaponStableState L
ref WeaponStableState E
ref WeaponStableState O
ref WeaponStableState J
override void SetActions()
override void InitStateMachine()
base for rifles @NOTE name copies config base class
Определения SKS.c:70
override void OnExit(WeaponEventBase e)
Определения WeaponChambering.c:439
signalize mechanism manipulation
Определения Events.c:35
weapon finite state machine
override bool IsJammed()
Определения Crossbow.c:33
override void OnExit(WeaponEventBase e)
override void InitMuzzleArray()
Определения Crossbow.c:35
override void OnEntry(WeaponEventBase e)
Определения Crossbow.c:28
override bool HasBullet()
Определения Crossbow.c:31
override int GetCurrentStateID()
Определения Crossbow.c:30
override bool IsRepairEnabled()
Определения Crossbow.c:34
override bool HasMagazine()
Определения Crossbow.c:32
represents weapon's stable state (i.e. the basic states that the weapon will spend the most time in)
Определения Crossbow.c:27
represent weapon state base
Определения BulletHide.c:2
unjam submachine
class LOD Object
WeaponActionChamberingTypes
Определения human.c:876
WeaponActions
actions
Определения human.c:816
WeaponActionUnjammingTypes
Определения human.c:916
WeaponActionFireTypes
Определения human.c:924