Split row color logic out into its own file
This commit is contained in:
parent
8d2d5629cb
commit
9c853b301e
|
@ -43,7 +43,6 @@ local function PopoutOnClick(self, button)
|
||||||
local _, _, _, _, _, _, _, itemStackSize = GetItemInfo(link)
|
local _, _, _, _, _, _, _, itemStackSize = GetItemInfo(link)
|
||||||
|
|
||||||
local size = numAvailable > 0 and numAvailable or itemStackSize
|
local size = numAvailable > 0 and numAvailable or itemStackSize
|
||||||
-- OpenStackSplitFrame(size, self, "LEFT", "RIGHT")
|
|
||||||
OpenStackSplitFrame(250, self, "LEFT", "RIGHT")
|
OpenStackSplitFrame(250, self, "LEFT", "RIGHT")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -227,71 +226,18 @@ for i=1,NUMROWS do
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
local RECIPE = GetItemClassInfo(LE_ITEM_CLASS_RECIPE)
|
|
||||||
local MISC = GetItemClassInfo(LE_ITEM_CLASS_MISCELLANEOUS)
|
|
||||||
local GARRISON_ICON = {[1001489] = true, [1001490] = true, [1001491] = true}
|
|
||||||
local function Knowable(link)
|
|
||||||
local name, link2, quality, iLevel, reqLevel, class, subclass, maxStack, equipSlot, texture, vendorPrice = GetItemInfo(link)
|
|
||||||
local id = ns.ids[link]
|
|
||||||
|
|
||||||
if C_Heirloom.IsItemHeirloom(id) then return true end
|
|
||||||
if class == MISC and select(2, C_ToyBox.GetToyInfo(id)) then return true end
|
|
||||||
if class == RECIPE or GARRISON_ICON[texture] then return true end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local function RecipeNeedsRank(link)
|
|
||||||
local _, _, _, _, _, class = GetItemInfo(link)
|
|
||||||
if class ~= RECIPE then return end
|
|
||||||
return ns.unmet_requirements[link]
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local default_grad = {0,1,0,0.75, 0,1,0,0} -- green
|
|
||||||
local grads = setmetatable({
|
|
||||||
red = {1,0,0,0.75, 1,0,0,0},
|
|
||||||
[1] = {1,1,1,0.75, 1,1,1,0}, -- white
|
|
||||||
[2] = default_grad, -- green
|
|
||||||
[3] = {0.5,0.5,1,1, 0,0,1,0}, -- blue
|
|
||||||
[4] = {1,0,1,0.75, 1,0,1,0}, -- purple
|
|
||||||
[7] = {1,.75,.5,0.75, 1,.75,.5,0}, -- heirloom
|
|
||||||
}, {__index = function(t,i) t[i] = default_grad return default_grad end})
|
|
||||||
local quality_colors = setmetatable({}, {__index = function() return "|cffffffff" end})
|
|
||||||
for i=0,7 do quality_colors[i] = "|c".. select(4, GetItemQualityColor(i)) end
|
|
||||||
|
|
||||||
local function ShowMerchantItem(row, i)
|
local function ShowMerchantItem(row, i)
|
||||||
local name, itemTexture, itemPrice, itemStackCount, numAvailable, isUsable, extendedCost = GetMerchantItemInfo(i)
|
local name, itemTexture, itemPrice, itemStackCount, numAvailable, isUsable, extendedCost = GetMerchantItemInfo(i)
|
||||||
local link = GetMerchantItemLink(i)
|
local link = GetMerchantItemLink(i)
|
||||||
local color = quality_colors.default
|
|
||||||
row.backdrop:Hide()
|
|
||||||
|
|
||||||
if not isUsable then
|
local gradient, shown = ns.GetRowGradient(i)
|
||||||
row.backdrop:SetGradientAlpha("HORIZONTAL", unpack(grads.red))
|
row.backdrop:SetGradientAlpha("HORIZONTAL", unpack(gradient))
|
||||||
row.backdrop:Show()
|
row.backdrop:SetShown(shown)
|
||||||
end
|
|
||||||
|
|
||||||
if link then
|
|
||||||
local name, link2, quality, iLevel, reqLevel, class, subclass, maxStack, equipSlot, texture, vendorPrice = GetItemInfo(link)
|
|
||||||
local id = ns.ids[link]
|
|
||||||
local is_heirloom = C_Heirloom.IsItemHeirloom(id)
|
|
||||||
color = quality_colors[quality]
|
|
||||||
|
|
||||||
if Knowable(link) then
|
|
||||||
if ns.knowns[link] then
|
|
||||||
color = quality_colors[0]
|
|
||||||
row.backdrop:Hide()
|
|
||||||
elseif RecipeNeedsRank(link) then
|
|
||||||
row.backdrop:SetGradientAlpha("HORIZONTAL", unpack(grads.red))
|
|
||||||
row.backdrop:Show()
|
|
||||||
else
|
|
||||||
row.backdrop:SetGradientAlpha("HORIZONTAL", unpack(grads[quality]))
|
|
||||||
row.backdrop:Show()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
row.icon:SetTexture(itemTexture)
|
row.icon:SetTexture(itemTexture)
|
||||||
row.ItemName:SetText((numAvailable > -1 and ("["..numAvailable.."] ") or "").. color.. (name or "<Loading item data>").. (itemStackCount > 1 and ("|r x"..itemStackCount) or ""))
|
|
||||||
|
local textcolor = ns.GetRowTextColor(i)
|
||||||
|
row.ItemName:SetText((numAvailable > -1 and ("["..numAvailable.."] ") or "").. textcolor.. (name or "<Loading item data>").. (itemStackCount > 1 and ("|r x"..itemStackCount) or ""))
|
||||||
|
|
||||||
for i,v in pairs(row.altframes) do v:Hide() end
|
for i,v in pairs(row.altframes) do v:Hide() end
|
||||||
row.altcurrency = extendedCost
|
row.altcurrency = extendedCost
|
||||||
|
@ -313,7 +259,8 @@ local function ShowMerchantItem(row, i)
|
||||||
row.extendedCost = nil
|
row.extendedCost = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if isUsable then row.icon:SetVertexColor(1, 1, 1) else row.icon:SetVertexColor(.9, 0, 0) end
|
row.icon:SetVertexColor(ns.GetRowVertexColor(i))
|
||||||
|
|
||||||
row:SetID(i)
|
row:SetID(i)
|
||||||
row:Show()
|
row:Show()
|
||||||
end
|
end
|
||||||
|
|
|
@ -17,5 +17,6 @@ tekFunks\gsc.lua
|
||||||
tekKonfig\tekKonfig.xml
|
tekKonfig\tekKonfig.xml
|
||||||
LibItemSearch-1.0.lua
|
LibItemSearch-1.0.lua
|
||||||
|
|
||||||
|
RowShader.lua
|
||||||
KnownScanner.lua
|
KnownScanner.lua
|
||||||
GnomishVendorShrinker.lua
|
GnomishVendorShrinker.lua
|
||||||
|
|
|
@ -0,0 +1,95 @@
|
||||||
|
|
||||||
|
local myname, ns = ...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
local RECIPE = GetItemClassInfo(LE_ITEM_CLASS_RECIPE)
|
||||||
|
local MISC = GetItemClassInfo(LE_ITEM_CLASS_MISCELLANEOUS)
|
||||||
|
local GARRISON_ICONS = {[1001489] = true, [1001490] = true, [1001491] = true}
|
||||||
|
|
||||||
|
|
||||||
|
local function Knowable(link)
|
||||||
|
local id = ns.ids[link]
|
||||||
|
if C_Heirloom.IsItemHeirloom(id) then return true end
|
||||||
|
|
||||||
|
local _, _, _, _, _, class, _, _, _, texture = GetItemInfo(link)
|
||||||
|
if class == MISC and select(2, C_ToyBox.GetToyInfo(id)) then return true end
|
||||||
|
if class == RECIPE or GARRISON_ICONS[texture] then return true end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local function RecipeNeedsRank(link)
|
||||||
|
local _, _, _, _, _, class = GetItemInfo(link)
|
||||||
|
if class ~= RECIPE then return end
|
||||||
|
return ns.unmet_requirements[link]
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local DEFAULT_GRAD = {0,1,0,0.75, 0,1,0,0} -- green
|
||||||
|
local GRADS = {
|
||||||
|
red = {1,0,0,0.75, 1,0,0,0},
|
||||||
|
[1] = {1,1,1,0.75, 1,1,1,0}, -- white
|
||||||
|
[2] = DEFAULT_GRAD, -- green
|
||||||
|
[3] = {0.5,0.5,1,1, 0,0,1,0}, -- blue
|
||||||
|
[4] = {1,0,1,0.75, 1,0,1,0}, -- purple
|
||||||
|
[7] = {1,.75,.5,0.75, 1,.75,.5,0}, -- heirloom
|
||||||
|
}
|
||||||
|
GRADS = setmetatable(GRADS, {
|
||||||
|
__index = function(t,i)
|
||||||
|
t[i] = DEFAULT_GRAD
|
||||||
|
return DEFAULT_GRAD
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
function ns.GetRowGradient(index)
|
||||||
|
local gradient = DEFAULT_GRAD
|
||||||
|
local shown = false
|
||||||
|
|
||||||
|
local _, _, _, _, _, isUsable = GetMerchantItemInfo(index)
|
||||||
|
if not isUsable then
|
||||||
|
gradient = GRADS.red
|
||||||
|
shown = true
|
||||||
|
end
|
||||||
|
|
||||||
|
local link = GetMerchantItemLink(index)
|
||||||
|
if not (link and Knowable(link)) then return gradient, shown end
|
||||||
|
|
||||||
|
if ns.knowns[link] then
|
||||||
|
return gradient, false
|
||||||
|
elseif RecipeNeedsRank(link) then
|
||||||
|
return GRADS.red, true
|
||||||
|
else
|
||||||
|
return GRADS[quality], true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local QUALITY_COLORS = setmetatable({}, {
|
||||||
|
__index = function(t,i)
|
||||||
|
-- GetItemQualityColor only takes numbers, so fall back to white
|
||||||
|
local _, _, _, hex = GetItemQualityColor(tonumber(i) or 1)
|
||||||
|
t[i] = "|c".. hex
|
||||||
|
return "|c".. hex
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
function ns.GetRowTextColor(index)
|
||||||
|
local link = GetMerchantItemLink(index)
|
||||||
|
if not link then return QUALITY_COLORS.default end
|
||||||
|
|
||||||
|
-- Grey out if already known
|
||||||
|
if Knowable(link) and ns.knowns[link] then return QUALITY_COLORS[0] end
|
||||||
|
|
||||||
|
local _, _, quality = GetItemInfo(link)
|
||||||
|
return QUALITY_COLORS[quality]
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function ns.GetRowVertexColor(index)
|
||||||
|
local _, _, _, _, _, isUsable = GetMerchantItemInfo(index)
|
||||||
|
if isUsable then return 1.0, 1.0, 1.0
|
||||||
|
else return 0.9, 0.0, 0.0
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue