DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionTargetsCursor.c
См. документацию.
2{
5 protected vector m_ScreenPos;
6 protected int m_CompIdx;
7
9 {
10 m_CachedObject = null;
12 m_CompIdx = -1;
13 }
14
16 void Store(Object obj, vector pos, int compIdx)
17 {
18 if (!m_CachedObject)
19 {
20 m_CachedObject = obj;
21 m_CursorWPos = pos;
22 m_CompIdx = compIdx;
23 }
24 }
25
28 {
30 {
31 m_CachedObject = null;
33 m_CompIdx = -1;
34 }
35 }
36
38 {
39 return m_CachedObject;
40 }
41
43 {
44 return m_CursorWPos;
45 }
46
48 {
49 return m_CompIdx;
50 }
51};
52
54{
55 protected const int ACTION_ORDER_INTERACT_SINGLE = 0;
56 protected const int ACTION_ORDER_INTERACT_CONTINUOUS = 1;
57 protected const int ACTION_ORDER_SINGLE = 2;
58 protected const int ACTION_ORDER_CONTINUOUS = 3;
60 PPERequester_BurlapSackEffects,
61 PPERequester_FlashbangEffects
62 };
63
68
73 //protected ref set<ActionBase> m_InfoActions;
75 protected IngameHud m_Hud;
76
78
79 protected int m_InteractActionsNum;
81 protected int m_ItemActionsNum;
83 protected typename m_SelectedActionCategory;
84 protected bool m_HealthEnabled;
85 protected bool m_QuantityEnabled;
86 protected bool m_FixedOnPosition;
87 protected bool m_Hidden;
88 protected bool m_TargetItemFrozen;
89
90 protected Widget m_Root;
92 protected Widget m_ItemLeft;
93
95 protected ref array<ref TargetActionInfoPanelBase> m_ActiveInfoPanels; //useful for flushing data on ActionTargetsCursor hide
96 protected ref map<int, ActionBase> m_ActionMap; //uses ACTION_ORDER constants
97 //protected ref TargetActionInfoPanelBase m_ActionInfoPanel;
98
100 protected float m_MaxWidthChild;
101 protected float m_RootWidth;
102 protected float m_RootHeight;
103
104 protected float m_PosX;
105 protected float m_PosY;
106
108 {
110 m_Interact = null;
112 m_Single = null;
113 m_Continuous = null;
114 //m_InfoActions = new set<ActionBase>();
115 m_AM = null;
116
117 m_HealthEnabled = true;
118 m_QuantityEnabled = true;
119
121 m_Hidden = false;
122 m_TargetItemFrozen = false;
124
125 m_Hud = GetHud();
126
128
129 g_Game.GetMission().GetOnInputPresetChanged().Insert(OnInputPresetChanged);
130 g_Game.GetMission().GetOnInputDeviceChanged().Insert(OnInputDeviceChanged);
131 }
132
134
135 // Controls appearance of the builded cursor
136 void SetHealthVisibility(bool state)
137 {
138 m_HealthEnabled = state;
139 }
140
141 void SetQuantityVisibility(bool state)
142 {
143 m_QuantityEnabled = state;
144 }
145
146 protected void SetControllerIcon(string pWidgetName, string pInputName)
147 {
148 RichTextWidget w = RichTextWidget.Cast(m_Root.FindAnyWidget(pWidgetName + "_btn_icon_xbox"));
149 w.SetText(InputUtils.GetRichtextButtonIconFromInputAction(pInputName, "", EUAINPUT_DEVICE_CONTROLLER));
150 }
151
162
163 protected void CreateActionInfoPanel(typename panelType, int actionCategory)
164 {
165 TargetActionInfoPanelBase tInfoPanel = TargetActionInfoPanelBase.Cast(panelType.Spawn());
166 tInfoPanel.SetParentWidget(m_Root);
167 m_Root.AddChild(tInfoPanel.GetMainWidget(),false); //ce n'est pas un LayoutHolder, bypassing inheritance
168 tInfoPanel.Init();
169
170 if (!m_TargetActionInfoPanelMap.Get(actionCategory))
172
174 tmp.Insert(tInfoPanel);
175 m_TargetActionInfoPanelMap.Set(actionCategory, tmp);
176 }
177
178 protected void OnWidgetScriptInit(Widget w)
179 {
180 m_Root = w;
181 m_Root.Show(false);
182 m_Root.SetHandler(this);
183
187
188 m_Container = w.FindAnyWidget("container");
189 m_ItemLeft = w.FindAnyWidget("item_left");
191
192 m_Root.Update();
193 }
194
195 protected void OnInputPresetChanged()
196 {
197 #ifdef PLATFORM_CONSOLE
199 #endif
200 }
201
202 protected void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
203 {
205 }
206
209 {
210 SetControllerIcon("interact", "UAAction");
211 SetControllerIcon("continuous_interact", "UAAction");
212 SetControllerIcon("single", "UADefaultAction");
213 SetControllerIcon("continuous", "UADefaultAction");
214 }
215
218 {
219 bool showConsoleIcons = false;
220 #ifdef PLATFORM_CONSOLE
221 showConsoleIcons = g_Game.GetInput().GetCurrentInputDevice() == EInputDeviceType.CONTROLLER || !g_Game.GetInput().IsEnabledMouseAndKeyboardEvenOnServer();
222 #endif
223
224 ShowXboxHidePCIcons("interact", showConsoleIcons);
225 ShowXboxHidePCIcons("continuous_interact", showConsoleIcons);
226 ShowXboxHidePCIcons("continuous", showConsoleIcons);
227 ShowXboxHidePCIcons("single", showConsoleIcons);
228 }
229
230 protected void PrepareCursorContent()
231 {
232 //m_InfoActions.Clear();
233 m_TargetItemFrozen = false;
234 int health = -1;
235 int cargoCount = 0;
236 int q_type = 0;
237 int q_min, q_max = -1;
238 float q_cur = -1.0;
239
242 health = GetItemHealth();
243 SetItemHealth(health, "item", "item_health_mark", m_HealthEnabled);
245 GetItemQuantity(q_type, q_cur, q_min, q_max);
247 GetItemCargoCount(cargoCount);
249 SetItemQuantity(q_type, q_cur, q_min, q_max, "item", "item_quantity_pb", "item_quantity_text", m_QuantityEnabled);
250 SetInteractActionIcon("interact", "interact_icon_frame", "interact_btn_inner_icon", "interact_btn_text");
251 SetItemDesc(GetItemDesc(m_Interact), cargoCount, "item", "item_desc");
252 SetActionWidget(m_Interact, GetActionDesc(m_Interact), "interact", "interact_action_name");
253
254 SetInteractActionIcon("continuous_interact", "continuous_interact_icon_frame", "continuous_interact_btn_inner_icon", "continuous_interact_btn_text");
255 SetActionWidget(m_ContinuousInteract, GetActionDesc(m_ContinuousInteract), "continuous_interact", "continuous_interact_action_name");
256
257 SetActionWidget(m_Single, GetActionDesc(m_Single), "single", "single_action_name");
258 SetActionWidget(m_Continuous, GetActionDesc(m_Continuous), "continuous", "continuous_action_name");
259 SetMultipleItemAction("single_mlt_wrapper", "single_mlt_wrapper_not_select");
260 SetMultipleContinuousItemAction("continuous_mlt_wrapper", "continuous_mlt_wrapper_not_select");
261 SetMultipleInteractAction("interact_mlt_wrapper", "interact_mlt_wrapper_not_select");
262 SetMultipleContinuousInteractAction("continuous_interact_mlt_wrapper", "continuous_interact_mlt_wrapper_not_select");
263
265 }
266
267 protected void BuildFixedCursor(bool forceRebuild = true)
268 {
269 int w, h, x, y;
270
271 if (forceRebuild)
273
274 GetScreenSize(w, h);
275 x = w/2 + 32;
276 y = h/2 + 32;
277
278 m_Root.SetPos(x, y);
279 }
280
281 protected void BuildFloatingCursor(bool forceRebuild)
282 {
283 if (forceRebuild)
285
286 m_Root.SetPos(m_PosX, m_PosY);
287 }
288
289 override bool OnUpdate(Widget w)
290 {
291 if (m_Root == w)
292 {
293 Update(false);
294 return true;
295 }
296
297 return false;
298 }
299
300 protected void HideWidget()
301 {
302 if (m_Root.IsVisible())
303 {
304 m_Root.Show(false);
305 m_CachedObject.Invalidate();
307 }
308 }
309
310 void Update(bool fullUpdate = true)
311 {
312 if (m_Player && !m_Player.IsAlive()) // handle respawn
313 {
314 m_Player = null;
315 m_AM = null;
316 }
317
318 if (!m_Player)
319 GetPlayer();
320
321 if (!m_AM)
323
324 if (!m_Player || !m_AM)
325 return;
326
327 if (m_Player.IsInVehicle() || m_AM.GetRunningAction())
328 m_Hidden = true;
329
330
331 bool isVisionObstructionActive = PPEManagerStatic.GetPPEManager().IsAnyRequesterRunning(VISION_OBSTRUCTION_PPEFFECTS_TYPES);
332
334 if (isVisionObstructionActive || m_Hud.GetHudVisibility().IsContextFlagActive(IngameHudVisibility.HUD_HIDE_FLAGS))
335 {
336 HideWidget();
337 return;
338 }
339
340 if (fullUpdate)
341 {
342 GetTarget();
343 GetActions();
344 }
345
347 bool showTarget = (m_Target && !m_Hidden) || m_Interact || m_ContinuousInteract || (m_Single && m_Single.HasTarget()) || (m_Continuous && m_Continuous.HasTarget());
348 if (!showTarget)
349 {
351 return;
352 }
353
354 Object targetObject = m_Target.GetObject();
355 Object targetParent = m_Target.GetParent();
356
358 if (targetObject == null && (m_Interact || m_ContinuousInteract || m_Single || m_Continuous))
359 {
360 //Print(">> fixed widget");
361 m_CachedObject.Invalidate();
362 BuildFixedCursor(fullUpdate);
363 m_Root.Show(true);
364 m_FixedOnPosition = false;
365 m_Hidden = false;
366 return;
367 }
368 else if (targetObject != null && !targetObject.IsHologram() && (targetObject.IsEntityAI() || targetObject.IsPlainObject() || targetObject.IsWoodBase() || targetObject.IsRock()) && (!targetParent || targetParent && !targetParent.IsHologram()))
369 {
373
374 if (targetObject != m_CachedObject.Get())
375 m_CachedObject.Invalidate();
376
378 {
379 BuildFloatingCursor(fullUpdate);
380 m_Root.Show(true);
381 m_Hidden = false;
382 return;
383 }
384 else
385 {
386 BuildFixedCursor(fullUpdate);
387 m_FixedOnPosition = false;
388 m_Root.Show(true);
389 m_Hidden = false;
390 return;
391 }
392
393 }
394 else
395 {
397 }
398
400 m_MaxWidthChild = 350;
401 }
402
403 protected void ShowXboxHidePCIcons(string widget, bool show_xbox_icon)
404 {
405 m_Root.FindAnyWidget(widget + "_btn_icon_xbox").Show(show_xbox_icon);
406 m_Root.FindAnyWidget(widget + "_btn_icon").Show(!show_xbox_icon);
407 }
408
409
411 protected vector TransformToScreenPos(vector pWorldPos)
412 {
413 float parent_width, parent_height;
414 vector transformed_pos, screen_pos;
415
417 screen_pos = g_Game.GetScreenPosRelative(pWorldPos);
419 m_Root.GetParent().GetScreenSize(parent_width, parent_height);
420
422 transformed_pos[0] = screen_pos[0] * parent_width;
423 transformed_pos[1] = screen_pos[1] * parent_height;
424
425 return transformed_pos;
426 }
427
428 protected void GetOnScreenPosition(out float x, out float y)
429 {
430 const float DEFAULT_HANDLE_OFFSET = 0.2;
431 const string CE_CENTER_COMP_NAME = "ce_center";
432 const string MEM_LOD_NAME = LOD.NAME_MEMORY;
433
434 int compIdx;
435 float pivotOffset = 0.0;
436 float memOffset = 0.0;
437 string compName;
438
439 bool isTargetForced = false;
440
441 vector worldPos;
442 vector modelPos;
443
444 LOD lod;
445
446 array<Selection> memSelections = new array<Selection>();
447 array<string> components = new array<string>; // for components with multiple selection
448
450
451 if (m_Target)
452 {
453 object = m_Target.GetObject();
454 compIdx = m_Target.GetComponentIndex();
455
456 if (m_Target.GetCursorHitPos() == vector.Zero)
457 isTargetForced = true;
458 }
459 else
460 {
461 return;
462 }
463
464 if (object)
465 {
466 if (!isTargetForced)
467 {
468 compName = object.GetActionComponentName(compIdx);
469 int namedComponentType = object.GetActionComponentNameList(compIdx, components);
470
471 if (!object.IsInventoryItem() && (object.HasFixedActionTargetCursorPosition() || namedComponentType == 0))
472 {
473 m_FixedOnPosition = true;
474 return;
475 }
476
477 pivotOffset = object.ConfigGetFloat("actionTargetPivotOffsetY");
478 memOffset = object.ConfigGetFloat("actionTargetMemOffsetY");
479
481 lod = object.GetLODByName(MEM_LOD_NAME);
482 if (lod != null)
483 {
485 lod.GetSelections(memSelections);
486
487 // items with CE_Center mem point
488 if (MiscGameplayFunctions.IsComponentInSelection(memSelections, CE_CENTER_COMP_NAME))
489 {
490 for (int i2 = 0; i2 < memSelections.Count(); ++i2)
491 {
492 if (memSelections[i2].GetName() == CE_CENTER_COMP_NAME && memSelections[i2].GetVertexCount() == 1)
493 {
494 m_FixedOnPosition = false;
495 modelPos = object.GetSelectionPositionMS(CE_CENTER_COMP_NAME);
496 worldPos = object.ModelToWorld(modelPos);
497 if (memOffset != 0.0)
498 {
499 worldPos[1] = worldPos[1] + memOffset;
500 }
501 else
502 {
503 worldPos[1] = worldPos[1] + DEFAULT_HANDLE_OFFSET;
504 }
505 }
506 }
507
509 m_CachedObject.Store(object, worldPos, compIdx);
510 }
512 else if (!compName.Contains("ladder") && IsComponentInSelection(memSelections, compName))
513 {
514 for (int i1 = 0; i1 < memSelections.Count(); ++i1)
515 {
517 if (memSelections[i1].GetName() == compName && memSelections[i1].GetVertexCount() == 1)
518 {
519 modelPos = object.GetSelectionPositionMS(compName);
520 worldPos = object.ModelToWorld(modelPos);
521
522 m_FixedOnPosition = false;
523 if (object.CanUseConstruction() || object.GetType() == "GardenPlot")
524 m_FixedOnPosition = true;
525
526 if (memOffset != 0.0)
527 {
528 worldPos[1] = worldPos[1] + memOffset;
529 }
530 else
531 {
532 worldPos[1] = worldPos[1] + DEFAULT_HANDLE_OFFSET;
533 }
534 }
535
537 if (memSelections[i1].GetName() == compName && memSelections[i1].GetVertexCount() > 1)
538 {
539 for (int j = 0; j < components.Count(); ++j)
540 {
541 if (IsComponentInSelection(memSelections, components[j]))
542 {
543 modelPos = object.GetSelectionPositionMS(components[j]);
544 worldPos = object.ModelToWorld(modelPos);
545
546 m_FixedOnPosition = false;
547 if (memOffset != 0.0)
548 {
549 worldPos[1] = worldPos[1] + memOffset;
550 }
551 else
552 {
553 worldPos[1] = worldPos[1] + DEFAULT_HANDLE_OFFSET;
554 }
555 }
556 }
557 }
558 }
559
561 m_CachedObject.Store(object, worldPos, -1);
562 }
564 else if (compName.Contains("ladder") && IsComponentInSelection(memSelections, compName))
565 {
566 vector ladderHandlePointLS, ladderHandlePointWS;
567 vector closestHandlePos;
568 float lastDistance = 0;
569
570 for (int i3 = 0; i3 < memSelections.Count(); ++i3)
571 {
572 if (memSelections[i3].GetName() == compName && memSelections[i3].GetVertexCount() > 1)
573 {
574 ladderHandlePointLS = memSelections[i3].GetVertexPosition(lod, 0);
575 ladderHandlePointWS = object.ModelToWorld(ladderHandlePointLS);
576 closestHandlePos = ladderHandlePointWS;
577 lastDistance = Math.AbsFloat(vector.DistanceSq(ladderHandlePointWS, m_Player.GetPosition()));
578
579 for (int k = 1; k < memSelections[i3].GetVertexCount(); ++k)
580 {
581 ladderHandlePointLS = memSelections[i3].GetVertexPosition(lod, k);
582 ladderHandlePointWS = object.ModelToWorld(ladderHandlePointLS);
583
584 if (lastDistance > Math.AbsFloat(vector.DistanceSq(ladderHandlePointWS, m_Player.GetPosition())))
585 {
586 lastDistance = Math.AbsFloat(vector.DistanceSq(ladderHandlePointWS, m_Player.GetPosition()));
587 closestHandlePos = ladderHandlePointWS;
588 }
589 }
590
591 m_FixedOnPosition = false;
592 worldPos = closestHandlePos;
593 if (memOffset != 0.0)
594 {
595 worldPos[1] = worldPos[1] + memOffset;
596 }
597 else
598 {
599 worldPos[1] = worldPos[1] + DEFAULT_HANDLE_OFFSET;
600 }
601 }
602 }
603
605 m_CachedObject.Store(object, worldPos, -1);
606 }
607 else
608 {
609 m_FixedOnPosition = true;
610 }
611 }
612 else
613 {
614 m_FixedOnPosition = true;
615 }
616 }
617 else
618 {
619 m_FixedOnPosition = true;
620 }
621
622 vector pos = TransformToScreenPos(worldPos);
623
624 x = pos[0];
625 y = pos[1];
626 }
627
628 worldPos = vector.Zero;
629 isTargetForced = false;
630 }
631
632 // kept for backward compatibility
633 protected bool IsComponentInSelection(array<Selection> selection, string compName)
634 {
635 return MiscGameplayFunctions.IsComponentInSelection(selection, compName);
636 }
637
638 // getters
639
640 protected void GetPlayer()
641 {
642 Class.CastTo(m_Player, g_Game.GetPlayer());
643 }
644
645 protected void GetActionManager()
646 {
647 if (m_Player && m_Player.IsPlayerSelected())
648 {
649 Class.CastTo(m_AM, m_Player.GetActionManager());
650 }
651 else
652 {
653 m_AM = null;
654 }
655 }
656
658 protected void GetActions()
659 {
660 m_Interact = null;
662 m_Single = null;
663 m_Continuous = null;
664
665 if (!m_AM) return;
666 if (!m_Target) return;
667 if (m_Player.IsSprinting()) return;
668 if (m_Player.IsInVehicle()) return; // TODO: TMP: Car AM rework needed
669
670 m_Interact = m_AM.GetPossibleAction(InteractActionInput);
674 m_Single = m_AM.GetPossibleAction(DefaultActionInput);
678
679 m_InteractActionsNum = m_AM.GetPossibleActionCount(InteractActionInput);
681 m_ItemActionsNum = m_AM.GetPossibleActionCount(DefaultActionInput);
683
684 m_SelectedActionCategory = m_AM.GetSelectedActionCategory();
685
686 if (m_Interact)
687 {
688 m_DisplayInteractTarget = m_Interact.GetDisplayInteractObject(m_Player, m_Target);
689 }
690 else if (m_Single)
691 {
692 m_DisplayInteractTarget = m_Single.GetDisplayInteractObject(m_Player, m_Target);
693 }
694 else if (m_ContinuousInteract)
695 {
697 }
698 else
699 {
701 }
702 }
703
704 protected void GetTarget()
705 {
706 if (!m_AM)
707 return;
708
709 m_Target = m_AM.FindActionTarget();
710 Object targetObj;
711 if (m_Target && Class.CastTo(targetObj,m_Target.GetObject()))
712 {
713 if (targetObj.IsItemBase())
714 {
715 ItemBase item = ItemBase.Cast(targetObj);
716 InventoryLocation invLocation = new InventoryLocation();
717 item.GetInventory().GetCurrentInventoryLocation(invLocation);
718
719 if ((!item.IsTakeable() && !item.IsActionTargetVisible()) || (m_Player && m_Player.IsInVehicle()) || invLocation.GetType() != InventoryLocationType.GROUND)
720 m_Hidden = true;
721 }
722 }
723 }
724
725 protected string GetActionDesc(ActionBase action)
726 {
727 string desc = "";
728 if (action && action.GetText())
729 {
730 desc = action.GetText();
731
732 if (desc && action.DisplayTargetInActionText())
733 string extraDescription = action.GetTargetName(m_Player, m_Target);
734 if (extraDescription)
735 desc = string.Format("%1 (%2)", desc, extraDescription);
736 }
737
738 return desc;
739 }
740
741 //Getting NAME of the entity
742 protected string GetItemDesc(ActionBase action)
743 {
744 string desc = "";
746 if (!tgObject && m_Target)
747 {
748 tgObject = m_Target.GetObject();
749 }
750
751 if (tgObject)
752 {
753 //BreakOut if item is ruined
754 Object tgParent = m_Target.GetParent();
755 if (!tgObject.IsAlive())
756 {
757 //Fetch parent item name if one is present
758 if (!tgParent || tgObject.DisplayNameRuinAttach())
759 desc = tgObject.GetDisplayName();
760 else
761 desc = tgParent.GetDisplayName();
762 return desc;
763 }
764
765 EntityAI targetEntity;
766
767 if (tgParent && (tgParent.IsItemBase() || tgParent.IsTransport() || tgParent.CanUseConstruction()))
768 {
769 targetEntity = EntityAI.Cast(tgParent);
770 }
771
772 if (tgObject.IsItemBase() || tgObject.IsTransport() || tgObject.CanUseConstruction())
773 {
774 targetEntity = EntityAI.Cast(tgObject);
775 }
776
777 if (targetEntity && targetEntity.ShowZonesHealth()) //TODO: investigate, should ShowZonesHealth be in the 'description' part?
778 {
779 string zone = "";
780
781 array<string> selections = new array<string>();
782
783 //NOTE: relevant fire geometry and view geometry selection names MUST match in order to get a valid damage zone
784 if (targetEntity.IsInherited(TentBase) && TentBase.Cast(targetEntity).GetState() != TentBase.PACKED)
785 {
786 //This is really specific to tents, as they use proxies. Hence object must be used
787 if (DamageSystem.GetDamageZoneFromComponentName(targetEntity, tgObject.GetActionComponentName(m_Target.GetComponentIndex(), LOD.NAME_FIRE), zone))
788 {
789 desc = DamageSystem.GetDamageDisplayName(targetEntity, zone);
790 }
791 }
792 else
793 {
794 targetEntity.GetActionComponentNameList(m_Target.GetComponentIndex(), selections, LOD.NAME_VIEW);
795
796 //Important to get display name from component tied to multiple selections
797 for (int s = 0; s < selections.Count(); s++)
798 {
799 if (DamageSystem.GetDamageZoneFromComponentName(targetEntity, selections[s], zone))
800 {
801 desc = DamageSystem.GetDamageDisplayName(targetEntity, zone);
802 }
803 }
804 }
805 }
806
807 //Safety check to output something to widget
808 if (targetEntity && desc == "")
809 desc = targetEntity.GetDisplayName();
810 }
811
812 return desc;
813 }
814
815 protected int GetItemHealth()
816 {
817 int health = -1;
818
819 if (m_Interact && !m_Interact.HasTarget())
820 {
821 return health;
822 }
823
825 if (!tgObject && m_Target)
826 {
827 tgObject = m_Target.GetObject();
828 }
829
830 if (tgObject)
831 {
832 Object tgParent = m_Target.GetParent();
833 EntityAI targetEntity;
834
835 //Return specific part health, even if display name is from parent
836 if (!tgObject.IsAlive())
837 {
838 EntityAI ent;
839 if (m_TargetItemFrozen && Class.CastTo(ent,tgObject) && (ent.IsAnimal() || ent.IsMan() || ent.IsZombie()))
840 health = -2; //frozen interaction later
841 else
842 health = tgObject.GetHealthLevel();
843
844 return health;
845 }
846
847 if (tgParent && (tgParent.IsItemBase() || tgParent.IsTransport() || tgParent.CanUseConstruction()))
848 {
849 targetEntity = EntityAI.Cast(tgParent);
850 }
851
852 if (tgObject.IsItemBase() || tgObject.IsTransport() || tgObject.CanUseConstruction())
853 {
854 targetEntity = EntityAI.Cast(tgObject);
855 }
856
857 if (targetEntity)
858 {
859 if (!targetEntity.IsDamageDestroyed())
860 {
861 string zone = "";
862 array<string> selections = new array<string>();
863
864 if (targetEntity.IsInherited(TentBase) && TentBase.Cast(targetEntity).GetState() != TentBase.PACKED)
865 {
866 //This is really specific to tents, as they use proxies. Hence object must be used
867 if (DamageSystem.GetDamageZoneFromComponentName(targetEntity, tgObject.GetActionComponentName(m_Target.GetComponentIndex(), LOD.NAME_FIRE), zone))
868 {
869 health = targetEntity.GetHealthLevel(zone);
870 }
871 }
872 else
873 {
874 //NOTE: relevant view geometry and view geometry selection names MUST match in order to get a valid damage zone
875 targetEntity.GetActionComponentNameList(m_Target.GetComponentIndex(), selections, LOD.NAME_VIEW);
876
877 for (int s = 0; s < selections.Count(); s++)
878 {
879 if (DamageSystem.GetDamageZoneFromComponentName(targetEntity , selections[s], zone))
880 {
881 health = targetEntity.GetHealthLevel(zone);
882 break;
883 }
884 }
885 }
886
887 if (zone == "")
888 health = targetEntity.GetHealthLevel();
889 }
890 }
891 else
892 {
893 health = tgObject.GetHealthLevel();
894 }
895 }
896
897 return health;
898 }
899
900 protected bool GetItemFrozen()
901 {
903 if (!tgObject && m_Target)
904 tgObject = m_Target.GetObject();
905
906 if (tgObject)
907 {
908 Object tgParent = m_Target.GetParent();
909 EntityAI targetEntity;
910
911 if (tgParent)
912 {
913 targetEntity = EntityAI.Cast(tgParent);
914 }
915 else
916 {
917 targetEntity = EntityAI.Cast(tgObject);
918 }
919
920 return (targetEntity && targetEntity.GetIsFrozen());
921 }
922
923 return false;
924 }
925
926 protected void GetItemQuantity(out int q_type, out float q_cur, out int q_min, out int q_max)
927 {
928 InventoryItem item = null;
929
930 if (m_Interact && !m_Interact.HasTarget())
931 {
932 return;
933 }
934
936 if (!tgObject && m_Target)
937 {
938 tgObject = m_Target.GetObject();
939 }
940
941 if (Class.CastTo(item, tgObject))
942 {
944 if (q_type > 0)
945 QuantityConversions.GetItemQuantity(item, q_cur, q_min, q_max);
946 }
947 }
948
950 protected void GetItemCargoCount(out int cargoCount)
951 {
952 EntityAI entity = null;
953
955 if (!tgObject && m_Target)
956 {
957 tgObject = m_Target.GetObject();
958 }
959
960 if (Class.CastTo(entity, tgObject))
961 {
962
963 GameInventory inventory = entity.GetInventory();
964 if (inventory)
965 {
966 cargoCount = AttachmentsWithInventoryOrCargoCount(inventory);
967 return;
968 }
969
971 cargoCount = 0;
972 }
973 }
974
975 // setters
976 protected void SetItemDesc(string descText, int cargoCount, string itemWidget, string descWidget)
977 {
978 Widget widget;
979 widget = m_Root.FindAnyWidget(itemWidget);
980
982 PlayerBase playerT = PlayerBase.Cast(m_Target.GetObject());
983 if (playerT)
984 string msg = playerT.GetLastUAMessage();
985
986 if (descText.Length() == 0 && msg.Length() == 0)
987 {
988 widget.Show(false);
989 return;
990 }
991
992 descText.ToUpper();
993 TextWidget itemName;
994 Class.CastTo(itemName, widget.FindAnyWidget(descWidget));
995
997 if (cargoCount > 0)
998 descText = string.Format("[+] %1 %2", descText, msg);
999 else
1000 descText = string.Format("%1 %2", descText, msg);
1001
1002 itemName.SetText(descText);
1003 widget.Show(true);
1004 }
1005
1006 protected void SetItemHealth(int health, string itemWidget, string healthWidget, bool enabled)
1007 {
1008 Widget widget = m_Root.FindAnyWidget(itemWidget);
1009
1010 if (enabled)
1011 {
1012 ImageWidget healthMark;
1013 Class.CastTo(healthMark, widget.FindAnyWidget(healthWidget));
1014
1015 if (health == -1)
1016 {
1017 healthMark.GetParent().Show(false);
1018 widget.Show(enabled);
1019 return;
1020 }
1021
1022 int color = 0x00FFFFFF;
1023 if (m_TargetItemFrozen && (health != GameConstants.STATE_RUINED || health == -2))
1024 color = Colors.COLOR_FROZEN;
1025 else
1026 color = ItemManager.GetItemHealthColor(health);
1027
1028 healthMark.SetColor(color);
1029 healthMark.SetAlpha(0.5);
1030 healthMark.GetParent().Show(true);
1031 }
1032
1033 widget.Show(enabled);
1034 }
1035
1036 protected void SetItemQuantity(int type, float current, int min, int max, string itemWidget, string quantityPBWidget, string quantityTextWidget, bool enabled)
1037 {
1038 Widget widget;
1039
1040 widget = m_Root.FindAnyWidget(itemWidget);
1041
1042 if (enabled)
1043 {
1044 ProgressBarWidget progressBar;
1045 TextWidget textWidget;
1046 Class.CastTo(progressBar, widget.FindAnyWidget(quantityPBWidget));
1047 Class.CastTo(textWidget, widget.FindAnyWidget(quantityTextWidget));
1048
1049 //check for volume vs. count and display progressbar or "bubble" with exact count/max text
1050 switch (type)
1051 {
1052 case QUANTITY_HIDDEN :
1053 progressBar.Show(false);
1054 textWidget.Show(false);
1055 textWidget.GetParent().Show(false);
1056 break;
1057 case QUANTITY_COUNT :
1058 if (max > 1 || current > 1)
1059 {
1060 string qty_text = string.Format("%1/%2", Math.Round(current).ToString(), max.ToString());
1061 progressBar.Show(false);
1062 textWidget.SetText(qty_text);
1063 textWidget.Show(true);
1064 textWidget.GetParent().Show(true);
1065 }
1066 else
1067 {
1068 progressBar.Show(false);
1069 textWidget.Show(false);
1070 textWidget.GetParent().Show(false);
1071 }
1072 break;
1073 case QUANTITY_PROGRESS :
1074 float qty_num = Math.Round((current / max) * 100);
1075
1076 textWidget.Show(false);
1077 progressBar.SetCurrent(qty_num);
1078 progressBar.Show(true);
1079 textWidget.GetParent().Show(true);
1080 break;
1081 }
1082 widget.Show(true);
1083 }
1084 else
1085 widget.Show(false);
1086 }
1087
1088 protected void SetActionWidget(ActionBase action, string descText, string actionWidget, string descWidget)
1089 {
1090 Widget widget = m_Root.FindAnyWidget(actionWidget);
1091
1092 if (action)
1093 {
1094 if (action.HasTarget() && m_AM.GetActionState() < 1) // targeted & action not performing
1095 {
1096 TextWidget actionName;
1097 Class.CastTo(actionName, widget.FindAnyWidget(descWidget));
1098
1099 if (action.GetInput().GetInputType() == ActionInputType.AIT_CONTINUOUS && action.CanBeStarted())
1100 {
1101 string text = descText + " " + "#action_target_cursor_hold";
1102 actionName.SetText(text);
1103 }
1104 else
1105 {
1106 actionName.SetText(descText);
1107 }
1108
1109 widget.Show(true);
1110
1111 int x, y;
1112 actionName.GetTextSize(x, y);
1113 if (x > m_MaxWidthChild)
1115
1116 //ShowXboxHidePCIcons(actionWidget,true);
1117
1118 if (!action.CanBeStarted())
1119 {
1120 widget.FindAnyWidget(actionWidget + "_btn_icon_xbox").SetAlpha(0.149);
1121 widget.FindAnyWidget(actionWidget + "_btn_icon").SetAlpha(0.149);
1122 }
1123 else
1124 {
1125 widget.FindAnyWidget(actionWidget + "_btn_icon_xbox").SetAlpha(1.0);
1126 widget.FindAnyWidget(actionWidget + "_btn_icon").SetAlpha(1.0);
1127 }
1128 }
1129 else
1130 {
1131 widget.Show(false);
1132 }
1133 }
1134 else
1135 {
1136 widget.Show(false);
1137 }
1138 }
1139
1141 protected void SetMultipleInteractAction(string multiActionsWidget, string multiActionsWidget_NotSelect)
1142 {
1143 Widget widget, widget_not_select;
1144
1145 widget = m_Root.FindAnyWidget(multiActionsWidget);
1146 widget_not_select = m_Root.FindAnyWidget(multiActionsWidget_NotSelect);
1147
1148 if (m_InteractActionsNum > 1)
1149 {
1151 {
1152 widget.Show(true);
1153 widget_not_select.Show(false);
1154 }
1155 else
1156 {
1157 widget.Show(false);
1158 widget_not_select.Show(true);
1159 }
1160 }
1161 else
1162 {
1163 widget.Show(false);
1164 widget_not_select.Show(false);
1165 }
1166 }
1167
1168 protected void SetMultipleContinuousInteractAction(string multiActionsWidget, string multiActionsWidget_NotSelect)
1169 {
1170 Widget widget, widget_not_select;
1171
1172 widget = m_Root.FindAnyWidget(multiActionsWidget);
1173 widget_not_select = m_Root.FindAnyWidget(multiActionsWidget_NotSelect);
1174
1176 {
1178 {
1179 widget.Show(true);
1180 widget_not_select.Show(false);
1181 }
1182 else
1183 {
1184 widget.Show(false);
1185 widget_not_select.Show(true);
1186 }
1187 }
1188 else
1189 {
1190 widget.Show(false);
1191 widget_not_select.Show(false);
1192 }
1193
1194 }
1195
1196 protected void SetMultipleItemAction(string multiActionsWidget, string multiActionsWidget_NotSelect)
1197 {
1198 Widget widget, widget_not_select;
1199
1200 widget = m_Root.FindAnyWidget(multiActionsWidget);
1201 widget_not_select = m_Root.FindAnyWidget(multiActionsWidget_NotSelect);
1202
1203 if (m_ItemActionsNum > 1)
1204 {
1206 {
1207 widget.Show(true);
1208 widget_not_select.Show(false);
1209 }
1210 else
1211 {
1212 widget.Show(false);
1213 widget_not_select.Show(true);
1214 }
1215 }
1216 else
1217 {
1218 widget.Show(false);
1219 widget_not_select.Show(false);
1220 }
1221 }
1222
1223 protected void SetMultipleContinuousItemAction(string multiActionsWidget, string multiActionsWidget_NotSelect)
1224 {
1225 Widget widget, widget_not_select;
1226
1227 widget = m_Root.FindAnyWidget(multiActionsWidget);
1228 widget_not_select = m_Root.FindAnyWidget(multiActionsWidget_NotSelect);
1229
1231 {
1233 {
1234 widget.Show(true);
1235 widget_not_select.Show(false);
1236 }
1237 else
1238 {
1239 widget.Show(false);
1240 widget_not_select.Show(true);
1241 }
1242 }
1243 else
1244 {
1245 widget.Show(false);
1246 widget_not_select.Show(false);
1247 }
1248 }
1249
1250 protected void SetInteractActionIcon(string actionWidget, string actionIconFrameWidget, string actionIconWidget, string actionIconTextWidget)
1251 {
1252 Widget widget;
1253 ImageWidget iconWidget;
1254 TextWidget textWidget;
1255
1256 widget = m_Root.FindAnyWidget(actionWidget);
1257 Class.CastTo(iconWidget, widget.FindAnyWidget(actionIconWidget));
1258 Class.CastTo(textWidget, widget.FindAnyWidget(actionIconTextWidget));
1259
1260 GetDayZGame().GetBacklit().HintShow(m_UseActionWrapper.InputP());
1261
1262 // uses text in floating widget
1263 iconWidget.Show(false);
1264 textWidget.SetText(InputUtils.GetButtonNameFromInput("UAAction", EInputDeviceType.MOUSE_AND_KEYBOARD));
1265 textWidget.Show(true);
1266 }
1267
1269 {
1270 m_ActiveInfoPanels.Clear();
1271
1272 foreach (int actionType, ActionBase action : m_ActionMap)
1273 {
1274 bool update = action != null && action.IsTargetInfoAction();
1276 if (tmp)
1277 {
1278 foreach (TargetActionInfoPanelBase panel : tmp)
1279 {
1280 if (update)
1281 {
1282 panel.UpdateTargetActionInfoPanel(action.GetClientActionInfo(),m_Target);
1283 m_ActiveInfoPanels.Insert(panel);
1284 }
1285 else if (panel.IsVisible())
1286 {
1287 panel.PerformPanelCleanup();
1288 }
1289 }
1290 }
1291 }
1292 }
1293
1294 protected void InfoPanelCleanup()
1295 {
1296 foreach (TargetActionInfoPanelBase panel : m_ActiveInfoPanels)
1297 {
1298 panel.PerformPanelCleanup();
1299 }
1300 m_ActiveInfoPanels.Clear();
1301 }
1302
1304 {
1305 EntityAI entity = EntityAI.Cast(target.GetObject());
1306 if (!entity)
1307 entity = EntityAI.Cast(target.GetParent());
1308
1309 if (!entity)
1310 return;
1311
1312 Widget w = m_Root.FindAnyWidget("item_flag_icon");
1313 if (w)
1314 w.Show(entity.IsRefresherSignalingViable() && m_Player.IsTargetInActiveRefresherRange(entity));
1315 }
1316
1318 {
1319 int attachmentsWithInventory = 0;
1320
1321 CargoBase cargo = inventory.GetCargo();
1322 if (cargo && cargo.GetItemCount() > 0)
1323 {
1324 return 1;
1325 }
1326
1327 for (int i = 0; i < inventory.AttachmentCount(); i++)
1328 {
1329 EntityAI attachment = inventory.GetAttachmentFromIndex(i);
1330 int attachmentSlotId = attachment.GetInventory().GetSlotId(0);
1331
1332 if (attachment.GetInventory())
1333 {
1334 attachmentsWithInventory += 1;
1335 }
1336 }
1337
1338 return attachmentsWithInventory;
1339 }
1340
1341 protected IngameHud GetHud()
1342 {
1343 Mission mission = g_Game.GetMission();
1344 if (mission)
1345 {
1346 IngameHud hud = IngameHud.Cast(mission.GetHud());
1347 return hud;
1348 }
1349
1350 return null;
1351 }
1352
1353 protected void HideRootWidget()
1354 {
1355 if (m_Root.IsVisible())
1356 {
1357 m_Root.Show(false);
1358 m_FixedOnPosition = false;
1359 GetDayZGame().GetBacklit().HintClear();
1360 }
1361
1362 m_Hidden = false;
1363 m_MaxWidthChild = 350;
1364 }
1365
1366 // deprecated
1367 protected void CheckRefresherFlagVisibility(Object object);
1368 [Obsolete("no replacement")]
1369 void SetInteractXboxIcon(string imageset_name, string image_name);
1370 [Obsolete("no replacement")]
1371 void SetContinuousInteractXboxIcon(string imageset_name, string image_name);
1372 [Obsolete("no replacement")]
1373 void SetSingleXboxIcon(string imageset_name, string image_name);
1374 [Obsolete("no replacement")]
1375 void SetContinuousXboxIcon(string imageset_name, string image_name);
1376 [Obsolete("no replacement")]
1377 protected void SetXboxIcon(string name, string imageset_name, string image_name);
1378}
eBleedingSourceType GetType()
void ActionBase()
Определения ActionBase.c:82
void ContinuousDefaultActionInput(PlayerBase player)
Определения ActionInput.c:630
ActionInputType
Определения ActionInput.c:2
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:125
override bool CanUseConstruction()
Определения BaseBuildingBase.c:2106
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
override bool HasFixedActionTargetCursorPosition()
Определения DayZAnimal.c:120
DayZGame g_Game
Определения DayZGame.c:4074
DayZGame GetDayZGame()
Определения DayZGame.c:4076
Mission mission
Определения DisplayStatus.c:28
Object object
Определения DustKickupEffects.c:18
Icon x
Icon y
InventoryLocationType
types of Inventory Location
Определения InventoryLocation.c:4
proto native UAInputAPI GetUApi()
vector m_CursorWPos
Определения ActionTargetsCursor.c:4
void Store(Object obj, vector pos, int compIdx)
cache object and its world pos
Определения ActionTargetsCursor.c:16
vector GetCursorWorldPos()
Определения ActionTargetsCursor.c:42
Object m_CachedObject
Определения ActionTargetsCursor.c:3
int m_CompIdx
Определения ActionTargetsCursor.c:6
Object Get()
Определения ActionTargetsCursor.c:37
void ATCCachedTarget()
Определения ActionTargetsCursor.c:8
vector m_ScreenPos
Определения ActionTargetsCursor.c:5
void Invalidate()
invalidate cached objec
Определения ActionTargetsCursor.c:27
int GetCursorCompIdx()
Определения ActionTargetsCursor.c:47
void UpdatePCIconsVisibility()
Contains logic for icon set switching (Gamepad/M&K)
Определения ActionTargetsCursor.c:217
void SetItemHealth(int health, string itemWidget, string healthWidget, bool enabled)
Определения ActionTargetsCursor.c:1006
string GetItemDesc(ActionBase action)
Определения ActionTargetsCursor.c:742
void GetActionManager()
Определения ActionTargetsCursor.c:645
void SetItemQuantity(int type, float current, int min, int max, string itemWidget, string quantityPBWidget, string quantityTextWidget, bool enabled)
Определения ActionTargetsCursor.c:1036
void SetItemDesc(string descText, int cargoCount, string itemWidget, string descWidget)
Определения ActionTargetsCursor.c:976
void ActionTargetsCursor()
Определения ActionTargetsCursor.c:107
Widget m_Root
Определения ActionTargetsCursor.c:90
ActionBase m_Interact
Определения ActionTargetsCursor.c:69
void InitActionInfoPanels()
Определения ActionTargetsCursor.c:152
void SetXboxIcon(string name, string imageset_name, string image_name)
void Update(bool fullUpdate=true)
Определения ActionTargetsCursor.c:310
const int ACTION_ORDER_SINGLE
Определения ActionTargetsCursor.c:57
bool IsComponentInSelection(array< Selection > selection, string compName)
Определения ActionTargetsCursor.c:633
float m_PosY
Определения ActionTargetsCursor.c:105
void HideRootWidget()
Определения ActionTargetsCursor.c:1353
void GetItemQuantity(out int q_type, out float q_cur, out int q_min, out int q_max)
Определения ActionTargetsCursor.c:926
const ref array< typename > VISION_OBSTRUCTION_PPEFFECTS_TYPES
Определения ActionTargetsCursor.c:59
void SetInteractXboxIcon(string imageset_name, string image_name)
void SetContinuousXboxIcon(string imageset_name, string image_name)
void GetOnScreenPosition(out float x, out float y)
Определения ActionTargetsCursor.c:428
const int ACTION_ORDER_INTERACT_CONTINUOUS
Определения ActionTargetsCursor.c:56
void SetMultipleItemAction(string multiActionsWidget, string multiActionsWidget_NotSelect)
Определения ActionTargetsCursor.c:1196
m_SelectedActionCategory
Определения ActionTargetsCursor.c:83
void SetMultipleContinuousItemAction(string multiActionsWidget, string multiActionsWidget_NotSelect)
Определения ActionTargetsCursor.c:1223
float m_MaxWidthChild
widget width
Определения ActionTargetsCursor.c:100
void SetQuantityVisibility(bool state)
Определения ActionTargetsCursor.c:141
bool m_TargetItemFrozen
Определения ActionTargetsCursor.c:88
void BuildFixedCursor(bool forceRebuild=true)
Определения ActionTargetsCursor.c:267
void UpdateControllerInputIcons()
Loads icons from the latest keybinds.
Определения ActionTargetsCursor.c:208
int m_ItemActionsNum
Определения ActionTargetsCursor.c:81
void SetHealthVisibility(bool state)
Определения ActionTargetsCursor.c:136
PlayerBase m_Player
Определения ActionTargetsCursor.c:64
void SetContinuousInteractXboxIcon(string imageset_name, string image_name)
ActionTarget m_Target
Определения ActionTargetsCursor.c:65
int GetItemHealth()
Определения ActionTargetsCursor.c:815
IngameHud GetHud()
Определения ActionTargetsCursor.c:1341
void HideWidget()
Определения ActionTargetsCursor.c:300
override bool OnUpdate(Widget w)
Определения ActionTargetsCursor.c:289
bool m_FixedOnPosition
Определения ActionTargetsCursor.c:86
void OnInputPresetChanged()
Определения ActionTargetsCursor.c:195
int m_ContinuousInteractActionsNum
Определения ActionTargetsCursor.c:80
void CreateActionInfoPanel(typename panelType, int actionCategory)
Определения ActionTargetsCursor.c:163
void GetItemCargoCount(out int cargoCount)
returns number of items in cargo for targeted entity
Определения ActionTargetsCursor.c:950
void SetControllerIcon(string pWidgetName, string pInputName)
Определения ActionTargetsCursor.c:146
const int ACTION_ORDER_INTERACT_SINGLE
Определения ActionTargetsCursor.c:55
void CheckRefresherFlagVisibilityEx(ActionTarget target)
Определения ActionTargetsCursor.c:1303
Object m_DisplayInteractTarget
Определения ActionTargetsCursor.c:67
bool m_QuantityEnabled
Определения ActionTargetsCursor.c:85
void SetActionWidget(ActionBase action, string descText, string actionWidget, string descWidget)
Определения ActionTargetsCursor.c:1088
void GetActions()
get actions from Action Manager
Определения ActionTargetsCursor.c:658
void InfoPanelCleanup()
Определения ActionTargetsCursor.c:1294
bool m_HealthEnabled
Определения ActionTargetsCursor.c:84
int m_ContinuousItemActionsNum
Определения ActionTargetsCursor.c:82
ActionBase m_ContinuousInteract
Определения ActionTargetsCursor.c:70
void OnWidgetScriptInit(Widget w)
Определения ActionTargetsCursor.c:178
string GetActionDesc(ActionBase action)
Определения ActionTargetsCursor.c:725
void SetMultipleInteractAction(string multiActionsWidget, string multiActionsWidget_NotSelect)
shows arrows near the interact action if there are more than one available
Определения ActionTargetsCursor.c:1141
void SetInteractActionIcon(string actionWidget, string actionIconFrameWidget, string actionIconWidget, string actionIconTextWidget)
Определения ActionTargetsCursor.c:1250
const int ACTION_ORDER_CONTINUOUS
Определения ActionTargetsCursor.c:58
Widget m_ItemLeft
Определения ActionTargetsCursor.c:92
ref array< ref TargetActionInfoPanelBase > m_ActiveInfoPanels
Определения ActionTargetsCursor.c:95
vector TransformToScreenPos(vector pWorldPos)
transform world pos to screen pos (related to parent widget size)
Определения ActionTargetsCursor.c:411
bool m_Hidden
Определения ActionTargetsCursor.c:87
float m_RootHeight
Определения ActionTargetsCursor.c:102
void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
Определения ActionTargetsCursor.c:202
float m_PosX
Определения ActionTargetsCursor.c:104
void SetSingleXboxIcon(string imageset_name, string image_name)
void UpdateAdditionalActionInfo()
Определения ActionTargetsCursor.c:1268
int AttachmentsWithInventoryOrCargoCount(notnull GameInventory inventory)
Определения ActionTargetsCursor.c:1317
void SetMultipleContinuousInteractAction(string multiActionsWidget, string multiActionsWidget_NotSelect)
Определения ActionTargetsCursor.c:1168
IngameHud m_Hud
Определения ActionTargetsCursor.c:75
ref ATCCachedObject m_CachedObject
Определения ActionTargetsCursor.c:66
ref map< int, ref array< ref TargetActionInfoPanelBase > > m_TargetActionInfoPanelMap
Определения ActionTargetsCursor.c:94
void PrepareCursorContent()
Определения ActionTargetsCursor.c:230
void CheckRefresherFlagVisibility(Object object)
Widget m_Container
Определения ActionTargetsCursor.c:91
ActionBase m_Continuous
Определения ActionTargetsCursor.c:72
ActionBase m_Single
Определения ActionTargetsCursor.c:71
UAIDWrapper m_UseActionWrapper
Определения ActionTargetsCursor.c:77
ActionManagerClient m_AM
Определения ActionTargetsCursor.c:74
void ShowXboxHidePCIcons(string widget, bool show_xbox_icon)
Определения ActionTargetsCursor.c:403
void ~ActionTargetsCursor()
Определения ActionTargetsCursor.c:133
void GetPlayer()
Определения ActionTargetsCursor.c:640
float m_RootWidth
Определения ActionTargetsCursor.c:101
int m_InteractActionsNum
Определения ActionTargetsCursor.c:79
ref map< int, ActionBase > m_ActionMap
Определения ActionTargetsCursor.c:96
bool GetItemFrozen()
Определения ActionTargetsCursor.c:900
void GetTarget()
Определения ActionTargetsCursor.c:704
void BuildFloatingCursor(bool forceRebuild)
Определения ActionTargetsCursor.c:281
proto native int GetItemCount()
represents base for cargo storage for entities
Определения Cargo.c:7
Super root of all classes in Enforce script.
Определения EnScript.c:11
const int COLOR_FROZEN
Определения Colors.c:42
Определения Colors.c:4
override bool IsMan()
Определения 3_Game/DayZ/Entities/Man.c:48
script counterpart to engine's class Inventory
static string GetButtonNameFromInput(string pInputName, int pInputDeviceType)
Определения InputUtils.c:17
static string GetRichtextButtonIconFromInputAction(notnull UAInput pInput, string pLocalizedDescription, int pInputDeviceType=EUAINPUT_DEVICE_CONTROLLER, float pScale=ICON_SCALE_NORMAL, bool pVertical=false)
Определения InputUtils.c:167
Определения InputUtils.c:2
Определения Feet.c:1
proto native int GetType()
returns type of InventoryLocation
InventoryLocation.
Определения InventoryLocation.c:30
override bool IsTakeable()
Определения BaseBuildingBase.c:909
static int GetItemHealthColor(int pHealthLevel)
Определения ItemManager.c:417
Определения ItemManager.c:2
static const string NAME_FIRE
Определения gameplay.c:208
static const string NAME_MEMORY
Определения gameplay.c:209
static const string NAME_VIEW
Определения gameplay.c:207
proto native bool GetSelections(notnull out array< Selection > selections)
LOD class.
Определения gameplay.c:204
Определения EnMath.c:7
Mission class.
Определения gameplay.c:686
Определения ObjectTyped.c:2
static PPEManager GetPPEManager()
Returns the manager instance singleton.
Определения PPEManager.c:27
Static component of PPE manager, used to hold the instance.
Определения PPEManager.c:3
Определения PlayerBaseClient.c:2
static float GetItemQuantity(InventoryItem item)
Определения QuantityConversions.c:72
static int HasItemQuantity(notnull EntityAI item)
Определения QuantityConversions.c:143
Определения gameplay.c:317
Deprecated.
Определения EnWidgets.c:657
Определения CarTent.c:2
Определения EnWidgets.c:220
Определения UAInput.c:25
proto native UAIDWrapper GetPersistentWrapper()
proto native UAInput GetInputByID(int iID)
returns list of all bindable (i.e. visible) inputs from the active group ('core' by default)
Определения EnWidgets.c:190
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto string ToString(bool simple=true)
Определения Transport.c:70
static proto native float DistanceSq(vector v1, vector v2)
Returns the square distance between tips of two 3D vectors.
static const vector Zero
Определения EnConvert.c:123
Определения EnConvert.c:119
const int QUANTITY_PROGRESS
Определения 3_Game/DayZ/constants.c:555
const int QUANTITY_COUNT
Определения 3_Game/DayZ/constants.c:554
const int QUANTITY_HIDDEN
Определения 3_Game/DayZ/constants.c:553
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
void Obsolete(string msg="")
Определения EnScript.c:371
const int STATE_RUINED
Определения 3_Game/DayZ/constants.c:909
static proto float Round(float f)
Returns mathematical round of value.
static proto float AbsFloat(float f)
Returns absolute value.
proto void GetScreenSize(out int x, out int y)
proto native int Length()
Returns length of string.
static proto string ToString(void var, bool type=false, bool name=false, bool quotes=true)
Return string representation of variable.
proto int ToUpper()
Changes string to uppercase. Returns length.
bool Contains(string sample)
Returns true if sample is substring of string.
Определения EnString.c:286
static proto string Format(string fmt, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL)
Gets n-th character from string.
proto native owned string GetName()
Test name getter. Strictly for UI porposes!
Определения SyncedValue.c:119
EInputDeviceType
Определения input.c:3