DayZ 1.24
Loading...
Searching...
No Matches
InventoryQuickbar.c
Go to the documentation of this file.
1class InventoryQuickbar extends InventoryGridController
2{
3
4 protected ref TItemsMap m_Items;
5 protected InventoryGrid m_Grid;
6 protected int m_DraggingIndex;
7
9 {
10 m_DraggingIndex = INDEX_NOT_FOUND;
11 m_Items = new TItemsMap;
13 }
14
16 {
17 }
18
20 {
22 return;
23
25 if (!player)
26 return;
27
28 int i;
29
30 // create grid and align it to center
31 if (!m_Grid)
32 {
33 quickbarGridWidget.GetScript(m_Grid);
34 m_Grid.SetController(this);
35 m_Grid.GenerateQuickBarBackgroundTiles(10);
36 }
37
38 m_Items.Clear();
40
41 if (m_Grid)
42 {
43 if (m_Grid.GetGridSize() != player.GetQuickBarSize())
44 m_Grid.SetGridSize(player.GetQuickBarSize());
45 }
46
47 for (i = 0; i < m_Grid.GetGridSize(); i++)
48 {
49 item = InventoryItem.Cast(player.GetQuickBarEntity(i));
50 if (item)
51 m_Items.Set(item, Vector(i, 1, 1));
52 }
53
54 if (m_Grid)
55 m_Grid.UpdateQuickbarItems(m_Items);
56 }
57
59 {
61
62 for (int i = 0; i < m_Grid.GetGridSize(); i++)
63 {
64 InventoryItem item = InventoryItem.Cast(player.GetQuickBarEntity(i));
65 if (item == itemToRemove)
66 player.RemoveQuickBarEntityShortcut(item);
67 }
68 }
69
70 // InventoryGridController override
71 override void OnItemEnter(InventoryGrid grid, Widget w, int row, int col)
72 {
73 Widget quickbar = grid.GetRoot();
74 if (quickbar)
75 {
76 // quickbar.SetColor( 0xFFFFFFFF );
77 }
78 }
79
80 override void OnItemLeave(InventoryGrid grid, Widget w)
81 {
82 Widget quickbar = grid.GetRoot();
83 if (quickbar)
84 {
85 // quickbar.SetColor( 0x7FFFFFFF );
86 }
87 }
88
89 override void OnItemDraggingOver(InventoryGrid grid, Widget w, int row, int col)
90 {
93 iw = ItemPreviewWidget.Cast(w.FindAnyWidget("Render"));
94 if (!iw)
95 {
96 string name = w.GetName();
97 name.Replace("PanelWidget", "Render");
98 iw = ItemPreviewWidget.Cast(w.FindAnyWidget(name));
99 }
100
101 if (!iw || !iw.GetItem())
102 return;
103
104 if (!dragged_item && iw)
105 dragged_item = InventoryItem.Cast(iw.GetItem());
106
107 if (dragged_item == NULL)
108 return;
109
110 if (dragged_item && dragged_item.GetInventory().CanRemoveEntity() == false)
111 {
112 int color;
113
114 color = ARGB(150, 255, 1, 1);
115
116 if (w.FindAnyWidget("Cursor"))
117 w.FindAnyWidget("Cursor").SetColor(color);
118 else
119 {
120 name = w.GetName();
121 name.Replace("PanelWidget", "Cursor");
122 if (w.FindAnyWidget(name))
123 w.FindAnyWidget(name).SetColor(color);
124 }
125 }
126 else
127 {
128 color = ARGB(150, 1, 255, 1);
129
130 if (w.FindAnyWidget("Cursor"))
131 w.FindAnyWidget("Cursor").SetColor(color);
132 else
133 {
134 name = w.GetName();
135 name.Replace("PanelWidget", "Cursor");
136 if (w.FindAnyWidget(name))
137 w.FindAnyWidget(name).SetColor(color);
138 }
139 }
140 }
141
142 override void OnItemDropReceived(InventoryGrid grid, Widget w, int row, int col)
143 {
145
146 ItemBase dragged_item = ItemBase.Cast(ItemManager.GetInstance().GetDraggedItem());
147
148 ItemPreviewWidget iw = ItemPreviewWidget.Cast(w.FindAnyWidget("Render"));
149 if (!iw)
150 {
151 string name = w.GetName();
152 name.Replace("PanelWidget", "Render");
153 iw = ItemPreviewWidget.Cast(w.FindAnyWidget(name));
154 }
155
156 if (!dragged_item && iw)
157 dragged_item = ItemBase.Cast(iw.GetItem());
158
159 if (dragged_item && dragged_item.GetHierarchyRootPlayer() != GetGame().GetPlayer())
160 return;
161
162 ItemBase quickbar_item = ItemBase.Cast(player.GetQuickBarEntity(col));
163
164 if (m_DraggingIndex != INDEX_NOT_FOUND)
165 dragged_item = ItemBase.Cast(player.GetQuickBarEntity(m_DraggingIndex));
166
167 if (dragged_item && dragged_item.GetInventory().CanRemoveEntity())
168 {
169 player.SetQuickBarEntityShortcut(dragged_item, col);
170
171 if (quickbar_item && quickbar_item != dragged_item && m_DraggingIndex != INDEX_NOT_FOUND)
172 player.SetQuickBarEntityShortcut(quickbar_item, m_DraggingIndex);
173 }
174 m_DraggingIndex = INDEX_NOT_FOUND;
175 InventoryMenu menu = InventoryMenu.Cast(GetGame().GetUIManager().FindMenu(MENU_INVENTORY));
176 if (menu)
177 menu.RefreshQuickbar();
178 }
179
180 override void OnItemDrop(InventoryGrid grid, Widget w, int row, int col)
181 {
182 if (m_DraggingIndex != INDEX_NOT_FOUND)
183 {
185 InventoryItem dragged_item = InventoryItem.Cast(player.GetQuickBarEntity(m_DraggingIndex));
187 m_DraggingIndex = INDEX_NOT_FOUND;
188 }
189
190 InventoryMenu menu = InventoryMenu.Cast(GetGame().GetUIManager().FindMenu(MENU_INVENTORY));
191 if (menu)
192 menu.RefreshQuickbar();
193 ItemManager.GetInstance().HideDropzones();
194 }
195
196 override void OnItemDrag(InventoryGrid grid, Widget w, int row, int col)
197 {
199 InventoryItem item = InventoryItem.Cast(player.GetQuickBarEntity(col));
200 if (item)
201 {
202 m_DraggingIndex = col;
203 m_Grid.SetItemColor(item, InventoryGrid.ITEM_COLOR_DRAG);
204 }
205 }
206
207 override int GetQuickbarItemColor(InventoryGrid grid, InventoryItem item)
208 {
209 int color = 0x0AFFFFFF;
211 EntityAI itemInHand = player.GetHumanInventory().GetEntityInHands();
212 if (player && itemInHand == item)
213 {
214 if (player.GetHumanInventory().FindUserReservedLocationIndex(item) != -1 || grid.CanAddItemInHandToInventory())
215 color = InventoryGrid.ITEM_COLOR_QUICKBAR_H_GOOD;
216 else
217 color = InventoryGrid.ITEM_COLOR_QUICKBAR_H_BAD;
218 }
219 else if (itemInHand)
220 {
221 if (!grid.CanAddItemInHandToInventory() && !GameInventory.CanSwapEntitiesEx(item, itemInHand))
222 color = InventoryGrid.ITEM_COLOR_QUICKBAR_I_BAD;
223 }
224 return color;
225 }
226
227
232
237
242
244 {
245 ItemBase ib = ItemBase.Cast(item);
246 return ib.m_VarQuantityMax;
247 }
248
250 {
251 ItemBase ib = ItemBase.Cast(item);
252 return ib.m_Count;
253 }
254
256 {
258 EntityAI itemInHand = player.GetHumanInventory().GetEntityInHands();
259 return itemInHand && player.GetInventory().CanAddEntityToInventory(itemInHand);
260 }
261}
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
void InventoryMenu()
PlayerBase GetPlayer()
script counterpart to engine's class Inventory
Definition Inventory.c:79
static bool CanSwapEntitiesEx(notnull EntityAI item1, notnull EntityAI item2)
Definition Inventory.c:610
override void OnItemDrag(InventoryGrid grid, Widget w, int row, int col)
override bool CanAddItemInHandToInventory()
override int GetItemQuantityMax(InventoryItem item)
override int GetItemCount(InventoryItem item)
override void OnItemDropReceived(InventoryGrid grid, Widget w, int row, int col)
override void OnItemLeave(InventoryGrid grid, Widget w)
override void OnItemEnter(InventoryGrid grid, Widget w, int row, int col)
override int HasItemQuantity(InventoryItem item)
override int GetQuickbarItemColor(InventoryGrid grid, InventoryItem item)
override void OnItemDraggingOver(InventoryGrid grid, Widget w, int row, int col)
override void OnItemDrop(InventoryGrid grid, Widget w, int row, int col)
void Remove(InventoryItem itemToRemove)
void UpdateItems(Widget quickbarGridWidget)
override float GetItemQuantity(InventoryItem item)
void InventoryQuickbar(Widget quickbarGridWidget)
override string GetItemQuantityText(InventoryItem item)
static ItemManager GetInstance()
static float GetItemQuantity(InventoryItem item)
static int HasItemQuantity(notnull EntityAI item)
static string GetItemQuantityText(EntityAI item, bool showMax=false)
const int INDEX_NOT_FOUND
Definition gameplay.c:13
proto native CGame GetGame()
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
const int MENU_INVENTORY
Definition constants.c:170
int ARGB(int a, int r, int g, int b)
Definition proto.c:322