Dayz Explorer  1.24.157551 (v105080)
Dayz Code Explorer by Zeroy
attachments.c
Go to the documentation of this file.
1 const int ITEMS_IN_ROW = 8;
2 
4 {
5  protected Container m_Parent;
6  protected EntityAI m_Entity;
7  protected ref AttachmentsWrapper m_AttachmentsContainer;
8  protected ref array<string> m_AttachmentSlotNames;
9  protected ref array<string> m_AttachmentSlotDisplayable;
10  protected ref map<int, SlotsIcon> m_AttachmentSlots;
11  protected ref array<int> m_AttachmentIDOrdered;
12 
13  protected int m_RowIndex;
14 
15  void Attachments( Container parent, EntityAI entity )
16  {
17  m_Parent = parent;
18  m_Entity = entity;
20  m_AttachmentIDOrdered = new array<int>;
21  m_AttachmentSlotNames = GetItemSlots( entity );
22  m_AttachmentSlotDisplayable = new array<string>;
23  m_Entity.GetOnItemAttached().Insert( AttachmentAdded );
24  m_Entity.GetOnItemDetached().Insert( AttachmentRemoved );
25  m_Entity.GetOnAttachmentSetLock().Insert( OnAttachmentReservationSet );
26  m_Entity.GetOnAttachmentReleaseLock().Insert( OnAttachmentReservationRelease );
27 
28  }
29 
30  void ~Attachments()
31  {
32  if( m_Entity )
33  {
34  m_Entity.GetOnItemAttached().Remove( AttachmentAdded );
35  m_Entity.GetOnItemDetached().Remove( AttachmentRemoved );
36  m_Entity.GetOnAttachmentSetLock().Remove( OnAttachmentReservationSet );
37  m_Entity.GetOnAttachmentReleaseLock().Remove( OnAttachmentReservationRelease );
38  }
39 
40  delete m_AttachmentsContainer;
41  }
42 
43  AttachmentsWrapper GetWrapper()
44  {
45  return m_AttachmentsContainer;
46  }
47 
48  bool IsEmpty()
49  {
50  return m_AttachmentsContainer.IsEmpty();
51  }
52 
53  bool IsItemActive()
54  {
55  ItemBase item = ItemBase.Cast( GetFocusedItem() );
56  if( !item )
57  {
58  return false;
59  }
60  return !IsEmpty() && ( !QuantityConversions.HasItemQuantity( item ) || ( QuantityConversions.HasItemQuantity( item ) && !item.CanBeSplit() ) );
61  }
62 
63  bool IsItemWithQuantityActive()
64  {
65  ItemBase item = ItemBase.Cast( GetFocusedItem() );
66  if( !item )
67  {
68  return false;
69  }
70  return !IsEmpty() && QuantityConversions.HasItemQuantity( item ) && item.CanBeSplit();
71  }
72 
73  void UnfocusAll()
74  {
75  m_AttachmentsContainer.UnfocusAll();
76  }
77 
78  void SetDefaultFocus( bool while_micromanagment_mode = false )
79  {
80  m_AttachmentsContainer.SetDefaultFocus(while_micromanagment_mode);
81  }
82 
83  void SetLastActive()
84  {
85  m_AttachmentsContainer.SetLastActive();
86  }
87 
88  void SetActive( bool active )
89  {
90  m_AttachmentsContainer.SetActive(active);
91  }
92 
93  void SelFirstActive()
94  {
95  m_AttachmentsContainer.SetFirstActive();
96  }
97 
98  SlotsIcon GetFocusedSlotsIcon()
99  {
100  return m_AttachmentsContainer.GetFocusedSlotsIcon();
101  }
102 
103  EntityAI GetFocusedItem()
104  {
105  return m_AttachmentsContainer.GetFocusedItem();
106  }
107 
108  int GetFocusedSlot()
109  {
110  SlotsIcon icon = m_AttachmentsContainer.GetFocusedSlotsIcon();
111  if (icon)
112  return icon.GetSlotID();
113  return -1;
114  }
115 
116  bool SelectItem()
117  {
118  ItemBase item = ItemBase.Cast( GetFocusedItem() );
119  SlotsIcon icon = GetFocusedSlotsIcon();
120 
121  if (icon && !icon.IsOutOfReach())
122  {
123  if (item && item.CanPutIntoHands(null))
124  {
125  ItemManager.GetInstance().SetSelectedItemEx(item, null, icon);
126  }
127  else
128  {
129  ItemManager.GetInstance().SetSelectedItemEx(null, null, icon);
130  }
131  return true;
132  }
133  return false;
134  }
135 
136  bool Select()
137  {
138  SlotsIcon selected_slot = ItemManager.GetInstance().GetSelectedIcon();
139  EntityAI selected_item = ItemManager.GetInstance().GetSelectedItem();
140  SlotsIcon focused_slot = GetFocusedSlotsIcon();
141  EntityAI focused_item = GetFocusedItem();
142  Man player = GetGame().GetPlayer();
143 
144  if( focused_slot.IsReserved() || focused_item != selected_item && !(selected_slot && selected_slot.IsOutOfReach() ) )
145  {
146  if( selected_item )
147  {
148  if( selected_item.GetInventory().CanRemoveEntity() )
149  {
150  if( m_Entity.GetInventory().CanAddAttachmentEx( selected_item, focused_slot.GetSlotID() ) )
151  {
152  player.PredictiveTakeEntityToTargetAttachmentEx( m_Entity, selected_item, focused_slot.GetSlotID() );
153  ItemManager.GetInstance().SetSelectedItemEx(null, null, null);
154  return true;
155 
156  }
157  else if( m_Entity.GetInventory().CanAddAttachment( selected_item ) )
158  {
159  player.PredictiveTakeEntityToTargetAttachment(m_Entity, selected_item);
160  ItemManager.GetInstance().SetSelectedItemEx(null, null, null);
161  return true;
162  }
163  }
164  }
165  else
166  {
167  if ( focused_item && !focused_slot.IsOutOfReach() )
168  {
169  EntityAI item_in_hands = GetGame().GetPlayer().GetHumanInventory().GetEntityInHands();
171  focused_item.GetInventory().GetCurrentInventoryLocation( il );
172  bool reachable = AttachmentsOutOfReach.IsAttachmentReachable( m_Entity, "", il.GetSlot() );
173  if( reachable && focused_item.GetInventory().CanRemoveEntity() )
174  {
175  if( item_in_hands && item_in_hands.GetInventory().CanRemoveEntity() )
176  {
177  if( GameInventory.CanSwapEntitiesEx( item_in_hands, focused_item ) )
178  {
179  player.PredictiveSwapEntities( item_in_hands, focused_item );
180  return true;
181  }
182  }
183  else
184  {
185  if( player.GetHumanInventory().CanAddEntityInHands( focused_item ) )
186  {
187  player.PredictiveTakeEntityToHands( focused_item );
188  return true;
189  }
190  }
191  }
192  }
193  }
194  }
195  return false;
196  }
197 
198  int GetRecipeCount( bool recipe_anywhere, EntityAI entity1, EntityAI entity2 )
199  {
200  PluginRecipesManager plugin_recipes_manager = PluginRecipesManager.Cast( GetPlugin( PluginRecipesManager ) );
201  return plugin_recipes_manager.GetValidRecipes( ItemBase.Cast( entity1 ), ItemBase.Cast( entity2 ), null, PlayerBase.Cast( GetGame().GetPlayer() ) );
202  }
203 
204  bool CanCombine()
205  {
206  ItemBase ent = ItemBase.Cast( GetFocusedItem() );
207  ItemBase item_in_hands = ItemBase.Cast( GetGame().GetPlayer().GetHumanInventory().GetEntityInHands() );
208 
209  return ( ItemManager.GetCombinationFlags( item_in_hands, ent ) != 0 );
210  }
211 
212  bool CanCombineAmmo()
213  {
215  ItemBase ent = ItemBase.Cast( GetFocusedItem() );
216  ItemBase item_in_hands = ItemBase.Cast( GetGame().GetPlayer().GetHumanInventory().GetEntityInHands() );
218  Class.CastTo(amc, m_player.GetActionManager());
219 
220  return ( amc.CanPerformActionFromInventory( item_in_hands, ent ) );
221  }
222 
223  bool CanEquip()
224  {
225  EntityAI entity = ItemBase.Cast( GetFocusedItem() );
227  if( !entity || entity.IsInherited( Magazine ) )
228  {
229  return false;
230  }
231  return GetGame().GetPlayer().GetInventory().FindFreeLocationFor( entity, FindInventoryLocationType.ATTACHMENT, il );
232  }
233 
234  bool Combine()
235  {
236  ItemBase ent = ItemBase.Cast( GetFocusedItem() );
237  ItemBase item_in_hands = ItemBase.Cast( GetGame().GetPlayer().GetHumanInventory().GetEntityInHands() );
238  Icon hands_icon = ItemManager.GetInstance().GetHandsPreview().GetIcon();
239 
240  if ( item_in_hands && ent && hands_icon )
241  {
242  return hands_icon.CombineItems( item_in_hands, ent );
243  }
244 
245  return false;
246  }
247 
248  bool SplitItem()
249  {
250  ItemBase entity = ItemBase.Cast( GetFocusedItem() );
251  if( entity && !entity.IsInherited( Magazine ) && !GetFocusedSlotsIcon().IsOutOfReach() )
252  {
253  if( entity.HasQuantity() )
254  {
255  entity.OnRightClick();
256  return true;
257  }
258  }
259  return false;
260  }
261 
262  bool EquipItem()
263  {
264  ItemBase entity = ItemBase.Cast( GetFocusedItem() );
265  if( entity && !entity.IsInherited( Magazine ) && !GetFocusedSlotsIcon().IsOutOfReach() )
266  {
267  GetGame().GetPlayer().PredictiveTakeEntityToInventory( FindInventoryLocationType.ATTACHMENT, entity );
268  return true;
269  }
270  return false;
271  }
272 
273  bool TransferItem()
274  {
275  EntityAI entity = GetFocusedItem();
276  if( entity && !GetFocusedSlotsIcon().IsOutOfReach() )
277  {
278  GetGame().GetPlayer().PredictiveTakeEntityToInventory( FindInventoryLocationType.CARGO, entity );
279  return true;
280  }
281  return false;
282  }
283 
284  bool InspectItem()
285  {
286  EntityAI entity = GetFocusedItem();
287  if( entity )
288  {
289  m_Parent.InspectItem( entity );
290  return true;
291  }
292  return false;
293  }
294 
295  bool TransferItemToVicinity()
296  {
297  ItemBase item = ItemBase.Cast(GetFocusedItem());
298  PlayerBase player = PlayerBase.Cast( GetGame().GetPlayer());
299  if (item && !GetFocusedSlotsIcon().IsOutOfReach() )
300  {
301  if (item.GetTargetQuantityMax() < item.GetQuantity())
302  item.SplitIntoStackMaxClient( null, -1 );
303  else
304  player.PhysicalPredictiveDropItem(item);
305  return true;
306  }
307  return false;
308  }
309 
310  bool IsActive()
311  {
312  return m_Parent.GetMainWidget().FindAnyWidget("AttachmentsWrapper").GetAlpha() > 0;
313  }
314 
315  int GetAttachmentHeight()
316  {
317  return m_AttachmentsContainer.Count();
318  }
319 
320  void UpdateInterval()
321  {
322  SlotsIcon icon;
323  int slot_id;
324  m_AttachmentSlotDisplayable.Clear();
325  int i = 0;
326  for (i = m_AttachmentSlotNames.Count() - 1; i >=0; --i)
327  {
328  slot_id = InventorySlots.GetSlotIdFromString( m_AttachmentSlotNames[i] );
329  if (m_Entity.CanDisplayAttachmentSlot(slot_id))
330  {
331  m_AttachmentSlotDisplayable.Insert(m_AttachmentSlotNames[i]);
332  }
333  else
334  {
335  icon = m_AttachmentSlots.Get( slot_id );
336  if (icon)
337  {
338  icon.GetMainWidget().Show( false );
339  if( GetFocusedSlotsIcon() == icon )
340  {
341  SetDefaultFocus();
342  }
343  // radial icon (collabsable icon handling)
344  icon.UpdateInterval();
345  }
346  }
347 
348  }
349 
350  if ( m_AttachmentSlotDisplayable.Count() == 0 )
351  {
352  if (m_Parent)
353  {
354  m_Parent.UpdateRadialIcon();
355  //m_Parent.Close();
356  }
357  }
358 
359  for (i = 0; i < m_AttachmentSlotDisplayable.Count(); ++i)
360  {
361  slot_id = InventorySlots.GetSlotIdFromString( m_AttachmentSlotDisplayable[i] );
362  icon = m_AttachmentSlots.Get( slot_id );
363  EntityAI item = icon.GetEntity();
364  icon.GetMainWidget().Show( true );
365  icon.UpdateInterval();
366  if ( item )
367  {
368  bool draggable = true;
369  if(icon.IsReserved())
370  {
371  draggable = false;
372  }
373 
374  if( m_Entity.GetInventory().GetSlotLock( slot_id ) && ItemManager.GetInstance().GetDraggedItem() != item )
375  {
376  icon.GetMountedWidget().Show( true );
377  draggable = false;
378  }
379  else
380  {
381  icon.GetMountedWidget().Show( false );
382  }
383 
384  PlayerBase p = PlayerBase.Cast( GetGame().GetPlayer() );
385  bool in_hands_condition = m_Entity.GetHierarchyRoot() && item.GetInventory().CanRemoveEntity();
386  bool in_vicinity_condition = !m_Entity.GetHierarchyRoot() && AttachmentsOutOfReach.IsAttachmentReachable( m_Entity, m_AttachmentSlotDisplayable[i] );
387  if( in_hands_condition || in_vicinity_condition )
388  {
389  icon.GetOutOfReachWidget().Show( false );
390  }
391  else
392  {
393  icon.GetOutOfReachWidget().Show( true );
394  draggable = false;
395  }
396 
397  if( draggable )
398  {
399  icon.GetPanelWidget().SetFlags( WidgetFlags.DRAGGABLE );
400  }
401  else
402  {
403  icon.GetPanelWidget().ClearFlags( WidgetFlags.DRAGGABLE );
404  }
405  }
406  }
407  m_AttachmentsContainer.GetRootWidget().Update();
408  }
409 
410  array<int> GetSlotsSorted()
411  {
412  return m_AttachmentIDOrdered;
413  }
414 
415  void AttachmentAdded(EntityAI item, string slot, EntityAI parent)
416  {
417  int slot_id = InventorySlots.GetSlotIdFromString(slot);
418  SlotsIcon icon = m_AttachmentSlots.Get(slot_id);
419  if (icon)
420  {
421  icon.SetSlotID(slot_id);
422  icon.SetSlotDisplayName(InventorySlots.GetSlotDisplayName(slot_id));
423  if (item)
424  {
425  icon.Init(item);
426  }
427  }
428  }
429 
430  void AttachmentRemoved(EntityAI item, string slot, EntityAI parent)
431  {
432  int slot_id = InventorySlots.GetSlotIdFromString(slot);
433  SlotsIcon icon = m_AttachmentSlots.Get(slot_id);
434  if (icon)
435  {
436  icon.Clear();
437  }
438  }
439 
440  void OnAttachmentReservationSet( EntityAI item, int slot_id )
441  {
442  SlotsIcon icon = m_AttachmentSlots.Get( slot_id );
443 
444  if (item)
445  {
446  icon.Init( item, true );
447  }
448  }
449 
450  void OnAttachmentReservationRelease( EntityAI item, int slot_id )
451  {
452  SlotsIcon icon = m_AttachmentSlots.Get( slot_id );
453  icon.Clear();
454  }
455 
456 
457  void InitAttachmentGrid( int att_row_index )
458  {
459  SlotsIcon icon;
460  int i;
461  m_RowIndex = att_row_index;
462 
463  int number_of_rows = Math.Ceil( m_AttachmentSlotNames.Count() / ITEMS_IN_ROW );
464  string name = m_Entity.GetDisplayName();
465  name.ToUpper();
466 
467  m_AttachmentsContainer = new AttachmentsWrapper( m_Parent );
468  m_AttachmentsContainer.SetParent( this );
469  m_AttachmentsContainer.SetFalseAttachmentsHeaderText(name);
470  m_AttachmentsContainer.GetRootWidget().SetSort( att_row_index );
471  m_Parent.Insert( m_AttachmentsContainer, att_row_index );
472 
473  for ( i = 0; i < number_of_rows; i++ )
474  {
475  SlotsContainer ic = new SlotsContainer( m_AttachmentsContainer, m_Entity );
476  m_AttachmentsContainer.Insert( ic );
477 
478  if( i == ( number_of_rows - 1 ) && m_AttachmentSlotNames.Count() % ITEMS_IN_ROW != 0 )
479  {
480  ic.SetColumnCount( m_AttachmentSlotNames.Count() % ITEMS_IN_ROW );
481  }
482  else
483  {
484  ic.SetColumnCount( ITEMS_IN_ROW );
485  }
486 
487  for( int j = 0; j < ITEMS_IN_ROW; j++ )
488  {
489  icon = ic.GetSlotIcon( j );
490  WidgetEventHandler.GetInstance().RegisterOnDropReceived( icon.GetMainWidget(), m_Parent, "OnDropReceivedFromHeader2" );
491  WidgetEventHandler.GetInstance().RegisterOnDropReceived( icon.GetGhostSlot(), m_Parent, "OnDropReceivedFromHeader2" );
492  WidgetEventHandler.GetInstance().RegisterOnDropReceived( icon.GetPanelWidget(), m_Parent, "OnDropReceivedFromHeader2" );
493 
494  WidgetEventHandler.GetInstance().RegisterOnDraggingOver( icon.GetMainWidget(), m_Parent, "DraggingOverHeader" );
495  WidgetEventHandler.GetInstance().RegisterOnDraggingOver( icon.GetGhostSlot(), m_Parent, "DraggingOverHeader" );
496  WidgetEventHandler.GetInstance().RegisterOnDraggingOver( icon.GetPanelWidget(), m_Parent, "DraggingOverHeader" );
497 
498  WidgetEventHandler.GetInstance().RegisterOnMouseButtonDown( icon.GetMainWidget(), m_Parent, "MouseClick2" );
499  WidgetEventHandler.GetInstance().RegisterOnMouseButtonDown( icon.GetGhostSlot(), m_Parent, "MouseClick2" );
500  WidgetEventHandler.GetInstance().RegisterOnMouseButtonDown( icon.GetPanelWidget(), m_Parent, "MouseClick2" );
501  }
502  }
503 
504  for ( i = 0; i < m_AttachmentSlotNames.Count(); i++ )
505  {
506  icon = SlotsContainer.Cast( m_AttachmentsContainer.Get( ( i / ITEMS_IN_ROW ) ) ).GetSlotIcon( i % ITEMS_IN_ROW );
507  WidgetEventHandler.GetInstance().RegisterOnDoubleClick( icon.GetPanelWidget(), m_Parent, "DoubleClick" );
508 
509  string path = "CfgSlots" + " Slot_" + m_AttachmentSlotNames[i];
510 
511  //Show different magazine icon for firearms and pistols
512  if ( m_AttachmentSlotNames[i] == "magazine" )
513  {
514  if ( !m_Entity.IsInherited( Pistol_Base ) )
515  path = "CfgSlots" + " Slot_" + "magazine2";
516  }
517 
518  string icon_name = ""; //icon_name must be in format "set:<setname> image:<imagename>"
519  if( GetGame().ConfigGetText( path + " ghostIcon", icon_name ) && icon_name != "" )
520  icon.GetGhostSlot().LoadImageFile( 0, StaticGUIUtils.VerifyIconImageString(StaticGUIUtils.IMAGESETGROUP_INVENTORY,icon_name) );
521  int slot_id = InventorySlots.GetSlotIdFromString( m_AttachmentSlotNames[i] );
522  m_AttachmentSlots.Insert( slot_id, icon );
523  m_AttachmentIDOrdered.Insert(slot_id);
524 
525  icon.SetSlotID(slot_id);
526  icon.SetSlotDisplayName(InventorySlots.GetSlotDisplayName(slot_id));
527 
528  EntityAI item = m_Entity.GetInventory().FindAttachment( slot_id );
529  if( item )
530  AttachmentAdded( item, m_AttachmentSlotNames[i], m_Entity );
531  else
532  icon.Clear();
533 
534  if (m_Entity.CanDisplayAttachmentSlot(slot_id))
535  {
536  icon.GetMainWidget().Show( true );
537  }
538  else
539  {
540  icon.GetMainWidget().Show( false );
541  }
542  }
543 
544  if( m_AttachmentSlotNames.Count() > 0 )
545  {
546  int row_index = number_of_rows - 1;
547  SlotsContainer row_last = SlotsContainer.Cast( m_AttachmentsContainer.Get( row_index ) );
548  if( row_last )
549  {
550  for( int k = ((m_AttachmentSlotNames.Count() - 1) % ITEMS_IN_ROW) + 1; k < ITEMS_IN_ROW; k++ )
551  {
552  row_last.GetSlotIcon( k ).GetMainWidget().Show( false );
553  }
554  row_last.GetRootWidget().Update();
555  row_last.GetRootWidget().GetParent().Update();
556  }
557  }
558 
559  m_AttachmentsContainer.RecomputeOpenedContainers();
560  }
561 
562  array<string> GetItemSlots( EntityAI e )
563  {
564  TStringArray searching_in = new TStringArray;
565  searching_in.Insert( CFG_VEHICLESPATH );
566  searching_in.Insert( CFG_WEAPONSPATH );
567  searching_in.Insert( CFG_MAGAZINESPATH );
568 
569  array<string> attachments_slots = new array<string>;
570  int i = 0;
571  for ( int s = 0; s < searching_in.Count(); ++s )
572  {
573  string cfg_name = searching_in.Get( s );
574  string path = cfg_name + " " + e.GetType();
575 
576  if ( GetGame().ConfigIsExisting( path ) )
577  {
578  GetGame().ConfigGetTextArray( path + " attachments", attachments_slots );
579  if ( e.IsWeapon() && (!e.ConfigIsExisting("DisplayMagazine") || e.ConfigGetBool("DisplayMagazine")) )
580  {
581  attachments_slots.Insert( "magazine" );
582  }
583 
584  return attachments_slots;
585  }
586  }
587  if ( e.IsWeapon() && (!e.ConfigIsExisting("DisplayMagazine") || e.ConfigGetBool("DisplayMagazine")) )
588  {
589  attachments_slots.Insert( "magazine" );
590  }
591 
592  return attachments_slots;
593  }
594 
595  void ShowFalseAttachmentsHeader(bool show)
596  {
597  m_AttachmentsContainer.ShowFalseAttachmentsHeader(show);
598  }
599 
600  void SetFalseAttachmentsHeaderText(string text)
601  {
602  m_AttachmentsContainer.SetFalseAttachmentsHeaderText(text);
603  }
604 
605  TextWidget GetFalseHeaderTextWidget()
606  {
607  return m_AttachmentsContainer.GetFalseHeaderTextWidget();
608  }
609 }
ItemBase
Definition: inventoryitem.c:730
SlotsContainer
Definition: slotscontainer.c:1
GetGame
proto native CGame GetGame()
m_player
DayZPlayer m_player
Definition: randomgeneratorsyncmanager.c:15
QuantityConversions
Definition: quantityconversions.c:1
InventorySlots
provides access to slot configuration
Definition: inventoryslots.c:5
TStringArray
array< string > TStringArray
Definition: enscript.c:685
StaticGUIUtils
Definition: staticguiutils.c:1
AttachmentsOutOfReach
Definition: attachmentsoutofreach.c:1
InventoryLocation
InventoryLocation.
Definition: inventorylocation.c:27
ITEMS_IN_ROW
const int ITEMS_IN_ROW
Definition: attachments.c:1
m_Parent
protected Widget m_Parent
Definition: sizetochild.c:92
GetPlugin
PluginBase GetPlugin(typename plugin_type)
Definition: pluginmanager.c:316
Attachments
Definition: attachments.c:3
PlayerBase
Definition: playerbaseclient.c:1
map
map
Definition: controlsxboxnew.c:3
TextWidget
Definition: enwidgets.c:219
CFG_VEHICLESPATH
const string CFG_VEHICLESPATH
Definition: constants.c:209
Container
Definition: cargocontainer.c:2
CFG_MAGAZINESPATH
const string CFG_MAGAZINESPATH
Definition: constants.c:211
SlotsIcon
Definition: slotsicon.c:1
CFG_WEAPONSPATH
const string CFG_WEAPONSPATH
Definition: constants.c:210
Pistol_Base
base for semi auto weapons @NOTE name copies config base class
Definition: pistolalt_base.c:1
ItemManager
Definition: itemmanager.c:1
FindInventoryLocationType
FindInventoryLocationType
flags for searching locations in inventory
Definition: inventorylocation.c:15
ActionManagerClient
Definition: actionmanagerclient.c:4
array< string >
name
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
GetPlayer
protected void GetPlayer()
Definition: crosshairselector.c:127
Icon
Definition: icon.c:1
WidgetFlags
WidgetFlags
Definition: enwidgets.c:57
Math
Definition: enmath.c:6
AttachmentsWrapper
Definition: attachmentswrapper.c:1
Class
Super root of all classes in Enforce script.
Definition: enscript.c:10
EntityAI
Definition: building.c:5
m_Entity
EntityAI m_Entity
Definition: actiondebug.c:11
m_AttachmentSlots
class MenuDefaultCharacterData m_AttachmentSlots
GameInventory
script counterpart to engine's class Inventory
Definition: inventory.c:78
WidgetEventHandler
Definition: widgeteventhandler.c:1
path
string path
Definition: optionselectormultistate.c:135