254 {
255 if (w == null)
256 {
257 return;
258 }
259
260 string name = w.GetName();
261 name.Replace(
"PanelWidget",
"Render");
262
263 ItemPreviewWidget targetIpw = ItemPreviewWidget.Cast(receiver.FindAnyWidget( "Render" ));
265 {
266 targetIpw = ItemPreviewWidget.Cast(receiver.GetParent().FindAnyWidget( "Render" ));
267 }
268
269 ItemPreviewWidget selectedIpw = ItemPreviewWidget.Cast(w.FindAnyWidget(
name));
270 if (selectedIpw == null)
271 {
272 selectedIpw = ItemPreviewWidget.Cast(w.FindAnyWidget("Render"));
273 }
274
275 if (selectedIpw == null)
276 {
277 return;
278 }
279
280 InventoryItem targetEntity = InventoryItem.Cast(targetIpw.
GetItem());
281 InventoryItem selectedEntity = InventoryItem.Cast(selectedIpw.
GetItem());
282 if (!selectedEntity || !targetEntity)
283 {
284 return;
285 }
286
287 InventoryLocation il = new InventoryLocation();
288 PlayerBase player = PlayerBase.Cast(
g_Game.GetPlayer());
289 if (selectedEntity.GetHierarchyRootPlayer() == player)
290 {
291 int index = player.GetHumanInventory().FindUserReservedLocationIndex(
m_Item);
292 if (index >= 0)
293 {
294 player.GetHumanInventory().GetUserReservedLocation(index, il);
295
296 if (GameInventory.CanForceSwapEntitiesEx(selectedEntity, null, targetEntity, il))
297 {
298 ColorManager.GetInstance().SetColor(w, ColorManager.FSWAP_COLOR);
299 ItemManager.GetInstance().HideDropzones();
300 ItemManager.GetInstance().ShowSourceDropzone(il.
GetParent());
301 return;
302 }
303 }
304 }
305 static int testedFlags = InventoryCombinationFlags.SWAP | InventoryCombinationFlags.FSWAP;
306
307 int chosenInventoryAction = ItemManager.GetChosenCombinationFlag(selectedEntity, targetEntity, testedFlags, il);
308 UpdateFrameColor(selectedEntity, targetEntity, chosenInventoryAction, w, il);
309 }
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
void UpdateFrameColor(EntityAI selectedEntity, EntityAI targetEntity, int combinationFlag, Widget w, InventoryLocation il=null)
proto native EntityAI GetParent()
returns parent of current inventory location