DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
BoltActionRifleInnerMagazine_Base.c
См. документацию.
2{
3 DEFAULT = 0,
4 OPENED = 1,
5 JAMMED = 2,
6};
7
9{
10 UNKNOWN = 0,
12 LoadedCharged = 2,
14 LoadedJammed = 4,
15}
16
17
18class BARIMEmptyDischarged extends WeaponStableState
19{
20 override void OnEntry (WeaponEventBase e) { if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " { EmptyDischarged C0"); } super.OnEntry(e); }
21 override void OnExit (WeaponEventBase e) { super.OnExit(e); if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " } EmptyDischarged C0"); } }
22 override int GetCurrentStateID () { return BARIMStableStateID.EmptyDischarged; }
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 BARIMLoadedCharged extends WeaponStableState
30{
31 override void OnEntry (WeaponEventBase e) { if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " { LoadedCharged C1"); } super.OnEntry(e); }
32 override void OnExit (WeaponEventBase e) { super.OnExit(e); if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " } LoadedCharged C1"); } }
33 override int GetCurrentStateID () { return BARIMStableStateID.LoadedCharged; }
34 override bool HasBullet () { return true; }
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.L}; }
39};
40class BARIMLoadedDischarged extends WeaponStableState
41{
42 override void OnEntry (WeaponEventBase e) { if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " { LoadedDischarged D1"); } super.OnEntry(e); }
43 override void OnExit (WeaponEventBase e) { super.OnExit(e); if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " } LoadedDischarged D1"); } }
44 override int GetCurrentStateID () { return BARIMStableStateID.LoadedDischarged; }
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.F}; }
50};
51class BARIMLoadedJammed extends WeaponStateJammed
52{
53 override void OnEntry (WeaponEventBase e) { if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " { LoadedJammed JF"); } super.OnEntry(e); }
54 override void OnExit (WeaponEventBase e) { super.OnExit(e); if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " } LoadedJammed JF"); } }
55 override int GetCurrentStateID () { return BARIMStableStateID.LoadedJammed; }
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
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_KEEP));
80 m_abilities.Insert(new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED));
81 m_abilities.Insert(new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE));
82 m_abilities.Insert(new AbilityRecord(WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_START));
83 m_abilities.Insert(new AbilityRecord(WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_END));
84 m_abilities.Insert(new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_NORMAL));
85 m_abilities.Insert(new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_COCKED));
86 m_abilities.Insert(new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_UNCOCKED));
87 m_abilities.Insert(new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY));
88
89
90 C0 = new BARIMEmptyDischarged(this, NULL, BARIMAnimState.DEFAULT);
91 C1 = new BARIMLoadedCharged(this, NULL, BARIMAnimState.DEFAULT);
92 JF = new BARIMLoadedJammed(this, NULL, BARIMAnimState.JAMMED);
93 D1 = new BARIMLoadedDischarged(this, NULL, BARIMAnimState.DEFAULT);
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
99 LoopedChambering Chamber_C0 = new LoopedChambering(this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE);
100 LoopedChambering Chamber_C1 = new LoopedChambering(this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED_KEEP, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE);
101 LoopedChambering Chamber_D1 = new LoopedChambering(this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE);
102
103 WeaponStateBase Unjam_JF = new WeaponUnjamming(this, NULL, WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_START);
104
105 WeaponStateBase Trigger_C0 = new WeaponDryFire(this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY);
106 WeaponStateBase Trigger_C1 = new WeaponFire(this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_NORMAL);
107 WeaponStateBase Trigger_D1 = new WeaponDryFire(this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY);
108 WeaponStateBase Trigger_JF = new WeaponDryFire(this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY);
109
110 WeaponStateBase Trigger_C1J = new WeaponFireToJam(this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_JAM);
111
112
113 WeaponEventBase _fin_ = new WeaponEventHumanCommandActionFinished;
114 WeaponEventBase __L__ = new WeaponEventLoad1Bullet;
115 WeaponEventBase __T__ = new WeaponEventTrigger;
116 WeaponEventBase __TJ_ = new WeaponEventTriggerToJam;
117 WeaponEventBase __U__ = new WeaponEventUnjam;
118 WeaponEventBase __M__ = new WeaponEventMechanism;
119 WeaponEventBase _abt_ = new WeaponEventHumanCommandActionAborted;
120 WeaponEventBase _rto_ = new WeaponEventReloadTimeout;
121 WeaponEventBase _dto_ = new WeaponEventDryFireTimeout;
122
123 m_fsm = new WeaponFSM();
124
125 // Mechanism
126//----------------------------------------
127 m_fsm.AddTransition(new WeaponTransition( C0, __M__, Mech_C1));
128
129 m_fsm.AddTransition(new WeaponTransition( C1, __M__, Mech_C1));
130 m_fsm.AddTransition(new WeaponTransition( Mech_C1, _fin_, C0, NULL, new WeaponGuardCurrentChamberEmpty(this)));
131 m_fsm.AddTransition(new WeaponTransition( Mech_C1, _fin_, C1));
132 m_fsm.AddTransition(new WeaponTransition( Mech_C1, _abt_, C0, NULL, new WeaponGuardCurrentChamberEmpty(this)));
133 m_fsm.AddTransition(new WeaponTransition( Mech_C1, _abt_, C1));
134
135 m_fsm.AddTransition(new WeaponTransition( D1, __M__, Mech_D1));
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)));
138 m_fsm.AddTransition(new WeaponTransition( Mech_D1, _fin_, C1));
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)));
141 m_fsm.AddTransition(new WeaponTransition( Mech_D1, _abt_, C1));
142
143
144//----------------------------------------
145
146 m_fsm.AddTransition(new WeaponTransition( C0, __L__, Chamber_C0));
147 m_fsm.AddTransition(new WeaponTransition( Chamber_C0, _fin_, C1));
148 m_fsm.AddTransition(new WeaponTransition( Chamber_C0, _abt_, C0, NULL, new WeaponGuardCurrentChamberEmpty(this)));
149 m_fsm.AddTransition(new WeaponTransition( Chamber_C0, _abt_, C1));
150
151 m_fsm.AddTransition(new WeaponTransition( C1, __L__, Chamber_C1, NULL, new GuardNot(new WeaponGuardInnerMagazineFullShareChamber(this))));
152 m_fsm.AddTransition(new WeaponTransition( Chamber_C1, _fin_, C1));
153 m_fsm.AddTransition(new WeaponTransition( Chamber_C1, _abt_, C1));
154
155 m_fsm.AddTransition(new WeaponTransition( D1, __L__, Chamber_D1));
156 m_fsm.AddTransition(new WeaponTransition( Chamber_D1, _fin_, C1));
157 m_fsm.AddTransition(new WeaponTransition( Chamber_D1, _abt_, D1, NULL, new WeaponGuardCurrentChamberFiredOut(this)));
158 m_fsm.AddTransition(new WeaponTransition( Chamber_D1, _abt_, C1));
159
160//------------------------------------------
161
162 m_fsm.AddTransition(new WeaponTransition( JF, __U__, Unjam_JF));
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)));
165 m_fsm.AddTransition(new WeaponTransition( Unjam_JF, _fin_, C1));
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)));
168 m_fsm.AddTransition(new WeaponTransition( Unjam_JF, _abt_, C1));
169
170
171//-----------------------------------------
172
173 // fire
174 m_fsm.AddTransition(new WeaponTransition( C0, __T__, Trigger_C0)); // fire.cocked
175 m_fsm.AddTransition(new WeaponTransition( Trigger_C0, _fin_, C0));
176 m_fsm.AddTransition(new WeaponTransition( Trigger_C0, _dto_, C0));
177 m_fsm.AddTransition(new WeaponTransition( Trigger_C0, _abt_, C0));
178
179 m_fsm.AddTransition(new WeaponTransition( C1, __T__, Trigger_C1)); // fire.cocked
180 m_fsm.AddTransition(new WeaponTransition( Trigger_C1, _fin_, D1));
181 m_fsm.AddTransition(new WeaponTransition( Trigger_C1, _rto_, D1));
182 m_fsm.AddTransition(new WeaponTransition( Trigger_C1, _abt_, D1));
183
184 m_fsm.AddTransition(new WeaponTransition( D1, __T__, Trigger_D1)); // fire.cocked
185 m_fsm.AddTransition(new WeaponTransition( Trigger_D1, _fin_, D1));
186 m_fsm.AddTransition(new WeaponTransition( Trigger_D1, _dto_, D1));
187 m_fsm.AddTransition(new WeaponTransition( Trigger_D1, _abt_, D1));
188
189 m_fsm.AddTransition(new WeaponTransition( JF, __T__, Trigger_JF)); // fire.cocked
190 m_fsm.AddTransition(new WeaponTransition( Trigger_JF, _fin_, JF));
191 m_fsm.AddTransition(new WeaponTransition( Trigger_JF, _dto_, JF));
192 m_fsm.AddTransition(new WeaponTransition( Trigger_JF, _abt_, JF));
193
194
195 m_fsm.AddTransition(new WeaponTransition( C1, __TJ_, Trigger_C1J)); // fire.cocked
196 m_fsm.AddTransition(new WeaponTransition( Trigger_C1J, _fin_, JF));
197 m_fsm.AddTransition(new WeaponTransition( Trigger_C1J, _rto_, JF));
198 m_fsm.AddTransition(new WeaponTransition( Trigger_C1J, _abt_, JF));
199
200//---------------------------------------------
201
202 SetInitialState(C0);
203
204 SelectionBulletHide();
205 HideMagazine();
206
207 m_fsm.Start();
208 }
209
210 override void SetActions()
211 {
213 super.SetActions();
215 }
216};
217
218
void wpnPrint(string s)
Определения Debug.c:1
void AddAction(typename actionName)
Определения AdvancedCommunication.c:220
@ UNKNOWN
24 - Any other error. Can be returned from any call.
Определения BIOSErrorModule.c:56
LoadedJammed
EmptyDischarged
BARIMAnimState
BARIMStableStateID
LoadedDischarged
LoadedCharged
@ DEFAULT
Определения ECrewMemberState.c:3
class WeaponGuardIsDestroyed extends WeaponGuardBase m_weapon
Определения Guards.c:604
@ OPENED
Определения SKS.c:4
@ JAMMED
Определения SKS.c:5
class SSPFireout extends WeaponStableState OnEntry
enum FSMTransition WeaponTransition
enum FSMTransition WeaponEventBase
MuzzleState
Определения WeaponStableState.c:15
ref array< MuzzleState > m_muzzleHasBullet
Определения WeaponStableState.c:30
pair ( action, actionType )
Определения Weapon_Base.c:5
override void InitStateMachine()
ref WeaponStableState C0
override void SetActions()
ref WeaponStableState JF
ref WeaponStableState C1
ref WeaponStableState D1
static bool IsWeaponLogEnable()
Определения Debug.c:718
Определения Debug.c:594
Определения ObjectTyped.c:2
signalize mechanism manipulation
Определения Events.c:35
weapon finite state machine
Определения WeaponFire.c:99
override bool IsJammed()
Определения Crossbow.c:33
override void OnExit(WeaponEventBase e)
Определения Crossbow.c:29
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
override void InitMuzzleArray()
override bool HasMagazine()
override bool IsRepairEnabled()
override void OnEntry(WeaponEventBase e)
override int GetCurrentStateID()
override bool IsJammed()
override bool HasBullet()
override void OnExit(WeaponEventBase e)
handle jamming state set jam/unjam state for weapon
Определения SKS.c:53
unjam submachine
class LOD Object
WeaponActionChamberingTypes
Определения human.c:876
WeaponActions
actions
Определения human.c:816
WeaponActionUnjammingTypes
Определения human.c:912
WeaponActionFireTypes
Определения human.c:920