public static void FillWithPickedItem(BagItem bagSlot, int maxCount) { var items = bagSlot.GetBagItems(BaseBagItem.MouseOnBagIndex); if (items.ContainsKey(bagSlot.index)) { var maxHold = ConfigItem.getMaxCount(items[bagSlot.index].id); if (items[bagSlot.index].id == BaseBag.PickItem.id && maxHold > 1) { var sent = Mathf.Min(maxHold - items[bagSlot.index].count, BaseBag.PickItem.count, maxCount); BaseBag.PickItem.count -= sent; items[bagSlot.index].count += sent; } else { var temp = BaseBag.PickItem; BaseBag.PickItem = items[bagSlot.index]; items[bagSlot.index] = temp; } } else { items[bagSlot.index] = new ItemData(BaseBag.PickItem); var sent = Mathf.Min(maxCount, BaseBag.PickItem.count); items[bagSlot.index].count = sent; BaseBag.PickItem.count -= sent; } bagSlot.ShowItemInfo(); BaseBag.ShowPickItem(); }
public void CloseUI(BaseBag bag) { BaseElement element = (BaseElement)bag.UI; ContainerLibrary.ContainerLibrary.ItemHandlerUI.Remove((IItemHandlerUI)element); Main.LocalPlayer.GetModPlayer <PSPlayer>().UIPositions[bag.ID] = element.Position; Elements.Remove(element); bag.UI = null; Main.PlaySound(bag.CloseSound); }
public override void ProcessTriggers(TriggersSet triggersSet) { if (PortableStorage.bagKey.JustPressed) { Item item = AccessoryItems.FirstOrDefault(x => x.modItem is BaseBag); if (item?.modItem is BaseBag) { BaseBag bag = (BaseBag)item.modItem; bag.HandleUI(); } } }
public BaseBagPanel(BaseBag bag) : base((T)bag) { UIText textLabel = new UIText(Container.DisplayName.GetTranslation()) { X = { Percent = 50 }, HorizontalAlignment = HorizontalAlignment.Center }; Add(textLabel); UIButton buttonLootAll = new UIButton(PortableStorage.textureLootAll) { Size = new Vector2(20), HoverText = Language.GetText("LegacyInterface.29") }; buttonLootAll.OnClick += args => ItemUtility.LootAll(Container.Handler, Main.LocalPlayer); Add(buttonLootAll); UIButton buttonDepositAll = new UIButton(PortableStorage.textureDepositAll) { Size = new Vector2(20), X = { Pixels = 28 }, HoverText = Language.GetText("LegacyInterface.30") }; buttonDepositAll.OnClick += args => ItemUtility.DepositAll(Container.Handler, Main.LocalPlayer); Add(buttonDepositAll); buttonQuickStack = new UIButton(PortableStorage.textureQuickStack) { Size = new Vector2(20), X = { Pixels = 56 }, HoverText = Language.GetText("LegacyInterface.31") }; buttonQuickStack.OnClick += args => ItemUtility.QuickStack(Container.Handler, Main.LocalPlayer); Add(buttonQuickStack); UITextButton buttonClose = new UITextButton("X") { Size = new Vector2(20), X = { Percent = 100 }, Padding = Padding.Zero, RenderPanel = false }; buttonClose.OnClick += args => PanelUI.Instance.CloseUI(Container); Add(buttonClose); }
public void HandleUI(BaseBag bag) { if (bag.UI != null || PortableStorage.Instance.BagCache.Contains(bag.ID)) { if (bag.UI != null) { CloseUI(bag); } else { PortableStorage.Instance.BagCache.Remove(bag.ID); } } else { Main.playerInventory = true; OpenUI(bag); } }
public void OpenUI(BaseBag bag) { Type bagType = UICache.ContainsKey(bag.GetType()) ? bag.GetType() : bag.GetType().BaseType; bag.UI = (IBagPanel)Activator.CreateInstance(UICache[bagType]); bag.UI.ID = bag.ID; BaseElement element = (BaseElement)bag.UI; element.Activate(); if (Main.LocalPlayer.GetModPlayer <PSPlayer>().UIPositions.TryGetValue(bag.ID, out Vector2 position)) { element.HAlign = element.VAlign = 0; element.Position = position; } Append(element); ContainerLibrary.ContainerLibrary.ItemHandlerUI.Add((IItemHandlerUI)element); Main.PlaySound(bag.OpenSound); }
public BaseBagPanel(BaseBag bag) : base((T)bag) { UIText textLabel = new UIText(Container.Item.Name) { X = { Percent = 50 }, Settings = { HorizontalAlignment = HorizontalAlignment.Center } }; Add(textLabel); // UIButton buttonLootAll = new UIButton(PortableStorage.textureLootAll) // { // Size = new Vector2(20), // HoverText = Language.GetText("LegacyInterface.29") // }; // buttonLootAll.OnClick += args => ItemUtility.LootAll(Container.Handler, Main.LocalPlayer); // Add(buttonLootAll); // // UIButton buttonDepositAll = new UIButton(PortableStorage.textureDepositAll) // { // Size = new Vector2(20), // X = { Pixels = 28 }, // HoverText = Language.GetText("LegacyInterface.30") // }; // buttonDepositAll.OnClick += args => ItemUtility.DepositAll(Container.Handler, Main.LocalPlayer); // Add(buttonDepositAll); // // buttonQuickStack = new UIButton(PortableStorage.textureQuickStack) // { // Size = new Vector2(20), // X = { Pixels = 56 }, // HoverText = Language.GetText("LegacyInterface.31") // }; // buttonQuickStack.OnClick += args => ItemUtility.QuickStack(Container.Handler, Main.LocalPlayer); // Add(buttonQuickStack); var localPickupOn = Language.GetText("Mods.PortableStorage.UI.PickupToggleOn"); var localPickupOff = Language.GetText("Mods.PortableStorage.UI.PickupToggleOff"); Main.instance.LoadItem(ItemID.TreasureMagnet); UITexture buttonPickup = new UITexture(TextureAssets.Item[ItemID.TreasureMagnet]) { Settings = { ScaleMode = ScaleMode.Stretch }, Height = { Pixels = 20 }, Width = { Pixels = 20 }, X = { Percent = 100, Pixels = -28 }, HoverText = bag.EnablePickup ? localPickupOff : localPickupOn }; buttonPickup.OnClick += args => { bag.EnablePickup = !bag.EnablePickup; buttonPickup.HoverText = bag.EnablePickup ? localPickupOff : localPickupOn; SoundEngine.PlaySound(SoundID.MenuTick); args.Handled = true; }; Add(buttonPickup); UIText buttonClose = new UIText("X") { Height = { Pixels = 20 }, Width = { Pixels = 20 }, X = { Percent = 100 }, HoverText = Language.GetText("Mods.PortableStorage.UI.Close") }; buttonClose.OnClick += args => { PanelUI.Instance.CloseUI(Container); args.Handled = true; }; buttonClose.OnMouseEnter += _ => buttonClose.Settings.TextColor = Color.Red; buttonClose.OnMouseLeave += _ => buttonClose.Settings.TextColor = Color.White; Add(buttonClose); }