15 if (layerInventory.IsPlayerContainer(includePlayer) && layerInventory.Inv != exclude && !layerInventory.Inv.Container.IsToolbelt && !layerInventory.Inv.Container.things.IsFull(t,
false,
true))
17 int siblingIndex = layerInventory.transform.GetSiblingIndex();
18 if (siblingIndex > num)
21 result = layerInventory;
34 if (layerInventory.Inv.Container.IsPC)
36 return layerInventory;
43 public static void Close(
Thing t)
47 if (layerInventory.invs[0].owner.Container == t)
49 layerInventory.Close();
56 public static bool IsOpen(
Thing t)
58 using (List<LayerInventory>.Enumerator enumerator =
LayerInventory.listInv.GetEnumerator())
60 while (enumerator.MoveNext())
62 if (enumerator.Current.invs[0].owner.Container == t)
72 public static void SetDirty(
Thing t)
74 if (!
ELayer.game.altInv || t ==
null)
80 if (layerInventory.invs[0].owner.Container == t.parent || (layerInventory.mini && layerInventory.mini.gameObject.activeInHierarchy))
82 layerInventory.invs[0].dirty =
true;
85 if (t.invY == 1 ||
ELayer.pc.held == t)
87 WidgetCurrentTool.dirty =
true;
91 WidgetEquip.dirty =
true;
96 public static void SetDirtyAll(
bool immediate =
false)
100 layerInventory.invs[0].dirty =
true;
103 layerInventory.invs[0].CheckDirty();
108 WidgetEquip.dirty =
true;
114 WidgetCurrentTool.dirty =
true;
122 public static void TryShowGuide(UIList list)
124 List<ButtonGrid> list2 =
new List<ButtonGrid>();
125 foreach (UIList.ButtonPair buttonPair in list.buttons)
130 list2.Add(buttonGrid);
137 public static void TryShowGuide(List<ButtonGrid> list)
139 bool flag = InvOwner.HasTrader &&
InvOwner.Trader.UseGuide;
140 bool flag2 = WidgetSearch.Instance && WidgetSearch.selected !=
null;
152 buttonGrid.Attach(
"guide",
false);
158 if (invOwnerEquip !=
null && invOwnerEquip.slot.elementId ==
WidgetEquip.dragEquip.category.slot)
160 buttonGrid.Attach(
"guide",
false);
167 buttonGrid.Attach(
"guide",
false);
170 else if (thing !=
null)
172 bool show =
InvOwner.Trader.ShouldShowGuide(thing);
173 if (!show && thing.CanSearchContents)
175 thing.things.Foreach(delegate(
Thing _t)
177 if (!show &&
InvOwner.Trader.ShouldShowGuide(_t))
185 buttonGrid.Attach(
"guide",
false);
197 return this.invs[0].tabs[0].owner;
202 public bool IsPlayerContainer(
bool includePlayer =
false)
204 return this.invs[0].tabs[0].mode == UIInventory.Mode.All && (includePlayer || this.invs[0].owner.Container !=
ELayer.pc) && this.invs[0].owner.Container.GetRootCard() ==
ELayer.pc;
208 public Card GetPlayerContainer()
211 if (!this.IsPlayerContainer(
false))
215 return tab.owner.Container;
219 public override bool HeaderIsListOf(
int id)
225 public override void OnInit()
229 uiinventory.OnInit();
232 if (this.Inv.Container ==
ELayer.pc)
234 InvOwner.Main = this.Inv;
238 InvOwner.Trader = this.Inv;
239 this.wasInventoryOpen =
ELayer.ui.IsInventoryOpen;
240 if (!this.wasInventoryOpen)
242 ELayer.ui.OpenFloatInv(
true);
248 public override void OnAfterInit()
250 ELayer.core.actionsNextFrame.Add(delegate
252 ELayer.core.actionsNextFrame.Add(delegate
254 if (this.invs[0] && this.invs[0].gameObject)
256 this.invs[0].RefreshHighlight();
266 uiinventory.window = this.windows[idWindow];
267 uiinventory.layer =
this;
272 public override void OnUpdateInput()
274 if (EInput.action == EAction.MenuInventory || Input.GetKeyDown(KeyCode.Tab))
277 EInput.WaitReleaseKey();
280 base.OnUpdateInput();
284 public override void OnKill()
287 EInput.haltInput =
false;
290 if (this.Inv.UseGuide)
294 InvOwner.Trader =
null;
295 if (!this.wasInventoryOpen &&
ELayer.ui.IsInventoryOpen)
297 ELayer.ui.ToggleInventory(
false);
300 if (this.Inv.Container ==
ELayer.pc)
302 InvOwner.Main =
null;
304 if (!
ELayer.game.isKilling &&
this.Inv.owner ==
ELayer.pc)
306 SE.Play(
"pop_inventory_deactivate");
311 private void OnDestroy()
318 public override void OnRightClick()
320 if (this.invs[0].isList)
324 if (!this.invs[0].floatMode && InputModuleEX.GetComponentOf<
ButtonGrid>() ==
null)
333 if (
ELayer.game.altInv && path.IsEmpty())
335 path =
"LayerInventoryGrid";
337 return Layer.Create(path.IsEmpty() ?
"LayerInventory" : (
"LayerInventory/" + path)) as
LayerInventory;
341 public static LayerInventory CreatePCBackpack(
bool mousePos =
false)
344 Window window = layerInventory.windows[0];
345 layerInventory.mainInv =
true;
346 window.setting.saveWindow =
true;
347 UIInventory uiinventory = layerInventory.SetInv(0);
349 uiinventory.SetHeader(
"stash");
350 uiinventory.floatMode =
true;
351 return layerInventory;
355 public static bool CloseAllyInv(
Chara c)
359 if (layerInventory.Inv.owner == c)
361 ELayer.ui.layerFloat.RemoveLayer(layerInventory);
369 public static void CloseAllyInv()
373 if (!layerInventory.IsPlayerContainer(
true))
375 ELayer.ui.layerFloat.RemoveLayer(layerInventory);
386 UIInventory uiinventory = layerInventory.SetInv(0);
387 Window window = layerInventory.windows[0];
388 window.buttonClose.SetActive(
true);
390 uiinventory.tabs[0].textTab = container.Name;
391 uiinventory.floatMode =
true;
392 if (
ELayer.player.windowAllyInv ==
null)
394 Vector2 sizeDelta = window.Rect().sizeDelta;
395 ELayer.player.windowAllyInv =
new Window.SaveData
401 anchor = RectPosition.Center,
402 useBG =
ELayer.core.config.game.showInvBG,
403 advDistribution =
false
406 window.saveData =
ELayer.player.windowAllyInv;
407 window.saveData.open =
true;
408 ELayer.ui.layerFloat.AddLayer(layerInventory);
409 window.ClampToScreen();
410 window.UpdateSaveData();
411 return layerInventory;
415 public static bool IsOpen(
Card container)
417 using (List<LayerInventory>.Enumerator enumerator =
LayerInventory.listInv.GetEnumerator())
419 while (enumerator.MoveNext())
421 if (enumerator.Current.GetPlayerContainer() == container)
436 if (layerInventory.GetPlayerContainer() == container)
438 ELayer.ui.layerFloat.RemoveLayer(layerInventory);
443 UIInventory uiinventory = layerInventory2.SetInv(0);
444 Window window = layerInventory2.windows[0];
445 Vector2 vector =
default(Vector2);
446 bool flag = container.c_windowSaveData ==
null;
447 window.buttonClose.SetActive(
true);
448 uiinventory.AddTab(
new InvOwner(
ELayer.pc, container.Thing, CurrencyType.None, PriceType.Default),
UIInventory.Mode.All);
449 uiinventory.tabs[0].textTab = container.Name;
450 uiinventory.floatMode =
true;
451 if (container.c_windowSaveData ==
null)
453 vector = window.Rect().anchoredPosition +
new Vector2(-80f, -80f);
454 Vector2 sizeDelta = window.Rect().sizeDelta;
455 container.c_windowSaveData =
new Window.SaveData
461 anchor = RectPosition.Auto,
462 useBG =
ELayer.core.config.game.showInvBG,
463 advDistribution =
false
465 if (container.trait.IsFridge)
467 container.c_windowSaveData.onlyRottable =
true;
470 if (container.IsToolbelt)
472 container.c_windowSaveData.useBG =
false;
474 window.saveData = container.c_windowSaveData;
475 window.saveData.open =
true;
476 if (container.IsToolbelt)
478 return layerInventory2;
480 ELayer.ui.layerFloat.AddLayer(layerInventory2);
483 RectTransform rectTransform = window.Rect();
484 RectTransform rectTransform2 =
null;
485 RectTransform rectTransform3 =
null;
488 if (!(layerInventory3 == layerInventory2) && layerInventory3.IsFloat)
490 RectTransform rectTransform4 = layerInventory3.windows[0].Rect();
491 if (!rectTransform3 || rectTransform4.Rect().localPosition.x < rectTransform3.Rect().localPosition.x)
493 rectTransform3 = rectTransform4;
495 if (!rectTransform2 || rectTransform4.Rect().localPosition.y > rectTransform2.Rect().localPosition.y)
497 rectTransform2 = rectTransform4;
501 if (uiinventory.tabs[0].owner.Container.things.width < 3 && rectTransform3)
503 rectTransform.anchorMin = rectTransform3.anchorMin;
504 rectTransform.anchorMax = rectTransform3.anchorMax;
505 vector.x = rectTransform3.anchoredPosition.x - rectTransform.sizeDelta.x - rectTransform3.sizeDelta.x * 0.5f + 35f;
506 vector.y = rectTransform3.anchoredPosition.y;
508 else if (rectTransform2)
510 rectTransform.anchorMin = rectTransform2.anchorMin;
511 rectTransform.anchorMax = rectTransform2.anchorMax;
512 vector.x = rectTransform2.anchoredPosition.x;
513 vector.y = rectTransform2.anchoredPosition.y + rectTransform.sizeDelta.y - 25f;
517 rectTransform.anchorMin =
new Vector2(0.5f, 0.5f);
518 rectTransform.anchorMax =
new Vector2(0.5f, 0.5f);
519 vector = Vector2.one;
521 rectTransform.anchoredPosition = vector;
522 window.ClampToScreen();
523 window.UpdateSaveData();
525 return layerInventory2;
531 if (owner.GetRootCard() ==
ELayer.pc)
535 Card container = owner;
538 container =
ELayer.game.cards.container_shipping;
539 ELayer.player.uidLastShippedZone =
ELayer._zone.uid;
543 container =
ELayer.game.cards.container_deliver;
552 if (container.isChara)
557 layerInventory.SetInv(0).AddTab(owner,
UIInventory.Mode.Take, container.Thing).dest =
ELayer.pc;
558 if (container.c_windowSaveData ==
null)
560 container.c_windowSaveData =
new Window.SaveData
564 if (container ==
ELayer.game.cards.container_shipping)
566 container.c_windowSaveData.autodump = AutodumpFlag.none;
569 layerInventory.windows[0].saveData = container.c_windowSaveData;
570 ELayer.ui.AddLayer(layerInventory);
571 return layerInventory;
578 UIInventory uiinventory = layerInventory.SetInv(0);
579 T t = Activator.CreateInstance(typeof(T),
new object[]
586 if (container.c_windowSaveData ==
null)
588 container.c_windowSaveData =
new Window.SaveData
593 layerInventory.windows[0].saveData = container.c_windowSaveData;
594 ELayer.ui.AddLayer(layerInventory);
595 return layerInventory;
599 public static LayerInventory CreateBuy(
Card c, CurrencyType currency = CurrencyType.Money, PriceType price = PriceType.Default)
602 UIInventory uiinventory = layerInventory.SetInv(0);
603 Thing thing = c.things.Find(
"chest_merchant", -1, -1);
604 SE.Play(
"shop_open");
607 if (Window.dictData.TryGetValue(
"ChestMerchant",
null) ==
null)
609 Window.dictData.Add(
"ChestMerchant",
new Window.SaveData
614 layerInventory.windows[0].saveData = thing.GetWindowSaveData();
615 uiinventory.tabs[0].owner.BuildUICurrency(layerInventory.uiCurrency, c.trait.CostRerollShop != 0);
618 trader = invOwnerShop
620 layerInventory.SetOnKill(
new Action(
ShopTransaction.current.OnEndTransaction));
621 return layerInventory;
625 public static List<LayerInventory> listInv =
new List<LayerInventory>();
628 public static InvOwner highlightInv;
631 public List<UIInventory> invs =
new List<UIInventory>();
637 public bool floatInv;
647 public bool wasInventoryOpen;