Add splitstack frame, without the retarded max purchase limits the default vendor frame uses
This commit is contained in:
parent
a314501291
commit
116ed29732
|
@ -30,15 +30,26 @@ local function OnClick(self, button)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
local function BuyItem(self, fullstack)
|
local function PopoutOnClick(self, button)
|
||||||
local id = self:GetID()
|
local id = self:GetParent():GetID()
|
||||||
local link = GetMerchantItemLink(id)
|
local link = GetMerchantItemLink(id)
|
||||||
if not link then return end
|
if not link then return end
|
||||||
|
|
||||||
local _, _, _, vendorStackSize, numAvailable = GetMerchantItemInfo(id)
|
local _, _, _, vendorStackSize, numAvailable = GetMerchantItemInfo(id)
|
||||||
local maxPurchase = GetMerchantItemMaxStack(id)
|
local maxPurchase = GetMerchantItemMaxStack(id)
|
||||||
local _, _, _, _, _, _, _, itemStackSize = GetItemInfo(link)
|
local _, _, _, _, _, _, _, itemStackSize = GetItemInfo(link)
|
||||||
local quantity = fullstack and itemStackSize/vendorStackSize or 1
|
|
||||||
|
local size = numAvailable > 0 and numAvailable or itemStackSize
|
||||||
|
-- OpenStackSplitFrame(size, self, "LEFT", "RIGHT")
|
||||||
|
OpenStackSplitFrame(250, self, "LEFT", "RIGHT")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local function Purchase(id, quantity)
|
||||||
|
local _, _, _, vendorStackSize, numAvailable = GetMerchantItemInfo(id)
|
||||||
|
local maxPurchase = GetMerchantItemMaxStack(id)
|
||||||
|
quantity = quantity/vendorStackSize
|
||||||
|
|
||||||
if numAvailable > 0 and numAvailable < quantity then quantity = numAvailable end
|
if numAvailable > 0 and numAvailable < quantity then quantity = numAvailable end
|
||||||
local purchased = 0
|
local purchased = 0
|
||||||
while purchased < quantity do
|
while purchased < quantity do
|
||||||
|
@ -49,6 +60,21 @@ local function BuyItem(self, fullstack)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local function BuyItem(self, fullstack)
|
||||||
|
local id = self:GetID()
|
||||||
|
local link = GetMerchantItemLink(id)
|
||||||
|
if not link then return end
|
||||||
|
|
||||||
|
local _, _, _, _, _, _, _, stack = GetItemInfo(link)
|
||||||
|
Purchase(id, fullstack and stack or 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local function PopoutSplitStack(self, qty)
|
||||||
|
Purchase(self:GetParent():GetID(), qty)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
local function OnEnter(self)
|
local function OnEnter(self)
|
||||||
GameTooltip:SetOwner(self, "ANCHOR_RIGHT")
|
GameTooltip:SetOwner(self, "ANCHOR_RIGHT")
|
||||||
if self.tiptext then GameTooltip:SetText(self.tiptext) else GameTooltip:SetMerchantCostItem(self.index, self.itemIndex) end
|
if self.tiptext then GameTooltip:SetText(self.tiptext) else GameTooltip:SetMerchantCostItem(self.index, self.itemIndex) end
|
||||||
|
@ -94,7 +120,7 @@ local function GetAltCurrencyFrame(frame)
|
||||||
local anchor = #frame.altframes > 0 and frame.altframes[#frame.altframes].text
|
local anchor = #frame.altframes > 0 and frame.altframes[#frame.altframes].text
|
||||||
local f = CreateFrame('Frame', nil, frame)
|
local f = CreateFrame('Frame', nil, frame)
|
||||||
f:SetWidth(ICONSIZE) f:SetHeight(ICONSIZE)
|
f:SetWidth(ICONSIZE) f:SetHeight(ICONSIZE)
|
||||||
f:SetPoint("RIGHT", anchor or frame.ItemPrice, "LEFT")
|
f:SetPoint("RIGHT", anchor or frame.popout, "LEFT")
|
||||||
|
|
||||||
f.icon = f:CreateTexture()
|
f.icon = f:CreateTexture()
|
||||||
f.icon:SetWidth(ICONSIZE) f.icon:SetHeight(ICONSIZE)
|
f.icon:SetWidth(ICONSIZE) f.icon:SetHeight(ICONSIZE)
|
||||||
|
@ -136,10 +162,11 @@ local function AddAltCurrency(frame, i)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local ROWHEIGHT = 21
|
||||||
local rows = {}
|
local rows = {}
|
||||||
for i=1,NUMROWS do
|
for i=1,NUMROWS do
|
||||||
local row = CreateFrame('Button', nil, GVS) -- base frame
|
local row = CreateFrame('Button', nil, GVS) -- base frame
|
||||||
row:SetHeight(21)
|
row:SetHeight(ROWHEIGHT)
|
||||||
row:SetPoint("TOP", i == 1 and GVS or rows[i-1], i == 1 and "TOP" or "BOTTOM")
|
row:SetPoint("TOP", i == 1 and GVS or rows[i-1], i == 1 and "TOP" or "BOTTOM")
|
||||||
row:SetPoint("LEFT")
|
row:SetPoint("LEFT")
|
||||||
row:SetPoint("RIGHT", -19, 0)
|
row:SetPoint("RIGHT", -19, 0)
|
||||||
|
@ -174,8 +201,19 @@ for i=1,NUMROWS do
|
||||||
ItemName:SetJustifyH('LEFT')
|
ItemName:SetJustifyH('LEFT')
|
||||||
row.ItemName = ItemName
|
row.ItemName = ItemName
|
||||||
|
|
||||||
|
local popout = CreateFrame("Button", nil, row)
|
||||||
|
popout:SetPoint("RIGHT")
|
||||||
|
popout:SetWidth(ROWHEIGHT/2) popout:SetHeight(ROWHEIGHT)
|
||||||
|
popout:SetNormalTexture("Interface\\PaperDollInfoFrame\\UI-GearManager-FlyoutButton")
|
||||||
|
popout:SetHighlightTexture("Interface\\PaperDollInfoFrame\\UI-GearManager-FlyoutButton")
|
||||||
|
popout:GetNormalTexture():SetTexCoord(0.15625, 0.5, 0.84375, 0.5, 0.15625, 0, 0.84375, 0)
|
||||||
|
popout:GetHighlightTexture():SetTexCoord(0.15625, 1, 0.84375, 1, 0.15625, 0.5, 0.84375, 0.5)
|
||||||
|
popout:SetScript("OnClick", PopoutOnClick)
|
||||||
|
popout.SplitStack = PopoutSplitStack
|
||||||
|
row.popout = popout
|
||||||
|
|
||||||
local ItemPrice = row:CreateFontString(nil, nil, "NumberFontNormalSmall")
|
local ItemPrice = row:CreateFontString(nil, nil, "NumberFontNormalSmall")
|
||||||
ItemPrice:SetPoint('RIGHT', row, -2, 0)
|
ItemPrice:SetPoint('RIGHT', popout, "LEFT", -2, 0)
|
||||||
row.ItemPrice = ItemPrice
|
row.ItemPrice = ItemPrice
|
||||||
|
|
||||||
row.altframes = {}
|
row.altframes = {}
|
||||||
|
|
Loading…
Reference in New Issue