Dayz Explorer  1.24.157551 (v105080)
Dayz Code Explorer by Zeroy
uipropertyattachment.c
Go to the documentation of this file.
2 {
3  private Widget m_WgtRoot;
4  private Widget m_WgtThis;
5  private XComboBoxWidget m_WgtComboBox;
6  private TextWidget m_WgtSlotName;
7  private ref TStringArray m_ComboItems;
8  private int m_PrevIndex;
9  private EntityAI m_Obj;
10  private int m_SlotID;
11 
12 
13  void UIPropertyAttachment(Widget root)
14  {
15  m_WgtRoot = root;
16 
17  m_ComboItems = new TStringArray;
18 
19  m_WgtThis = GetGame().GetWorkspace().CreateWidgets("gui/layouts/scene_editor/day_z_scene_editor_attachment.layout", m_WgtRoot);
20  m_WgtComboBox = XComboBoxWidget.Cast( m_WgtThis.FindAnyWidget("combo_box") );
21  m_WgtSlotName = TextWidget.Cast( m_WgtThis.FindAnyWidget("txt_slot_name") );
22  }
23 
24  void ~UIPropertyAttachment()
25  {
26  m_WgtRoot = NULL;
27  m_WgtComboBox = NULL;
28 
29  delete m_WgtThis;
30  }
31 
32  bool OnClick(Widget w, int x, int y, int button)
33  {
34  if ( w == m_WgtComboBox )
35  {
36  if ( m_PrevIndex != 0 )
37  {
38  EntityAI attachment = m_Obj.GetInventory().FindAttachment(m_SlotID);
39  GetGame().ObjectDelete(attachment);
40  }
41 
42  int curr_index = m_WgtComboBox.GetCurrentItem();
43 
44  if ( curr_index != 0 )
45  {
46  PluginDeveloper module_dev = PluginDeveloper.Cast( GetPlugin(PluginDeveloper) );
47 
48  EntityAI e = module_dev.SpawnEntityAsAttachment(PluginSceneManager.PLAYER, m_Obj, m_ComboItems.Get(curr_index), 1, -1);
49  }
50 
51  m_PrevIndex = curr_index;
52 
53  return true;
54  }
55 
56  return false;
57  }
58 
59  void SetPos(float x, float y)
60  {
61  m_WgtThis.SetPos(x, y);
62  }
63 
64  void SetSize(float width, float height)
65  {
66  m_WgtThis.SetSize(width, height);
67  }
68 
69  void Show(EntityAI e, string slot_name, TStringArray att_items)
70  {
71  m_WgtThis.Show(true);
72 
73  m_Obj = e;
74  m_ComboItems.Clear();
75  m_ComboItems.Insert("none");
76  m_ComboItems.InsertAll(att_items);
77 
78  m_WgtSlotName.SetText(slot_name);
79 
80  m_WgtComboBox.ClearAll();
81 
82  m_SlotID = InventorySlots.GetSlotIdFromString(slot_name);
83  EntityAI attachment = e.GetInventory().FindAttachment(m_SlotID);
84  int selected_index = 0;
85 
86  for ( int i = 0; i < m_ComboItems.Count(); ++i )
87  {
88  string item_name = m_ComboItems.Get(i);
89 
90  m_WgtComboBox.AddItem(item_name);
91 
92  if ( attachment != NULL && attachment.GetType() == item_name )
93  {
94  selected_index = i;
95  }
96  }
97 
98  m_WgtComboBox.SetCurrentItem(selected_index);
99  m_PrevIndex = selected_index;
100  }
101 
102  void Hide()
103  {
104  m_WgtThis.Show(false);
105 
106  m_Obj = NULL;
107  m_SlotID = -1;
108  }
109 
110  bool IsVisible()
111  {
112  return m_WgtThis.IsVisible();
113  }
114 }
GetGame
proto native CGame GetGame()
m_WgtRoot
Widget m_WgtRoot
Definition: huddebug.c:92
InventorySlots
provides access to slot configuration
Definition: inventoryslots.c:5
TStringArray
array< string > TStringArray
Definition: enscript.c:685
y
Icon y
UIPropertyAttachment
Definition: uipropertyattachment.c:1
GetPlugin
PluginBase GetPlugin(typename plugin_type)
Definition: pluginmanager.c:316
TextWidget
Definition: enwidgets.c:219
array< string >
x
Icon x
Widget
Definition: enwidgets.c:189
EntityAI
Definition: building.c:5