DayZ 1.29
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionUnfoldMap.c
См. документацию.
2{
8
15
17 {
18 if (g_Game && g_Game.GetMission())
19 {
21 {
22 g_Game.GetMission().RemoveActiveInputExcludes({"map"}, false);
23 }
24 else
25 {
26 g_Game.GetMission().RemoveActiveInputExcludes({"loopedactions"}, false);
27 }
28 g_Game.GetMission().RemoveActiveInputRestriction(EInputRestrictors.MAP);
29 }
30
31 if (!m_ActionData || !m_ActionData.m_Player)
32 return;
33
34 ItemMap chernomap = ItemMap.Cast(m_ActionData.m_Player.GetItemInHands());
35 if (chernomap && m_ActionData.m_Player.IsMapOpen())
36 {
37 chernomap.SetMapStateOpen(false, m_ActionData.m_Player);
38 }
39 }
40
41 override void SetActionData(ActionData action_data)
42 {
43 m_ActionData = action_data;
44 m_InitMovementState = m_ActionData.m_Player.m_MovementState.m_iStanceIdx;
45 }
46
48 {
49 return m_CancelCondition;
50 }
51
52 override void OnStateChange(int pOldState, int pCurrentState)
53 {
54 if (!m_ActionData || !m_ActionData.m_Player)
55 return;
56
57 if ((pOldState == STATE_LOOP_IN && pCurrentState == STATE_LOOP_LOOP) && !m_HasReceivedEvent)
58 {
59 m_CancelCondition = true;
60 }
61 }
62
63 override void OnAnimationEvent(int pEventID)
64 {
65 if (!m_ActionData || !m_ActionData.m_Player)
66 return;
67
68 switch (pEventID)
69 {
70 case UA_ANIM_EVENT:
71 m_HasReceivedEvent = true;
72 m_FinalMovementState = m_ActionData.m_Player.m_MovementState.m_iStanceIdx;
73
74 if (StateCheck())
75 {
77 m_CancelCondition = false;
78 }
79 else
80 {
81 m_CancelCondition = true;
82 }
83 break;
84 }
85 }
86
87 override void OnFinish(bool pCanceled)
88 {
89 if (m_ActionData && m_ActionData.m_Player)
90 {
91 if (m_ActionData && m_ActionData.m_ActionComponent)
92 m_ActionData.m_State = m_ActionData.m_ActionComponent.Interrupt(m_ActionData);
93
94 if ((!g_Game.IsDedicatedServer()) && g_Game.GetUIManager() && g_Game.GetUIManager().IsMenuOpen(MENU_MAP))
95 {
96 g_Game.GetUIManager().FindMenu(MENU_MAP).Close();
97 }
98
99 ActionUnfoldMap action = ActionUnfoldMap.Cast(m_ActionData.m_Action);
102
103 m_ActionData.m_Player.SetMapClosingSyncSet(false); //reset
104
105 ItemMap chernomap = ItemMap.Cast(m_ActionData.m_Player.GetItemInHands());
106 if (chernomap && m_ActionData.m_Player.IsMapOpen())
107 {
108 chernomap.SetMapStateOpen(false, m_ActionData.m_Player);
109 }
110
111 if (action)
112 action.End(m_ActionData);
113 }
114 }
115
117 {
118 if (m_ActionData.m_Player.IsSwimming() || m_ActionData.m_Player.IsClimbing() || m_ActionData.m_Player.IsFalling() || m_ActionData.m_Player.IsClimbingLadder() || m_ActionData.m_Player.IsUnconscious() || m_ActionData.m_Player.IsRestrained())
119 return;
120
121 ItemMap chernomap = ItemMap.Cast(m_ActionData.m_Player.GetItemInHands());
122 if (chernomap)
123 {
124 if (!m_ActionData.m_Player.IsMapOpen() && !m_MapFolding)
125 {
126 if (m_CancelCondition) //do not open when cancelling in progress
127 return;
128
129 chernomap.SetMapStateOpen(true, m_ActionData.m_Player);
130
131 if (!g_Game.IsDedicatedServer())
132 {
133 Mission mission = g_Game.GetMission();
134 UIManager m_UIManager;
135 UIScriptedMenu mapMenu;
136 m_UIManager = g_Game.GetUIManager();
137 m_UIManager.CloseAll();
139 {
140 mapMenu = m_UIManager.EnterScriptedMenu(MENU_MAP, null);
141 mapMenu.InitMapItem(chernomap);
142 mapMenu.LoadMapMarkers();
143 mission.AddActiveInputExcludes({"map"});
144 }
145 else
146 {
147 mission.AddActiveInputExcludes({"loopedactions"});
148 }
149
150 mission.AddActiveInputRestriction(EInputRestrictors.MAP);
151 }
152 }
153 else if (m_ActionData.m_Player.IsMapOpen())
154 {
155 chernomap.SetMapStateOpen(false, m_ActionData.m_Player);
156 m_MapFolding = true;
157 m_ActionData.m_Player.SetMapOpen(false);
158 }
159 }
160 }
161
163 {
165 }
166}
167
169{
170 void ActionUnfoldMap()
172 m_Text = "#unfold_map";
175 override bool IsInstant()
176 {
177 return false;
178 }
179
181 {
182 m_ConditionItem = new CCINonRuined();
183 m_ConditionTarget = new CCTNone();
185
186 override bool HasTarget()
187 {
188 return false;
189 }
190
191 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
192 {
193 if (player.m_hac || player.IsMapOpen())
194 {
195 return false;
196 }
197 return true;
198 }
199
200 override int GetActionCategory()
201 {
202 return AC_SINGLE_USE;
203 }
204
205 override void OnStartClient(ActionData action_data)
206 {
207 OpenMap(action_data);
208 }
210 override void OnStartServer(ActionData action_data)
211 {
212 super.OnStartServer(action_data);
213
214 OpenMap(action_data);
215 ItemMap chernomap = ItemMap.Cast(action_data.m_MainItem);
216 chernomap.SyncMapMarkers();
217 }
218
219 override void OnEndRequest(ActionData action_data)
221 action_data.m_Callback.InternalCommand(DayZPlayerConstants.CMD_ACTIONINT_END);
222 action_data.m_State = UA_FINISHED;
223 }
224
225 override void Interrupt(ActionData action_data)
226 {
227 if (action_data.m_Player.m_hac)
228 {
229 action_data.m_Player.m_hac.m_MapFolding = true;
230 action_data.m_Player.m_hac.PerformMapChange();
231 action_data.m_Player.m_hac.Cancel();
232 }
233 else //should never get here, End called from the callback
234 {
235 End(action_data);
236 }
237 }
238
239 void OpenMap(ActionData action_data)
240 {
241 if (!action_data.m_Player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_PRONE))
242 {
243 action_data.m_Player.m_hac = ActionUnfoldMapCB.Cast(action_data.m_Player.AddCommandModifier_Action(DayZPlayerConstants.CMD_ACTIONMOD_VIEWMAP,ActionUnfoldMapCB));
244 }
245 else
246 {
247 action_data.m_Player.m_hac = ActionUnfoldMapCB.Cast(action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_VIEWMAP,ActionUnfoldMapCB,DayZPlayerConstants.STANCEMASK_PRONE));
248 }
249
250 // sets player for associated callback to use
251 if (action_data.m_Player.m_hac)
252 {
253 action_data.m_Player.m_hac.SetActionData(action_data);
254 action_data.m_Callback = action_data.m_Player.m_hac;
256 }
257
259 {
260 return false;
261 }
262};
const int AC_SINGLE_USE
ActionBase ActionData
Определения ActionBase.c:30
void Interrupt()
Определения ActionManagerBase.c:284
class ActionTargets ActionTarget
ActionUnfoldMapCB ActionBaseCB ActionUnfoldMap()
Определения ActionUnfoldMap.c:170
void OpenMap(ActionData action_data)
Определения ActionUnfoldMap.c:239
class DayZCreatureAnimInterface RegisterAnimationEvent(string event_name, string function_name)
DayZGame g_Game
Определения DayZGame.c:3942
Mission mission
Определения DisplayStatus.c:28
proto static native void End()
Finalizes the testing process.
bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBase.c:415
void OnEndRequest(ActionData action_data)
Определения ActionBase.c:797
bool CanBePerformedWhileChangingStance()
Condition used in PlayerBase::CanChangeStance to check if stance can be changed while action is perfo...
Определения ActionBase.c:320
bool HasTarget()
Определения ActionBase.c:250
int GetActionCategory()
Определения ActionBase.c:284
void OnStartClient(ActionData action_data)
Определения ActionBase.c:1277
void OnStartServer(ActionData action_data)
Определения ActionBase.c:1280
bool IsInstant()
Определения ActionBase.c:268
void CreateConditionComponents()
Определения ActionBase.c:236
void ActionBaseCB()
Определения AnimatedActionBase.c:9
ActionData m_ActionData
Определения AnimatedActionBase.c:3
Определения ActionBase.c:59
bool m_CancelCondition
Определения ActionUnfoldMap.c:5
void ~ActionUnfoldMapCB()
Определения ActionUnfoldMap.c:16
bool m_MapFolding
Определения ActionUnfoldMap.c:3
void ActionUnfoldMapCB()
Определения ActionUnfoldMap.c:9
override void SetActionData(ActionData action_data)
Определения ActionUnfoldMap.c:41
int m_FinalMovementState
Определения ActionUnfoldMap.c:7
override void OnFinish(bool pCanceled)
Определения ActionUnfoldMap.c:87
override void OnAnimationEvent(int pEventID)
Определения ActionUnfoldMap.c:63
void PerformMapChange()
Определения ActionUnfoldMap.c:116
int m_InitMovementState
Определения ActionUnfoldMap.c:6
bool m_HasReceivedEvent
Определения ActionUnfoldMap.c:4
bool StateCheck()
Определения ActionUnfoldMap.c:162
bool CancelCondition()
Определения ActionUnfoldMap.c:47
override void OnStateChange(int pOldState, int pCurrentState)
Определения ActionUnfoldMap.c:52
Определения CCINonRuined.c:2
Определения CCTNone.c:2
static bool GetUse3DMap()
Определения CfgGameplayHandler.c:392
Определения ChernarusMap_Open.c:2
Mission class.
Определения gameplay.c:686
Определения PlayerBaseClient.c:2
proto native UIScriptedMenu EnterScriptedMenu(int id, UIMenuPanel parent)
Create & open menu with specific id (see MenuID) and set its parent.
bool CloseAll()
Close all opened menus.
Определения UIManager.c:78
Определения UIManager.c:2
override void LoadMapMarkers()
Определения MapMenu.c:322
override void InitMapItem(EntityAI item)
Определения MapMenu.c:168
Определения DayZGame.c:64
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
const int MENU_MAP
Определения 3_Game/DayZ/constants.c:191
const int UA_FINISHED
Определения 3_Game/DayZ/constants.c:469
const int UA_ANIM_EVENT
Определения 3_Game/DayZ/constants.c:476
static const int STATE_LOOP_IN
looped state
Определения human.c:352
proto native void EnableCancelCondition(bool pEnable)
proto native void EnableStateChangeCallback()
enables state change callback OnStateChange
static const int STATE_LOOP_LOOP
Определения human.c:353