DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
WeaponFireAndChamberNext.c
См. документацию.
1class WeaponFireAndChamberNext extends WeaponStateBase
2{
4 int m_actionType;
5
8
9 void WeaponFireAndChamberNext (Weapon_Base w = NULL, WeaponStateBase parent = NULL, WeaponActions action = WeaponActions.NONE, int actionType = -1)
10 {
11 m_action = action;
12 m_actionType = actionType;
13
14 // setup nested state machine
15 m_fire = new WeaponFireAndChamber(m_weapon, this, m_action, m_actionType);
16
17 // events
18 WeaponEventBase _fin_ = new WeaponEventHumanCommandActionFinished;
19 WeaponEventAnimBulletEject __be_ = new WeaponEventAnimBulletEject;
20 WeaponEventReloadTimeout __to_ = new WeaponEventReloadTimeout;
21
22 m_fsm = new WeaponFSM(this); // @NOTE: set owner of the submachine fsm
23
24 // transitions
25 m_fsm.AddTransition(new WeaponTransition(m_fire, _fin_, NULL));
26 m_fsm.AddTransition(new WeaponTransition(m_fire, __to_, NULL));
27
28 m_fsm.SetInitialState(m_fire);
29 }
30
31 override void OnEntry (WeaponEventBase e)
32 {
33 super.OnEntry(e);
34 if (e)
36 }
37
38 override void OnUpdate (float dt)
39 {
40 m_dtAccumulator += dt;
42 Class.CastTo(p, m_weapon.GetHierarchyParent());
43 if( p )
44 {
45 HumanInputController hic = p.GetInputController();
46
47 int muzzleIndex = m_weapon.GetCurrentMuzzle();
48 float reloadTime = m_weapon.GetReloadTime(muzzleIndex);
49
50 if ( m_dtAccumulator >= reloadTime && ( hic.IsAttackButton() || (m_weapon.GetBurstCount() < m_weapon.GetCurrentModeBurstSize(muzzleIndex))))
51 {
52 if (m_weapon.CanProcessWeaponEvents())
53 {
54 m_weapon.ProcessWeaponEvent(new WeaponEventReloadTimeout(p));
55 }
56 }
57 }
58 }
59
60 override void OnExit (WeaponEventBase e)
61 {
62 //m_weapon.ResetBurstCount();
64 super.OnExit(e);
65 }
66
67 override void OnAbort (WeaponEventBase e)
68 {
69 m_weapon.SetCoolDown(GetCoolDown());
70 m_weapon.ResetBurstCount();
71 super.OnAbort(e);
72 }
73
74 override float GetCoolDown()
75 {
76 int muzzleIndex = m_weapon.GetCurrentMuzzle();
77 float reloadTime = m_weapon.GetReloadTime(muzzleIndex);
78 return reloadTime - m_dtAccumulator;
79 }
80};
81
82
enum FSMTransition WeaponTransition
class WeaponEndAction extends WeaponStartAction m_action
Super root of all classes in Enforce script.
Определения EnScript.c:11
Определения ManBase.c:2
proto native bool IsAttackButton()
returns true if 'UAFire' button is pressed (== true for multiple ticks). Synced.
Определения human.c:18
shorthand
Определения BoltActionRifle_Base.c:6
signalize mechanism manipulation
Определения Events.c:35
weapon finite state machine
Определения WeaponFire.c:99
int m_actionType
action to be played
Определения RifleChambering.c:4
void WeaponStateBase(Weapon_Base w=NULL, WeaponStateBase parent=NULL)
internal state id used for load/restore
Определения WeaponStateBase.c:17
ref WeaponFSM m_fsm
hierarchical parent state of this state (or null)
Определения WeaponStateBase.c:14
override float GetCoolDown()
Определения WeaponFireAndChamberNext.c:74
void WeaponFireAndChamberNext(Weapon_Base w=NULL, WeaponStateBase parent=NULL, WeaponActions action=WeaponActions.NONE, int actionType=-1)
Определения WeaponFireAndChamberNext.c:9
WeaponActions m_action
Определения RifleChambering.c:3
float m_dtAccumulator
Определения WeaponFireAndChamberNext.c:6
Weapon_Base m_weapon
Определения WeaponStateBase.c:12
ref WeaponFire m_fire
Определения WeaponFireAndChamberNext.c:7
override void OnEntry(WeaponEventBase e)
Определения WeaponFireAndChamberNext.c:31
override void OnUpdate(float dt)
Определения WeaponFireAndChamberNext.c:38
override void OnAbort(WeaponEventBase e)
Определения WeaponFireAndChamberNext.c:67
override void OnExit(WeaponEventBase e)
Определения WeaponFireAndChamberNext.c:60
represent weapon state base
Определения BulletHide.c:2
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
WeaponActions
actions
Определения human.c:816