DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
HandAnimatedSwapping.c
Go to the documentation of this file.
1class HandSwappingAnimated_Show extends HandForceSwappingAnimated_Show
2{
3};
4
5
6class HandAnimatedSwapping extends HandStateBase
7{
8 ref InventoryLocation m_Src1 = null;
9 ref InventoryLocation m_Src2 = null;
10 ref InventoryLocation m_Dst1 = null;
11 ref InventoryLocation m_Dst2 = null;
12
13 ref HandStartHidingAnimated m_Hide;
14 ref HandSwappingAnimated_Show m_Show;
15
16 void HandAnimatedSwapping(Man player = null, HandStateBase parent = null)
17 {
18 // setup nested state machine
19 m_Hide = new HandStartHidingAnimated(player, this, WeaponActions.HIDE, -1);
20 m_Show = new HandSwappingAnimated_Show(player, this, WeaponActions.SHOW, -1);
21
22 // events:
23 HandEventBase _fin_ = new HandEventHumanCommandActionFinished;
24 HandEventBase _AEh_ = new HandAnimEventChanged;
25
26 m_FSM = new HandFSM(this); // @NOTE: set owner of the submachine fsm
27
28 m_FSM.AddTransition(new HandTransition( m_Hide, _AEh_, m_Show ));
29 m_FSM.AddTransition(new HandTransition( m_Show, _fin_, null ));
30
31 m_FSM.SetInitialState(m_Hide);
32 }
33
34 override void OnEntry(HandEventBase e)
35 {
36 HandEventSwap es = HandEventSwap.Cast(e);
37 if (es)
38 {
39 m_Src1 = es.GetSrc();
40 m_Src2 = es.m_Src2;
41 m_Dst1 = es.GetDst();
42 m_Dst2 = es.m_Dst2;
43
44 m_Show.m_Src1 = m_Src1;
45 m_Show.m_Src2 = m_Src2;
46 m_Show.m_Dst1 = m_Dst1;
47 m_Show.m_Dst2 = m_Dst2;
48
49 m_Hide.m_ActionType = es.m_AnimationID;
50 m_Show.m_ActionType = es.m_Animation2ID;
51
52 if (!GetGame().IsDedicatedServer())
53 {
54 e.m_Player.GetHumanInventory().AddInventoryReservationEx(m_Dst2.GetItem(), m_Dst2, GameInventory.c_InventoryReservationTimeoutShortMS);
55 e.m_Player.GetHumanInventory().AddInventoryReservationEx(m_Dst1.GetItem(), m_Dst1, GameInventory.c_InventoryReservationTimeoutShortMS);
56 }
57 }
58
59 super.OnEntry(e); // @NOTE: super at the end (prevent override from submachine start)
60 }
61
62 override void OnAbort(HandEventBase e)
63 {
64 if ( !GetGame().IsDedicatedServer())
65 {
66 e.m_Player.GetHumanInventory().ClearInventoryReservationEx(m_Dst2.GetItem(), m_Dst2);
67 e.m_Player.GetHumanInventory().ClearInventoryReservationEx(m_Dst1.GetItem(), m_Dst1);
68 }
69 else
70 {
71 GetGame().ClearJuncture(e.m_Player, m_Dst2.GetItem());
72 GetGame().ClearJuncture(e.m_Player, m_Dst1.GetItem());
73 }
74
75 m_Src1 = null;
76 m_Src2 = null;
77 m_Dst1 = null;
78 m_Dst2 = null;
79
80 super.OnAbort(e);
81 }
82
83 override void OnExit(HandEventBase e)
84 {
85 if ( !GetGame().IsDedicatedServer())
86 {
87 e.m_Player.GetHumanInventory().ClearInventoryReservationEx(m_Dst2.GetItem(), m_Dst2);
88 e.m_Player.GetHumanInventory().ClearInventoryReservationEx(m_Dst1.GetItem(), m_Dst1);
89 }
90
91 m_Src1 = null;
92 m_Src2 = null;
93 m_Dst1 = null;
94 m_Dst2 = null;
95
96 super.OnExit(e);
97 }
98};
99
FSMTransition< HandStateBase, HandEventBase, HandActionBase, HandGuardBase > HandTransition
Definition HandFSM.c:20
proto native bool ClearJuncture(Man player, notnull EntityAI item)
script counterpart to engine's class Inventory
Definition Inventory.c:77
const int c_InventoryReservationTimeoutShortMS
Definition Inventory.c:684
Abstracted event, not to be used, only inherited.
Hand finite state machine.
represent hand state base
override void OnAbort(HandEventBase e)
override void OnEntry(HandEventBase e)
ref HandSwappingAnimated_Show m_Show
ref InventoryLocation m_Src2
override void OnExit(HandEventBase e)
ref InventoryLocation m_Dst1
ref InventoryLocation m_Dst2
void HandAnimatedSwapping(Man player=null, HandStateBase parent=null)
ref HandAnimatedMoveToDst_W4T_Basic m_Hide
ref InventoryLocation m_Src1
InventoryLocation.
proto native CGame GetGame()
WeaponActions
actions
Definition human.c:798