Add splitstack frame, without the retarded max purchase limits the default vendor frame uses

This commit is contained in:
tekkub 2009-08-23 15:52:16 -06:00
parent a314501291
commit 116ed29732
1 changed files with 44 additions and 6 deletions

View File

@ -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 = {}