Dayz Explorer 1.29.162510
Loading...
Searching...
No Matches
vicinitycontainer.c
Go to the documentation of this file.
2{
3 ref VicinitySlotsContainer m_VicinityIconsContainer;
5 ref map<int, ref Container> m_ShowedItemsIDs = new map<int, ref Container>;
6 ref array<EntityAI> m_ShowedItemIcons = new array<EntityAI>;
8 protected bool m_IsProcessing = false; // Prevents refreshing every time a child is added while it is still processing
9
10 #ifndef PLATFORM_CONSOLE
11 protected ScrollWidget m_CargoScrollWidget;
12 #endif
13
14 const float DISTANCE_TO_ENTITIES = 1.0;
15 const float DISTANCE_TO_THE_REST = 0.5;
16
17 const int ITEMS_PER_COLUMN_MAX = 8;
21
22 void VicinityContainer( LayoutHolder parent, int sort = -1 )
23 {
24 m_VicinityIconsContainer = new VicinitySlotsContainer( this );
25 m_Body.Insert( m_VicinityIconsContainer );
26 m_VicinityIconsContainer.GetRootWidget().SetColor(166 << 24 | 120 << 16 | 120 << 8 | 120);
27
28 #ifndef PLATFORM_CONSOLE
29 LeftArea leftArea = LeftArea.Cast(GetParent());
30 if (leftArea)
31 {
34 {
35 bool hasScrollerExactSize = m_CargoScrollWidget.GetFlags() & WidgetFlags.EXACTSIZE;
36 if (!hasScrollerExactSize)
37 {
38 m_CargoScrollWidget.SetFlags(WidgetFlags.IGNOREPOINTER);
39 }
40 }
41
42 leftArea.GetSlotsHeader().AddChild(GetHeader().GetRootWidget());
43 leftArea.GetSlotsArea().AddChild(m_VicinityIconsContainer.GetRootWidget());
44 }
45 #endif
46
47 m_MainWidget = m_RootWidget.FindAnyWidget( "body" );
48 WidgetEventHandler.GetInstance().RegisterOnChildAdd( m_MainWidget, this, "OnChildAdd" );
49 WidgetEventHandler.GetInstance().RegisterOnChildRemove( m_MainWidget, this, "OnChildRemove" );
50
51 RecomputeOpenedContainers();
52 m_CollapsibleHeader.SetName("#container_vicinity");
54 }
55
57 {
58 return m_VicinityIconsContainer.IsActive();
59 }
60
62 {
63 return m_VicinityIconsContainer;
64 }
65
67 {
68 return ( ContainerWithCargo.Cast( GetFocusedContainer() ) != null );
69 }
70
72 {
73 return ( ContainerWithCargoAndAttachments.Cast( GetFocusedContainer() ) != null );
74 }
75
77 {
78 return ( AttachmentCategoriesContainer.Cast( GetFocusedContainer() ) != null );
79 }
80
82 {
83 map<string, bool> serialized_types = new map<string, bool>();
84 for ( int i = 0; i < m_ShowedItems.Count(); i++ )
85 {
86 EntityAI entity = m_ShowedItems.GetKey( i );
87 Container container = m_ShowedItems.GetElement( i );
88 string type = entity.GetType();
89 if ( container.IsInherited( ContainerWithCargo ) )
90 {
91 if ( !serialized_types.Contains( type ) )
92 {
93 ContainerWithCargo item_with_cargo = ContainerWithCargo.Cast( container );
94 serialized_types.Insert( type, item_with_cargo.IsOpened() );
95 }
96 }
97 }
98
99 if ( serialized_types.Count() > 0 )
100 {
101 FileSerializer file = new FileSerializer();
102 if ( file.Open( "inventory_state.save", FileMode.APPEND ) )
103 {
104 file.Write( serialized_types.Count() );
105
106 for ( i = 0; i < serialized_types.Count(); i++ )
107 {
108 file.Write( serialized_types.GetKey( i ) );
109 file.Write( serialized_types.GetElement( i ) );
110 }
111 }
112 file.Close();
113 }
114 }
115
116 override void DraggingOverHeader( Widget w, int x, int y, Widget receiver )
117 {
118 if ( w == null )
119 {
120 return;
121 }
122
123 ItemPreviewWidget ipw = ItemPreviewWidget.Cast( w.FindAnyWidget( "Render" ) );
124 if ( !ipw )
125 {
126 string name = w.GetName();
127 name.Replace( "PanelWidget", "Render" );
128 ipw = ItemPreviewWidget.Cast( w.FindAnyWidget( name ) );
129 }
130
131 if ( !ipw && ItemPreviewWidget.Cast( w ) )
132 {
133 ipw = ItemPreviewWidget.Cast( w );
134 }
135
136 if ( !ipw || !ipw.GetItem() )
137 {
138 return;
139 }
140
141 if ( ipw.GetItem() && g_Game.GetPlayer().CanDropEntity( ipw.GetItem() ) && ipw.GetItem().GetInventory().CanRemoveEntity() && m_ShowedItemIcons.Find( ipw.GetItem() ) == -1 )
142 {
143 ColorManager.GetInstance().SetColor( w, ColorManager.GREEN_COLOR );
145 ItemManager.GetInstance().GetLeftDropzone().SetAlpha( 1 );
146
147 #ifndef PLATFORM_CONSOLE
148 bool ignorePointer = ItemManager.GetInstance().GetLeftSlotsScroller().GetFlags() & WidgetFlags.IGNOREPOINTER;
149 if (!ignorePointer)
150 {
151 ItemManager.GetInstance().GetLeftSlotsScroller().SetFlags(WidgetFlags.IGNOREPOINTER);
152 }
153 #endif
154 }
155 else
156 {
157 ColorManager.GetInstance().SetColor( w, ColorManager.RED_COLOR );
158 ItemManager.GetInstance().ShowSourceDropzone( ipw.GetItem() );
159 }
160 }
161
162 void DraggingOverIcon( Widget w, int x, int y, Widget receiver )
163 {
164 string name = receiver.GetName();
165 name.Replace("PanelWidget", "Render");
166 ItemPreviewWidget receiver_iw = ItemPreviewWidget.Cast( receiver.FindAnyWidget(name) );
167 EntityAI receiver_item = receiver_iw.GetItem();
168
169 ItemPreviewWidget ipw = ItemPreviewWidget.Cast( w.FindAnyWidget( "Render" ) );
170 if ( !ipw )
171 {
172 name = w.GetName();
173 name.Replace( "PanelWidget", "Render" );
174 ipw = ItemPreviewWidget.Cast( w.FindAnyWidget( name ) );
175 }
176
177 if ( !ipw && ItemPreviewWidget.Cast( w ) )
178 {
179 ipw = ItemPreviewWidget.Cast( w );
180 }
181
182 if (!ipw)
183 {
184 return;
185 }
186
187 if ( !ItemBase.Cast( receiver_item ) || !ipw.GetItem() )
188 {
189 return;
190 }
191
192 if ( ipw.GetItem().GetInventory().CanRemoveEntity() || m_ShowedItemIcons.Find( ipw.GetItem() ) > -1 )
193 {
194 if ( ( ItemBase.Cast( receiver_item ) ).CanBeCombined( ItemBase.Cast( ipw.GetItem() ) ) )
195 {
196 ColorManager.GetInstance().SetColor( w, ColorManager.COMBINE_COLOR );
198 ItemManager.GetInstance().GetLeftDropzone().SetAlpha( 1 );
199 return;
200 }
201 else if ( GameInventory.CanSwapEntitiesEx( receiver_item, ipw.GetItem() ) )
202 {
203 ColorManager.GetInstance().SetColor( w, ColorManager.SWAP_COLOR );
205 ItemManager.GetInstance().GetLeftDropzone().SetAlpha( 1 );
206 return;
207 }
208 /*else if( g_Game.GetPlayer().CanDropEntity( ipw.GetItem() ) )
209 {
210 ColorManager.GetInstance().SetColor( w, ColorManager.GREEN_COLOR );
211 ItemManager.GetInstance().HideDropzones();
212 ItemManager.GetInstance().GetLeftDropzone().SetAlpha( 1 );
213 return;
214 }*/
215 }
216
217 ColorManager.GetInstance().SetColor( w, ColorManager.RED_COLOR );
218 ItemManager.GetInstance().ShowSourceDropzone( ipw.GetItem() );
219 }
220
221 void OnDropReceivedFromIcon( Widget w, int x, int y, Widget receiver )
222 {
223 string name = receiver.GetName();
224 name.Replace("PanelWidget", "Render");
225 ItemPreviewWidget receiver_iw = ItemPreviewWidget.Cast( receiver.FindAnyWidget(name) );
226 EntityAI receiver_item = receiver_iw.GetItem();
227
228 ItemPreviewWidget ipw = ItemPreviewWidget.Cast( w.FindAnyWidget( "Render" ) );
229 if ( !ipw )
230 {
231 name = w.GetName();
232 name.Replace( "PanelWidget", "Render" );
233 ipw = ItemPreviewWidget.Cast( w.FindAnyWidget( name ) );
234 }
235
236 if ( !ItemBase.Cast( receiver_item ) || !ipw.GetItem() )
237 {
238 return;
239 }
240
241 EntityAI item = ipw.GetItem();
242 bool equal_typed = item.GetType() == receiver_item.GetType();
243 if ( !receiver_item.IsInherited( ItemBase ) || item == null )
244 {
245 return;
246 }
247
248 PlayerBase player = PlayerBase.Cast( g_Game.GetPlayer() );
249
250 if ( !item.GetInventory().CanRemoveEntity() )
251 return;
252
253 if ( ( ItemBase.Cast( receiver_item ) ).CanBeCombined( ItemBase.Cast( item ) ) )
254 {
255 ( ItemBase.Cast( receiver_item ) ).CombineItemsClient( ItemBase.Cast( item ) );
256 }
257 else if( GameInventory.CanSwapEntitiesEx( receiver_item, item ) )
258 {
261 receiver_item.GetInventory().GetCurrentInventoryLocation( il1 );
262 item.GetInventory().GetCurrentInventoryLocation( il2 );
263
264 if( !receiver_item.GetInventory().CanRemoveEntity() || ( il1.GetType() == InventoryLocationType.GROUND && il2.GetType() == InventoryLocationType.GROUND ) )
265 return;
266 player.PredictiveSwapEntities( item, receiver_item );
267 }
268
271 PrepareOwnedTooltip(item);
272
273 InventoryMenu menu = InventoryMenu.Cast( g_Game.GetUIManager().FindMenu( MENU_INVENTORY ) );
274 if ( menu )
275 {
276 menu.RefreshQuickbar();
277 }
278 }
279
280 void OnLeftPanelDropReceived( Widget w, int x, int y, Widget receiver )
281 {
282 OnDropReceivedFromHeader( w, x, y, receiver );
283 }
284
285 void OnDropReceivedFromEmptySpace( Widget w, int x, int y, Widget receiver )
286 {
287 OnDropReceivedFromHeader( w, x, y, receiver );
288 }
289
290 override void OnDropReceivedFromHeader(Widget w, int x, int y, Widget receiver)
291 {
292 if (!w)
293 return;
294
297
298 ItemPreviewWidget ipw = ItemPreviewWidget.Cast(w.FindAnyWidget("Render"));
299
300 if (!ipw)
301 {
302 string name = w.GetName();
303 name.Replace("PanelWidget", "Render");
304 ipw = ItemPreviewWidget.Cast(w.FindAnyWidget(name));
305 }
306
307 if (!ipw)
308 {
309 ipw = ItemPreviewWidget.Cast(w);
310 if (!ipw)
311 return;
312 }
313
314 EntityAI item = ipw.GetItem();
315 if (!ipw.IsInherited(ItemPreviewWidget) || !item)
316 return;
317
318 if (!item.GetInventory().CanRemoveEntity() || m_ShowedItemIcons.Find(item) > -1)
319 return;
320
321 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
322 if (player.CanDropEntity(item))
323 {
324 ItemBase itemBase = ItemBase.Cast(item);
325 if (itemBase)
326 {
327 if (itemBase.GetTargetQuantityMax() < itemBase.GetQuantity())
328 itemBase.SplitIntoStackMaxClient(null, -1);
329 else
330 player.PhysicalPredictiveDropItem(itemBase);
331 }
332 }
333
334 InventoryMenu menu = InventoryMenu.Cast( g_Game.GetUIManager().FindMenu( MENU_INVENTORY ) );
335 if ( menu )
336 {
337 menu.RefreshQuickbar();
338 }
339 }
340
341 override void UpdateInterval()
342 {
343 PlayerBase player = PlayerBase.Cast( g_Game.GetPlayer() );
344
345 if (!player)
346 return;
347
348 super.UpdateInterval();
349
350 EntityAI eai;
351 vector pos = player.GetPosition();
352 array<EntityAI> objects;
353
354 VicinityItemManager.GetInstance().Update( player.GetDeltaT() );
355 objects = VicinityItemManager.GetInstance().GetVicinityItems();
356
357 //GetItemsShowableInInventory
358 array<EntityAI> showable_items = new array<EntityAI>;
359 bool isUsedMicromanagment = false;
361 int m_OldShowedItemIconsCount = m_ShowedItemIcons.Count();
362
363 if (selectesItem && ItemManager.GetInstance().IsMicromanagmentMode())
364 {
365 if (m_ShowedItemIcons.Find(selectesItem) != -1)
366 {
367 isUsedMicromanagment = true;
368 }
369 }
370 m_ShowedItemIcons.Clear();
371
372 GameInventory game_inventory = player.GetInventory();
373 for ( int i = 0; i < objects.Count(); i++ )
374 {
375 eai = objects.Get( i );
376 if ( eai == null || game_inventory.IsPlaceholderEntity( eai ) )
377 continue; // noproxy: ignore body placeholder
378
379 BaseBuildingBase base_building = BaseBuildingBase.Cast(eai);
380 if (base_building && !base_building.IsPlayerInside(player,""))
381 continue;
382
383 if (eai.IsInventoryVisible())
384 {
385 showable_items.Insert(eai);
386
387 if (!eai.DisableVicinityIcon())
388 {
389 m_ShowedItemIcons.Insert(eai);
390 }
391 }
392 }
393
394 if (isUsedMicromanagment && m_ShowedItemIcons.Find(selectesItem) == -1 )
395 {
396 //ItemManager.GetInstance().SetItemMicromanagmentMode(false);
397 ItemManager.GetInstance().SetSelectedItemEx(null, null, null);
398 isUsedMicromanagment = false;
399 }
400
401 //MW HOTFIX - old containers must be removed before new one are added (part of initialize are refreshed whole structure - need proper fix to avoid it)
403 Container con;
404
405 for ( i = 0; i < showable_items.Count(); i++ )
406 {
407 new_showed_items.Insert(showable_items[i],null);
408 }
409
410
411 bool need_update_focus = false;
412 for ( i = 0; i < m_ShowedItems.Count(); i++ )
413 {
414 EntityAI ent = m_ShowedItems.GetKey( i );
415 m_ShowedItems.GetElement( i ).UpdateInterval();
416 con = m_ShowedItems.GetElement( i );
417 if ( !new_showed_items.Contains( ent ) )
418 {
419 if ( selectesItem && selectesItem.GetHierarchyRoot() == ent)
420 {
421 //ItemManager.GetInstance().SetItemMicromanagmentMode(false);
422 ItemManager.GetInstance().SetSelectedItemEx(null, null, null);
423 }
424 GetMainWidget().Update();
425 if ( con.IsActive() )
426 need_update_focus = true;
427 Container.Cast( GetParent() ).Remove( con );
428 Remove( con );
429 }
430 else
431 {
432 UpdateHeader(ent,con,player); //squeezed here, the map is iterated over enough already..
433 }
434 }
436
437 bool accessInventory = PlayerBase.DEBUG_INVENTORY_ACCESS;
438 accessInventory |= FreeDebugCamera.GetInstance() && FreeDebugCamera.GetInstance().IsActive();
439
440
441 //map<EntityAI, ref Container> new_showed_items = new map<EntityAI, ref Container>;
442 new_showed_items.Clear();
444 for ( i = 0; i < showable_items.Count(); i++ )
445 {
446 EntityAI entity = showable_items.Get( i );
447 if ( entity )
448 {
449 if ( game_inventory && !m_ShowedItems.Contains( entity ) )
450 {
451 string config = "CfgVehicles " + entity.GetType() + " GUIInventoryAttachmentsProps";
452
453 if ( g_Game.ConfigIsExisting( config ) )
454 {
456 ac.SetEntity( entity );
457 new_showed_items.Insert( entity, ac );
458 showed_items_IDs.Insert( entity.GetID(), ac);
459 }
460 else if ( entity.GetSlotsCountCorrect() > 0 && entity.GetInventory().GetCargo() )
461 {
462 if ( entity.IsInherited( DayZInfected ) )
463 {
464 if ( entity.IsAlive() )
465 {
466 continue;
467 }
468 ZombieContainer zmb_cnt = new ZombieContainer( m_Parent, -1 );
469 zmb_cnt.SetEntity( entity );
470 new_showed_items.Insert( entity, zmb_cnt );
471 showed_items_IDs.Insert( entity.GetID(), zmb_cnt );
472 Container.Cast( GetParent() ).Insert( zmb_cnt );
473 }
474 else
475 {
476 ContainerWithCargoAndAttachments iwca = new ContainerWithCargoAndAttachments( this, -1 );
477 iwca.SetEntity( entity, false );
478 new_showed_items.Insert( entity, iwca );
479 showed_items_IDs.Insert( entity.GetID(), iwca );
480 }
481 }
482 else if ( entity.GetInventory().GetCargo() )
483 {
484 ContainerWithCargo iwc = new ContainerWithCargo( this, -1 );
485 iwc.SetEntity( entity, 0, false );
486 new_showed_items.Insert( entity, iwc );
487 showed_items_IDs.Insert( entity.GetID(), iwc );
488 iwc.UpdateInterval();
489 }
490 else if ( entity.GetSlotsCountCorrect() > 0 )
491 {
492 if ( entity.HasEnergyManager() )
493 {
495 iwem.SetEntity( entity, false );
496 new_showed_items.Insert( entity, iwem );
497 showed_items_IDs.Insert( entity.GetID(), iwem );
498 }
499 else
500 {
501 if ( entity.IsInherited( PlayerBase ) )
502 {
504 if (accessInventory == false)
505 {
506 if ( entity.IsAlive() && ( !PlayerBase.Cast( entity ).IsUnconscious() && !PlayerBase.Cast( entity ).IsRestrained() ) )
507 {
508 continue;
509 }
510 }
511
512 PlayerContainer plyr_cnt = new PlayerContainer( m_Parent, false );
513 plyr_cnt.SetPlayer( PlayerBase.Cast( entity ) );
514 Container.Cast( GetParent() ).Insert( plyr_cnt );
515 ( Container.Cast( m_Parent ) ).Refresh();
516 new_showed_items.Insert( entity, plyr_cnt );
517 showed_items_IDs.Insert( entity.GetID(), plyr_cnt);
518 }
519 else
520 {
521 ContainerWithCargoAndAttachments iwcas = new ContainerWithCargoAndAttachments( this, -1 );
522 iwcas.SetEntity( entity, false );
523 new_showed_items.Insert( entity, iwcas );
524 showed_items_IDs.Insert( entity.GetID(), iwcas );
525 iwcas.UpdateInterval();
526 }
527 }
528 }
529 }
530 else
531 {
532 //TODO MW: remove old containers on one spot (hotfix)
533 con = m_ShowedItems.Get( entity );
534 if ( con )
535 {
536 if ( entity.IsInherited( PlayerBase ) )
537 {
539 if ( !accessInventory && entity.IsAlive() && ( !PlayerBase.Cast( entity ).IsUnconscious() && !PlayerBase.Cast( entity ).IsRestrained() ) )
540 {
541 GetMainWidget().Update();
542 if ( con.IsActive() )
543 need_update_focus = true;
544 Container.Cast( GetParent() ).Remove( con );
545 Remove( con );
546 continue;
547 }
548 }
549
550 if ( entity.IsInherited( BaseBuildingBase ) )
551 {
552 if ( !BaseBuildingBase.Cast(entity).IsPlayerInside(player,""))
553 {
554 GetMainWidget().Update();
555 if ( con.IsActive() )
556 need_update_focus = true;
557 Container.Cast( GetParent() ).Remove( con );
558 Remove( con );
559 continue;
560 }
561 }
562
563 new_showed_items.Insert( entity, m_ShowedItems.Get( entity ) );
564 showed_items_IDs.Insert( entity.GetID(), m_ShowedItemsIDs.Get( entity.GetID() ) );
565 }
566 }
567 }
568 }
569
571 auto cargoes = VicinityItemManager.GetInstance().GetVicinityCargos();
572 for ( i = 0; i < cargoes.Count(); i++ )
573 {
574 CargoBase cgo = cargoes.Get( i );
575 if ( cgo )
576 {
577 if (game_inventory && !m_ShowedCargos.Contains( cgo ) )
578 {
579 ContainerWithCargo pxc = new ContainerWithCargo( this, -1 );
580 pxc.SetEntity( cgo.GetCargoOwner(), cgo.GetOwnerCargoIndex(), false );
581 new_showed_cargos.Insert( cgo, pxc );
582 pxc.UpdateInterval();
583 }
584 else
585 {
586 if ( m_ShowedCargos.Get( cgo ) )
587 {
588 new_showed_cargos.Insert( cgo, m_ShowedCargos.Get( cgo ) );
589 }
590 }
591 }
592 }
593
594 for ( int ic = 0; ic < m_ShowedCargos.Count(); ic++ )
595 {
596 CargoBase cgo2 = m_ShowedCargos.GetKey( ic );
597 m_ShowedCargos.GetElement( ic ).UpdateInterval();
598 if ( !new_showed_cargos.Contains( cgo2 ) )
599 {
600 Container con2 = m_ShowedCargos.GetElement( ic );
601 if( con2.IsActive() )
602 need_update_focus = true;
603 GetMainWidget().Update();
604 Container.Cast( GetParent() ).Remove( con2 );
605 Remove( con2 );
606 }
607 }
608
609 m_ShowedItems = new_showed_items;
610 m_ShowedItemsIDs = showed_items_IDs;
611 m_ShowedCargos = new_showed_cargos;
612 //Because WTF (zombie container)
613 Container.Cast( GetParent() ).RecomputeOpenedContainers();
614 if (need_update_focus)
615 SetFirstActive();
616 //RecomputeOpenedContainers();
618 m_VicinityIconsContainer.ShowItemsInContainers( m_ShowedItemIcons );
619
620 if ( m_ShowedItemIcons.Count() != m_OldShowedItemIconsCount )
621 {
622 Inventory in = Inventory.Cast( GetRoot() );
623 if ( in )
624 in.UpdateConsoleToolbar();
625 }
626
627 #ifndef PLATFORM_CONSOLE
630 {
631 float width, height;
632 m_CargoScrollWidget.GetSize(width, height);
633 if (showable_items.Count() >= ITEMS_PER_COLUMN_MAX * 2)
634 {
636 }
637 else if (showable_items.Count() >= ITEMS_PER_COLUMN_MAX)
638 {
640 }
641 else
642 {
644 }
645 }
646 #endif
647 }
648
649 void ToggleContainer( Widget w, EntityAI item )
650 {
651 SlotsIcon slots_icon;
652 Container c;
653 w.GetUserData(slots_icon);
654
655 if ( item )
656 {
657 c = Container.Cast( m_ShowedItems.Get( item ) );
658 }
659
660 if (c)
661 {
663 }
664 }
665
666 override bool CanOpenCloseContainerEx(EntityAI focusedEntity)
667 {
668 if (focusedEntity)
669 {
670 ClosableContainer c = ClosableContainer.Cast( m_ShowedItems.Get( focusedEntity ) );
671 if (c && c.IsDisplayable())
672 {
673 return true;
674 }
675 }
676 return false;
677 }
678
679 //Call from ExpandCollapseContainer - not call
680 void ToggleContainer( notnull Container conta )
681 {
682 conta.Toggle();
683 }
684
686 {
687 EntityAI item = GetFocusedItem();
688 Container conta;
689
690 if (m_ShowedItems && item)
691 {
692 conta = m_ShowedItems.Get( item );
693 if (conta)
694 {
695 ToggleContainer( conta );
696 }
697 }
698 }
699
700 override bool OnChildRemove( Widget w, Widget child )
701 {
702 w.Update();
703 float x, y;
704 w.GetScreenSize( x, y );
705 if ( w == GetMainWidget() )
706 {
707 GetMainWidget().Update();
708 m_Parent.OnChildRemove( w, child );
709 }
710 return true;
711 }
712
713 override bool OnChildAdd( Widget w, Widget child )
714 {
715 if ( w == GetMainWidget() )
716 {
717 GetMainWidget().Update();
718 m_Parent.OnChildAdd( w, child );
719 }
720 return true;
721 }
722
723 override void CollapseButtonOnMouseButtonDown(Widget w)
724 {
725 super.CollapseButtonOnMouseButtonDown(w);
727 }
728
730 void UpdateHeader(EntityAI entity, Container cont, PlayerBase player)
731 {
733
734 if (cont.GetHeader())
735 {
736 if (GetDragWidget() == cont.GetHeader())
737 {
738 CancelWidgetDragging();
739 }
740 ItemManager.GetInstance().SetWidgetDraggable(cont.GetHeader().GetMainWidget(),draggable);
741 }
742 }
743}
void Inventory(LayoutHolder parent)
Definition inventory.c:74
Entity m_Parent
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
override bool IsPlayerInside(PlayerBase player, string selection)
Definition fence.c:615
represents base for cargo storage for entities
Definition cargo.c:7
override bool IsDisplayable()
void CollapsibleContainer(LayoutHolder parent, int sort=-1)
override void Remove(LayoutHolder container)
ref CollapsibleHeader m_CollapsibleHeader
override Header GetHeader()
override EntityAI GetFocusedItem()
override LayoutHolder Get(int x)
override Header GetHeader()
override void Refresh()
void ClosableContainer(LayoutHolder parent, int sort=-1)
override bool DisableVicinityIcon()
Definition man.c:888
Serializer API implementation for File IO. See Serializer for more info. usage:
Definition serializer.c:104
script counterpart to engine's class Inventory
Definition inventory.c:81
static bool CanSwapEntitiesEx(notnull EntityAI item1, notnull EntityAI item2)
Definition inventory.c:630
proto native bool IsPlaceholderEntity(notnull Object e)
InventoryLocation.
void SetSelectedItemEx(EntityAI selected_item, Container selected_container, LayoutHolder selected_icon)
void ShowSourceDropzone(EntityAI item)
void SetDefaultHeaderOpenState(string type, bool is_opened)
bool EvaluateContainerDragabilityDefault(EntityAI entity)
ScrollWidget GetLeftSlotsScroller()
Widget GetLeftDropzone()
EntityAI GetSelectedItem()
Definition itemmanager.c:85
void HideDropzones()
bool IsMicromanagmentMode()
Definition itemmanager.c:70
void SetWidgetDraggable(Widget w, bool draggable)
void SetIsDragging(bool is_dragging)
static ItemManager GetInstance()
override ScrollWidget GetScrollWidget()
Definition leftarea.c:70
Widget GetSlotsArea()
Definition leftarea.c:279
Widget GetSlotsHeader()
Definition leftarea.c:274
void SetPlayer(PlayerBase player)
override bool OnChildAdd(Widget w, Widget child)
ScrollWidget m_CargoScrollWidget
void OnDropReceivedFromEmptySpace(Widget w, int x, int y, Widget receiver)
const int ITEMS_PER_COLUMN_MAX
override void CollapseButtonOnMouseButtonDown(Widget w)
const float DISTANCE_TO_THE_REST
void UpdateHeader(EntityAI entity, Container cont, PlayerBase player)
Updates header dragability to be consistent with current 'icon' behaviour.
void OnLeftPanelDropReceived(Widget w, int x, int y, Widget receiver)
const float VICINITY_CARGO_SCROLLER_HEIGHT_MID
override bool OnChildRemove(Widget w, Widget child)
override void UpdateInterval()
const float VICINITY_CARGO_SCROLLER_HEIGHT_MIN
bool IsVicinityContainerIconsActive()
void OnDropReceivedFromIcon(Widget w, int x, int y, Widget receiver)
void VicinityContainer(LayoutHolder parent, int sort=-1)
override void DraggingOverHeader(Widget w, int x, int y, Widget receiver)
const float DISTANCE_TO_ENTITIES
void DraggingOverIcon(Widget w, int x, int y, Widget receiver)
void ToggleContainer(Widget w, EntityAI item)
void ToggleContainer(notnull Container conta)
override void ExpandCollapseContainer()
VicinitySlotsContainer GetVicinityIconsContainer()
override bool CanOpenCloseContainerEx(EntityAI focusedEntity)
const float VICINITY_CARGO_SCROLLER_HEIGHT_MAX
override void OnDropReceivedFromHeader(Widget w, int x, int y, Widget receiver)
void RegisterOnChildRemove(Widget w, Managed eventHandler, string functionName)
static WidgetEventHandler GetInstance()
void RegisterOnChildAdd(Widget w, Managed eventHandler, string functionName)
void SetEntity(EntityAI zombie_entity)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DayZGame g_Game
Definition dayzgame.c:3942
FileMode
Definition ensystem.c:383
const int MENU_INVENTORY
Definition constants.c:180
Object GetParent()
Get parent of the Effect.
Definition effect.c:422
WidgetFlags
Definition enwidgets.c:58
Icon x
Icon y
InventoryLocationType
types of Inventory Location
void InventoryMenu()
ref Widget m_RootWidget[MAX_SIMULTANIOUS_PLAYERS]