Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ HandleShopSlot()

static void Terraria.UI.ItemSlot.HandleShopSlot ( Item[] inv,
int slot,
bool rightClickIsValid,
bool leftClickIsValid )
inlinestaticprivate

Definition at line 1718 of file ItemSlot.cs.

1719 {
1720 if (Main.cursorOverride == 2)
1721 {
1722 return;
1723 }
1724 _ = Main.instance.shop[Main.npcShop];
1725 bool flag = (Main.mouseRight && rightClickIsValid) || (Main.mouseLeft && leftClickIsValid);
1726 if (!(Main.stackSplit <= 1 && flag) || inv[slot].type <= 0 || (!Main.mouseItem.IsTheSameAs(inv[slot]) && Main.mouseItem.type != 0))
1727 {
1728 return;
1729 }
1730 int num = Main.superFastStack + 1;
1731 Player localPlayer = Main.LocalPlayer;
1732 for (int i = 0; i < num; i++)
1733 {
1734 if (Main.mouseItem.stack >= Main.mouseItem.maxStack && Main.mouseItem.type != 0)
1735 {
1736 continue;
1737 }
1738 localPlayer.GetItemExpectedPrice(inv[slot], out var _, out var calcForBuying);
1739 if (!localPlayer.BuyItem(calcForBuying, inv[slot].shopSpecialCurrency) || inv[slot].stack <= 0)
1740 {
1741 continue;
1742 }
1743 if (i == 0)
1744 {
1745 if (inv[slot].value > 0)
1746 {
1748 }
1749 else
1750 {
1752 }
1753 }
1754 if (Main.mouseItem.type == 0)
1755 {
1756 Main.mouseItem.netDefaults(inv[slot].netID);
1757 if (inv[slot].prefix != 0)
1758 {
1759 Main.mouseItem.Prefix(inv[slot].prefix);
1760 }
1761 Main.mouseItem.stack = 0;
1762 }
1763 if (!inv[slot].buyOnce)
1764 {
1765 Main.shopSellbackHelper.Add(inv[slot]);
1766 }
1767 Main.mouseItem.stack++;
1769 if (inv[slot].buyOnce && --inv[slot].stack <= 0)
1770 {
1771 inv[slot].SetDefaults();
1772 }
1773 AnnounceTransfer(new ItemTransferInfo(Main.mouseItem, 15, 21));
1774 }
1775 }
static void PlaySound(int type, Vector2 position, int style=1)
static void AnnounceTransfer(ItemTransferInfo info)
Definition ItemSlot.cs:241
static void RefreshStackSplitCooldown()
Definition ItemSlot.cs:1478

References Terraria.UI.ItemSlot.AnnounceTransfer(), Terraria.Player.BuyItem(), Terraria.Main.cursorOverride, Terraria.Player.GetItemExpectedPrice(), Terraria.Main.instance, Terraria.Main.LocalPlayer, Terraria.Main.mouseItem, Terraria.Main.mouseLeft, Terraria.Main.npcShop, Terraria.Audio.SoundEngine.PlaySound(), System.prefix, Terraria.UI.ItemSlot.RefreshStackSplitCooldown(), Terraria.Item.SetDefaults(), Terraria.Main.shopSellbackHelper, Terraria.Item.shopSpecialCurrency, Terraria.Item.stack, Terraria.Main.stackSplit, Terraria.Item.type, and System.value.

Referenced by Terraria.UI.ItemSlot.LeftClick(), and Terraria.UI.ItemSlot.RightClick().