Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
vicinityslotscontainer.c
Go to the documentation of this file.
2{
4 protected int m_ItemsCount;
5 protected int m_SlotsCount;
7
9 {
11 ref SlotsContainer con = new SlotsContainer( m_Container, null );
12 m_Container.Insert( con );
13 m_Body.Insert( m_Container );
14 for( int j = 0; j < ITEMS_IN_ROW; j++ )
15 {
16 SlotsIcon icon = con.GetSlotIcon( j );
18 WidgetEventHandler.GetInstance().RegisterOnDropReceived( icon.GetGhostSlot(), m_Parent, "OnDropReceivedFromHeader" );
19 WidgetEventHandler.GetInstance().RegisterOnDropReceived( icon.GetMainWidget(), m_Parent, "OnDropReceivedFromHeader" );
20
23 WidgetEventHandler.GetInstance().RegisterOnDraggingOver( icon.GetMainWidget(), m_Parent, "DraggingOverHeader" );
24
28 }
29
30 con.SetColumnCount(0);
31 con.SetForceShow(true);
32
33 WidgetEventHandler.GetInstance().RegisterOnDropReceived( m_Container.GetMainWidget(), m_Parent, "OnDropReceivedFromHeader" );
34 WidgetEventHandler.GetInstance().RegisterOnDraggingOver( m_Container.GetMainWidget(), m_Parent, "DraggingOverHeader" );
35
37 }
38
40 {
42 return ent && ( ent.GetInventory().GetCargo() || (ent.GetSlotsCountCorrect() > 0 && ent.CanDisplayAnyAttachmentSlot()) );
43 //TODO: also check for cargo visibility maybe?
44 }
45
47 {
49 return ent && QuantityConversions.HasItemQuantity( ent ) && ent.CanBeSplit();
50 }
51
52 override bool IsItemActive()
53 {
56 }
57
59 {
61 return ent == null;
62 }
63
64 //TODO MW Adjust this
65 override bool IsDisplayable()
66 {
67 return true;
68 }
69
71 {
73 return ent.IsTakeable();
74 }
75
76 override bool CanCombineAmmo()
77 {
79 ItemBase ent = ItemBase.Cast( GetFocusedItem() );
80 ItemBase item_in_hands = ItemBase.Cast( GetGame().GetPlayer().GetHumanInventory().GetEntityInHands() );
82 Class.CastTo(amc, m_player.GetActionManager());
83
84 return ( amc.CanPerformActionFromInventory( item_in_hands, ent ) || amc.CanSetActionFromInventory( item_in_hands, ent ) );
85 }
86
87 override bool InspectItem()
88 {
90
91 if( ent )
92 {
93 InspectItem( ent );
94 return true;
95 }
96 return false;
97 }
98
99 override bool TransferItem()
100 {
101 if (CanTakeToInventory())
102 {
103 ItemBase ent = ItemBase.Cast(GetFocusedItem());
104 if (ent)
105 {
106 if (ent.IsTakeable())
107 {
109 GetGame().GetPlayer().GetInventory().FindFreeLocationFor( ent, FindInventoryLocationType.CARGO, il );
110 if (il.IsValid() && GetGame().GetPlayer().GetInventory().LocationCanAddEntity( il ))
111 {
112 SplitItemUtils.TakeOrSplitToInventoryLocation( PlayerBase.Cast( GetGame().GetPlayer() ), il );
113 #ifdef PLATFORM_CONSOLE
114 if (GetGame().GetInput().GetCurrentInputDevice() == EInputDeviceType.CONTROLLER)
115 {
116 GetGame().GetCallQueue(CALL_CATEGORY_GUI).CallLater(PrepareOwnedTooltipAfterItemTransfer, 100); //update item tooltip after vicinity item has been transfered and the current selected row gets populated with a new item
117 }
118 #endif
119 return true;
120 }
121 }
122 }
123 }
124 return false;
125 }
126
127 override bool Combine()
128 {
129 ItemBase ent = ItemBase.Cast( GetFocusedItem() );
130
131 ItemBase item_in_hands = ItemBase.Cast( GetGame().GetPlayer().GetHumanInventory().GetEntityInHands() );
132
134
135 if( item_in_hands && ent && hands_icon )
136 {
137 return hands_icon.CombineItems( item_in_hands, ent );
138 }
139 return false;
140 }
141
142 override bool Select()
143 {
145 EntityAI ent = GetFocusedItem();
146 ItemBase selected_item = ItemBase.Cast(ItemManager.GetInstance().GetSelectedItem());
147
148 if( !(selected_slot && selected_slot.IsOutOfReach() ) )
149 {
150 if( selected_item )
151 {
152 if( ent != selected_item)
153 {
154 if( selected_item && GetGame().GetPlayer().CanDropEntity( selected_item ) )
155 {
156 bool draggable = false;
157
158 PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
159 draggable = !player.GetInventory().HasInventoryReservation( selected_item, null ) && !player.IsItemsToDelete();
160 draggable = draggable && selected_item.GetInventory().CanRemoveEntity();
161
162 if( draggable && m_ShowedItems.Find( selected_item ) == -1 )
163 {
164 if( selected_item.GetTargetQuantityMax() < selected_item.GetQuantity() )
165 selected_item.SplitIntoStackMaxClient( null, -1 );
166 else
167 player.PhysicalPredictiveDropItem( selected_item );
168 ItemManager.GetInstance().SetSelectedItemEx(null, null, null);
169 return true;
170 }
171 }
172 }
173 }
174 else
175 {
176 if( ent && ent.GetInventory().CanRemoveEntity())
177 {
178 EntityAI item_in_hands = GetGame().GetPlayer().GetHumanInventory().GetEntityInHands();
179 if( item_in_hands )
180 {
181 if( GameInventory.CanSwapEntitiesEx( item_in_hands, ent ) )
182 {
183 GetGame().GetPlayer().PredictiveSwapEntities( item_in_hands, ent );
184 return true;
185 }
186 }
187 else
188 {
189 if( GetGame().GetPlayer().GetHumanInventory().CanAddEntityInHands( ent ) )
190 {
191 GetGame().GetPlayer().PredictiveTakeEntityToHands( ent );
192 return true;
193 }
194 }
195 }
196 }
197 }
198
199 return false;
200 }
201
203 {
204 for ( int i = 0; i < m_Container.Count(); i++ )
205 {
207 if( c && c.GetMainWidget() )
208 {
209 delete m_Container.Get( i / ITEMS_IN_ROW ).GetMainWidget();
210 }
211 }
212 }
213
214 override void SetLayoutName()
215 {
216 m_LayoutName = WidgetLayoutName.Container;
217 }
218
219 override void OnShow()
220 {
221 super.OnShow();
222 }
223
225 {
226 return GetFocusedContainer().GetColumnCount();
227 }
228
231 {
232 int mask = item.GetHideIconMask();
233 return mask & EInventoryIconVisibility.HIDE_VICINITY;
234 }
235
237 {
238 EntityAI item;
240 SlotsIcon icon;
241 int x;
242 int visible_items_count = 0;
243 int visible_rows = 0;
244 ref array<EntityAI> visible_items = new array<EntityAI>;
245
246 for ( x = 0; x < items.Count(); ++x )
247 {
248 item = items.Get( x );
249
250 if ( item == null || ExcludeFromContainer(item) )
251 continue;
252
253 visible_items.Insert( item );
254 visible_items_count++;
255 }
256
257 RecomputeNumberOfContainers( visible_items );
258
259 for ( x = 0; x < visible_items_count; ++x )
260 {
261 item = visible_items.Get( x );
262 int row = (int)Math.Floor( x / ITEMS_IN_ROW );
263 int column = x % ITEMS_IN_ROW;
264 icon = SlotsContainer.Cast( m_Container.Get( row ) ).GetSlotIcon( column );
265
266 icon.GetMainWidget().Show( true );
267 icon.GetPanelWidget().SetUserID( item.GetID() );
268
269 #ifdef PLATFORM_CONSOLE
270 if (selectedItem == item)
271 {
272 icon.GetMicromanagedPanel().Show(true);
273 }
274 else
275 {
276 icon.GetMicromanagedPanel().Show(false);
277 }
278 #endif
279
280 if ( m_ShowedItems.Find( item ) != x )
281 icon.Init( item );
282 icon.UpdateInterval();
283
285 if ( !draggable && GetDragWidget() == icon.GetPanelWidget() )
286 CancelWidgetDragging();
288
289 ref map<int, ref Container> showed_items = ( VicinityContainer.Cast( m_Parent ) ).m_ShowedItemsIDs;
290
291 Container conta = Container.Cast( showed_items.Get( item.GetID() ) );
292 if ( conta )
293 {
294 conta.SetSlotIcon(icon);
295 }
296
297 if ( conta && conta.IsDisplayable() )
298 {
299 conta.UpdateRadialIcon();
300 }
301 else
302 {
303 icon.GetRadialIconPanel().Show( false );
304 if ( conta )
305 conta.OnHide();
306 }
307 }
308
309 SlotsContainer slots_last = SlotsContainer.Cast( m_Container.Get( visible_items.Count() / ITEMS_IN_ROW ) );
310
311 for ( int c = visible_items_count % ITEMS_IN_ROW; c < ITEMS_IN_ROW; ++c )
312 {
313 icon = slots_last.GetSlotIcon( c );
314 icon.GetMainWidget().Show( false );
315 icon.Clear();
316 }
317
318 //#ifndef PLATFORM_CONSOLE
319 if ( visible_items_count % ITEMS_IN_ROW == 0 )
320 {
321 slots_last = SlotsContainer.Cast( m_Container.Get( m_Container.Count() - 1 ) );
322 slots_last.GetSlotIcon( 0 ).GetMainWidget().Show( true );
323 slots_last.GetSlotIcon( 0 ).GetGhostSlot().Show( false );
324 slots_last.GetMainWidget().Update();
325 }
326 //#endif
327
328 m_ShowedItems = visible_items;
329 }
330
331 void DoubleClick(Widget w, int x, int y, int button)
332 {
333 if( button == MouseState.LEFT && !g_Game.IsLeftCtrlDown())
334 {
335 if( w == null )
336 {
337 return;
338 }
339 ItemPreviewWidget iw = ItemPreviewWidget.Cast( w.FindAnyWidget( "Render" ) );
340 if( !iw )
341 {
342 string name = w.GetName();
343 name.Replace( "PanelWidget", "Render" );
344 iw = ItemPreviewWidget.Cast( w.FindAnyWidget( name ) );
345 }
346
347 if( !iw )
348 {
349 iw = ItemPreviewWidget.Cast( w );
350 }
351
352 ItemBase item = ItemBase.Cast( iw.GetItem() );
353 if( !item )
354 {
355 return;
356 }
357
358 if( !item.IsTakeable() )
359 {
360 return;
361 }
362
363 if( GetGame().GetPlayer().GetInventory().HasInventoryReservation( item, null ) )
364 {
365 return;
366 }
367
368 if( !item.GetInventory().CanRemoveEntity() )
369 return;
370
371 PlayerBase player = PlayerBase.Cast( GetGame().GetPlayer() );
372
373 if ( player.GetInventory().HasEntityInInventory( item ) && GetGame().GetPlayer().GetHumanInventory().CanAddEntityInHands( item ) )
374 {
375 player.PredictiveTakeEntityToHands( item );
376 }
377 else
378 {
380 player.GetInventory().FindFreeLocationFor( item, FindInventoryLocationType.ANY, dst );
381 if( dst.IsValid() && player.GetInventory().LocationCanAddEntity( dst ) )
382 {
383 SplitItemUtils.TakeOrSplitToInventoryLocation( player, dst );
384 }
385 }
386
387 HideOwnedTooltip();
388 GetGame().GetCallQueue(CALL_CATEGORY_GUI).CallLater(PrepareOwnedTooltipAfterItemTransferClick, 300); //update item tooltip after vicinity item has been transfered and the current selected row gets populated with a new item
389
390 InventoryMenu menu = InventoryMenu.Cast( GetGame().GetUIManager().FindMenu( MENU_INVENTORY ) );
391 if( menu )
392 {
393 menu.RefreshQuickbar();
394 }
395 }
396 }
397
399 {
400 string quantity_text = "";
401 if ( item.IsInherited( InventoryItem ) )
402 {
403 ItemBase item_base = ItemBase.Cast( item );
404 float quantity = item_base.GetQuantity();
405 int ammo;
406 if ( item.IsInherited( Magazine ) )
407 {
408 Magazine magazine_item = Magazine.Cast( item );
409 ammo = magazine_item.GetAmmoCount();
410 quantity_text = ammo.ToString();
411 return quantity_text;
412 }
413 else if ( item.IsInherited( ItemBook ) )
414 {
415 return "";
416 }
417 int max = item.GetQuantityMax();
418 //string unit = item.ConfigGetString( "stackedUnit" );
419
420 if ( max > 0 )
421 {
422 if ( max == 1 )
423 {
424 float tmp = Math.Round( ( quantity / max ) * 100 );
425 quantity_text = tmp.ToString() + "%";
426 }
427 else
428 {
429 quantity_text = quantity.ToString();
430 }
431 }
432 }
433 return quantity_text;
434 }
435
437 {
438 if ( item.IsInherited( InventoryItem ) )
439 {
440 ItemBase item_base = ItemBase.Cast( item );
441 if ( item.IsInherited( Magazine ) )
442 {
443 return QUANTITY_COUNT;
444 }
445 else if ( item.IsInherited( ItemBook ) )
446 {
447 return QUANTITY_HIDDEN;
448 }
449 int max = item.GetQuantityMax();
450 bool bar = item.ConfigGetBool( "quantityBar" );
451 if ( max > 0 )
452 {
453 if ( max == 1 || bar )
454 {
455 return QUANTITY_PROGRESS;
456 }
457 else
458 {
459 return QUANTITY_COUNT;
460 }
461 }
462 }
463 return QUANTITY_HIDDEN;
464 }
465
467 {
468 float quantity = 0;
469 if ( item.IsInherited( InventoryItem ) )
470 {
471 ItemBase item_base = ItemBase.Cast( item );
472 if ( item.IsInherited( Magazine ) )
473 {
474 Magazine magazine_item = Magazine.Cast( item );
475 quantity = magazine_item.GetAmmoCount();
476 }
477 else
478 {
479 quantity = item_base.GetQuantity();
480 }
481 }
482 return quantity;
483 }
484
485 // Mouse button DOWN
486 void MouseButtonDown( Widget w, int x, int y, int button)
487 {
488 string name = w.GetName();
489 name.Replace( "PanelWidget", "Render" );
490 ItemPreviewWidget item_preview = ItemPreviewWidget.Cast( w.FindAnyWidget( name ) );
491 ItemBase item = ItemBase.Cast( item_preview.GetItem() );
494 }
495
496 // Mouse button UP <---- exist button down MouseButtonDown ^
497 void MouseClick( Widget w, int x, int y, int button)
498 {
499 string name = w.GetName();
500 name.Replace( "PanelWidget", "Render" );
501 ItemPreviewWidget item_preview = ItemPreviewWidget.Cast( w.FindAnyWidget( name ) );
502 EntityAI item = item_preview.GetItem();
503 InventoryItem itemAtPos = InventoryItem.Cast( item );
504
505 #ifdef DIAG_DEVELOPER
506 if (itemAtPos && GetDayZGame().IsLeftCtrlDown() && button == MouseState.RIGHT)
507 {
508 ShowActionMenu(itemAtPos);
509 }
510 else if (m_Parent)
511 #else
512 if (m_Parent)
513 #endif
514 {
515 ref map<int, ref Container> showed_items = ( VicinityContainer.Cast( m_Parent ) ).m_ShowedItemsIDs;
516
517 if ( item && showed_items )
518 {
519 if (button == MouseState.LEFT)
520 {
522 }
523 if (button == MouseState.RIGHT)
524 {
525 if (itemAtPos)
526 {
527 itemAtPos.OnRightClick();
528 }
529 }
530 else if (button == MouseState.MIDDLE)
531 {
532 InspectItem(itemAtPos);
533 return;
534 }
535 }
536 }
537 }
538
539 override void OnDropReceivedFromHeader( Widget w, int x, int y, Widget receiver )
540 {
541 ItemPreviewWidget ipw = ItemPreviewWidget.Cast( w.FindAnyWidget("Render") );
542 if( !ipw )
543 {
544 string name = w.GetName();
545 name.Replace( "PanelWidget", "Render" );
546 ipw = ItemPreviewWidget.Cast( w.FindAnyWidget( name ) );
547 }
548 if( !ipw )
549 {
550 ipw = ItemPreviewWidget.Cast( w );
551 }
552
553 if( !ipw.IsInherited( ItemPreviewWidget ) )
554 {
555 return;
556 }
557
558 PlayerBase player = PlayerBase.Cast( GetGame().GetPlayer() );
559 ItemBase item = ItemBase.Cast(ipw.GetItem());
560
561 if( item )
562 {
563 if( !item.GetInventory().CanRemoveEntity() )
564 return;
565
566 if( player.CanDropEntity( item ) )
567 {
568 if( item.GetTargetQuantityMax() < item.GetQuantity() )
569 item.SplitIntoStackMaxClient( null, -1 );
570 else
571 player.PhysicalPredictiveDropItem( item );
572 }
573 }
574 }
575
577 {
578 int number_of_containers = m_Container.m_Body.Count();
579 int number_of_containers_needed = ( items.Count() / ITEMS_IN_ROW ) + 1;
580 int difference = number_of_containers_needed - number_of_containers;
581 int g;
582
583 for (g = number_of_containers; g < number_of_containers_needed; g++)
584 {
585 SlotsContainer con = new SlotsContainer( m_Container, null );
586 m_Container.Insert(con, -1, false);
587 for (int j = 0; j < ITEMS_IN_ROW; j++)
588 {
589 SlotsIcon icon = con.GetSlotIcon(j);
591 WidgetEventHandler.GetInstance().RegisterOnDropReceived(icon.GetGhostSlot(), m_Parent, "OnDropReceivedFromHeader");
592 WidgetEventHandler.GetInstance().RegisterOnDropReceived(icon.GetMainWidget(), m_Parent, "OnDropReceivedFromHeader");
593
596 WidgetEventHandler.GetInstance().RegisterOnDraggingOver(icon.GetMainWidget(), m_Parent, "DraggingOverHeader");
597
601 }
602
603 con.SetColumnCount(items.Count() % ITEMS_IN_ROW);
604 }
605
606 for (g = number_of_containers - 1 ; g >= number_of_containers_needed ; g--)
607 {
608 Widget w = m_Container.m_Body.Get(g).GetMainWidget();
609 delete w;
610 m_Container.m_Body.Remove(g);
611 }
612
613 if ( (items.Count() % ITEMS_IN_ROW) == 0 )
614 {
615 SlotsContainer.Cast( m_Container.Get( number_of_containers_needed - 1 ) ).SetColumnCount( ITEMS_IN_ROW );
616 }
617 else
618 {
619 SlotsContainer.Cast( m_Container.Get( number_of_containers_needed - 1 ) ).SetColumnCount( items.Count() % ITEMS_IN_ROW );
620 }
621
622 for ( int i = 0; i < number_of_containers_needed - 1; i++ )
623 {
624 SlotsContainer.Cast( m_Container.Get( i ) ).SetColumnCount( ITEMS_IN_ROW );
625 }
626
627 RecomputeOpenedContainers();
628 m_Container.RecomputeOpenedContainers();
629 }
630
632 {
633 if (m_IsActive)
634 {
635 float x, y;
636 SlotsIcon icon = GetFocusedSlotsIcon();
637 if (icon)
638 {
639 icon.GetSelectedPanel().GetScreenPos(x, y);
640 EntityAI focusedItem = GetFocusedItem();
641 if (focusedItem)
642 {
643 #ifdef PLATFORM_CONSOLE
644 PrepareOwnedTooltip(focusedItem, -1, y); //custom positioning for the controller
645 #else
646 PrepareOwnedTooltip(focusedItem);
647 #endif
648 }
649 }
650 }
651 }
652
654 {
655 Widget w = GetWidgetUnderCursor();
656 if (!w)
657 {
658 return;
659 }
660
661 ItemPreviewWidget iw = ItemPreviewWidget.Cast(w.FindAnyWidget("Render"));
662 if (!iw)
663 {
664 string name = w.GetName();
665 name.Replace("PanelWidget", "Render");
666 iw = ItemPreviewWidget.Cast( w.FindAnyWidget(name));
667 }
668
669 if (!iw)
670 {
671 iw = ItemPreviewWidget.Cast(w);
672 if (!iw)
673 {
674 return;
675 }
676 }
677
678 ItemBase item = ItemBase.Cast(iw.GetItem());
679 if (!item)
680 {
681 return;
682 }
683
684 PrepareOwnedTooltip(item);
685 }
686}
Param3 int
const int ITEMS_IN_ROW
Definition attachments.c:1
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
bool CanPerformActionFromInventory(ItemBase mainItem, ItemBase targetItem)
bool CanSetActionFromInventory(ItemBase mainItem, ItemBase targetItem)
Super root of all classes in Enforce script.
Definition enscript.c:11
override EntityAI GetFocusedItem()
override void UpdateRadialIcon()
override bool IsDisplayable()
override int GetHideIconMask()
Definition transport.c:234
script counterpart to engine's class Inventory
Definition inventory.c:79
static bool CanSwapEntitiesEx(notnull EntityAI item1, notnull EntityAI item2)
Definition inventory.c:628
Definition icon.c:2
bool CombineItems(EntityAI entity1, EntityAI entity2)
Definition icon.c:731
override void OnRightClick()
Definition itembase.c:2098
InventoryLocation.
override bool IsTakeable()
void SetSelectedItemEx(EntityAI selected_item, Container selected_container, LayoutHolder selected_icon)
HandsPreview GetHandsPreview()
Definition itemmanager.c:75
bool EvaluateContainerDragabilityDefault(EntityAI entity)
SlotsIcon GetSelectedIcon()
EntityAI GetSelectedItem()
Definition itemmanager.c:85
void SetWidgetDraggable(Widget w, bool draggable)
static ItemManager GetInstance()
Definition enmath.c:7
SlotsIcon GetSlotIcon(int index)
Widget GetSelectedPanel()
Definition slotsicon.c:245
Widget GetPanelWidget()
Definition slotsicon.c:205
Widget GetMicromanagedPanel()
Definition slotsicon.c:255
void Init(EntityAI obj, bool reservation=false)
Definition slotsicon.c:501
bool IsOutOfReach()
Definition slotsicon.c:729
void Clear()
Definition slotsicon.c:612
override void UpdateInterval()
Definition slotsicon.c:791
Widget GetRadialIconPanel()
Definition slotsicon.c:300
ImageWidget GetGhostSlot()
Definition slotsicon.c:235
void ToggleContainer(Widget w, EntityAI item)
bool ExcludeFromContainer(EntityAI item)
Decides on the icon visibility.
int HasItemQuantity(EntityAI item)
void ShowItemsInContainers(array< EntityAI > items)
float GetItemQuantity(InventoryItem item)
string GetItemQuantityText(EntityAI item)
override void OnDropReceivedFromHeader(Widget w, int x, int y, Widget receiver)
override bool IsItemWithQuantityActive()
void VicinitySlotsContainer(LayoutHolder parent)
void DoubleClick(Widget w, int x, int y, int button)
void MouseButtonDown(Widget w, int x, int y, int button)
ref array< EntityAI > m_ShowedItems
void RecomputeNumberOfContainers(array< EntityAI > items)
void MouseClick(Widget w, int x, int y, int button)
ref AttachmentsGroupContainer m_Container
void RegisterOnDropReceived(Widget w, Managed eventHandler, string functionName)
void RegisterOnDraggingOver(Widget w, Managed eventHandler, string functionName)
static WidgetEventHandler GetInstance()
void RegisterOnMouseButtonDown(Widget w, Managed eventHandler, string functionName)
void RegisterOnMouseButtonUp(Widget w, Managed eventHandler, string functionName)
void RegisterOnDoubleClick(Widget w, Managed eventHandler, string functionName)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DayZGame g_Game
Definition dayzgame.c:3868
DayZGame GetDayZGame()
Definition dayzgame.c:3870
proto native CGame GetGame()
const int QUANTITY_PROGRESS
Definition constants.c:518
const int QUANTITY_COUNT
Definition constants.c:517
const int QUANTITY_HIDDEN
Definition constants.c:516
const int MENU_INVENTORY
Definition constants.c:180
MouseState
Definition ensystem.c:311
const int CALL_CATEGORY_GUI
Definition tools.c:9
Icon x
Icon y
EInputDeviceType
Definition input.c:3
FindInventoryLocationType
flags for searching locations in inventory
void InventoryMenu()
bool m_IsActive
PlayerBase GetPlayer()
DayZPlayer m_player
Widget m_Parent
Definition sizetochild.c:92