Files
ElvUIModernized/ElvUI/Modules/Skins/Blizzard/Craft.lua
T

164 lines
5.1 KiB
Lua

local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule("Skins");
--Cache global variables
--Lua functions
local _G = _G
local unpack = unpack
local find, match, split = string.find, string.match, string.split
--WoW API / Variables
local GetItemInfo = GetItemInfo
local GetItemQualityColor = GetItemQualityColor
local GetCraftReagentInfo = GetCraftReagentInfo
local GetCraftItemLink = GetCraftItemLink
local hooksecurefunc = hooksecurefunc
local function LoadSkin()
if E.private.skins.blizzard.enable ~= true or not E.private.skins.blizzard.craft ~= true then return end
E:StripTextures(CraftFrame, true)
E:CreateBackdrop(CraftFrame, "Transparent")
E:Point(CraftFrame.backdrop, "TOPLEFT", 10, -11)
E:Point(CraftFrame.backdrop, "BOTTOMRIGHT", -32, 74)
E:StripTextures(CraftRankFrameBorder)
E:Size(CraftRankFrame, 322, 16)
CraftRankFrame:ClearAllPoints()
E:Point(CraftRankFrame, "TOP", -10, -45)
E:CreateBackdrop(CraftRankFrame)
CraftRankFrame:SetStatusBarTexture(E["media"].normTex)
CraftRankFrame:SetStatusBarColor(0.13, 0.35, 0.80)
E:RegisterStatusBar(CraftRankFrame)
E:StripTextures(CraftExpandButtonFrame)
E:StripTextures(CraftDetailScrollChildFrame)
E:StripTextures(CraftListScrollFrame)
S:HandleScrollBar(CraftListScrollFrameScrollBar)
E:StripTextures(CraftDetailScrollFrame)
S:HandleScrollBar(CraftDetailScrollFrameScrollBar)
E:StripTextures(CraftIcon)
S:HandleButton(CraftCreateButton)
S:HandleButton(CraftCancelButton)
S:HandleCloseButton(CraftFrameCloseButton)
for i = 1, MAX_CRAFT_REAGENTS do
local reagent = _G["CraftReagent"..i]
local icon = _G["CraftReagent"..i.."IconTexture"]
local count = _G["CraftReagent"..i.."Count"]
local nameFrame = _G["CraftReagent"..i.."NameFrame"]
icon:SetTexCoord(unpack(E.TexCoords))
icon:SetDrawLayer("OVERLAY")
icon.backdrop = CreateFrame("Frame", nil, reagent)
icon.backdrop:SetFrameLevel(reagent:GetFrameLevel() - 1)
E:SetTemplate(icon.backdrop, "Default")
E:SetOutside(icon.backdrop, icon)
icon:SetParent(icon.backdrop)
count:SetParent(icon.backdrop)
count:SetDrawLayer("OVERLAY")
E:Kill(nameFrame)
end
hooksecurefunc("CraftFrame_SetSelection", function(id)
E:SetTemplate(CraftIcon, "Default", true)
E:StyleButton(CraftIcon, nil, true)
if CraftIcon:GetNormalTexture() then
CraftIcon:GetNormalTexture():SetTexCoord(unpack(E.TexCoords))
E:SetInside(CraftIcon:GetNormalTexture())
end
CraftIcon:SetWidth(40)
CraftIcon:SetHeight(40)
CraftIcon:SetPoint("TOPLEFT", 4, -3)
CraftRequirements:SetTextColor(1, 0.80, 0.10)
local skillLink = GetCraftItemLink(id)
if skillLink then
local _, _, quality = GetItemInfo(match(skillLink, "enchant:(%d+)"))
if quality then
CraftIcon:SetBackdropBorderColor(GetItemQualityColor(quality))
CraftName:SetTextColor(GetItemQualityColor(quality))
else
CraftIcon:SetBackdropBorderColor(unpack(E["media"].bordercolor))
CraftName:SetTextColor(1, 1, 1)
end
end
local numReagents = GetCraftNumReagents(id)
for i = 1, numReagents, 1 do
local icon = _G["CraftReagent"..i.."IconTexture"]
local name = _G["CraftReagent"..i.."Name"]
local _, _, reagentCount, playerReagentCount = GetCraftReagentInfo(id, i)
local reagentLink = GetCraftReagentItemLink(id, i)
if reagentLink then
local _, _, quality = GetItemInfo(match(reagentLink, "item:(%d+)"))
if quality then
icon.backdrop:SetBackdropBorderColor(GetItemQualityColor(quality))
if playerReagentCount < reagentCount then
name:SetTextColor(0.5, 0.5, 0.5)
else
name:SetTextColor(GetItemQualityColor(quality))
end
else
icon.backdrop:SetBackdropBorderColor(unpack(E["media"].bordercolor))
end
end
end
end)
for i = 1, CRAFTS_DISPLAYED do
local craftButton = _G["Craft"..i]
craftButton:SetNormalTexture("")
craftButton.SetNormalTexture = E.noop
_G["Craft"..i.."Highlight"]:SetTexture("")
_G["Craft"..i.."Highlight"].SetTexture = E.noop
craftButton.Text = craftButton:CreateFontString(nil, "OVERLAY")
E:FontTemplate(craftButton.Text, nil, 22)
craftButton.Text:SetPoint("LEFT", 3, 0)
craftButton.Text:SetText("+")
hooksecurefunc(craftButton, "SetNormalTexture", function(self, texture)
if find(texture, "MinusButton") then
self.Text:SetText("-")
elseif find(texture, "PlusButton") then
self.Text:SetText("+")
else
self.Text:SetText("")
end
end)
end
CraftCollapseAllButton:SetNormalTexture("")
CraftCollapseAllButton.SetNormalTexture = E.noop
CraftCollapseAllButton:SetHighlightTexture("")
CraftCollapseAllButton.SetHighlightTexture = E.noop
CraftCollapseAllButton:SetDisabledTexture("")
CraftCollapseAllButton.SetDisabledTexture = E.noop
CraftCollapseAllButton.Text = CraftCollapseAllButton:CreateFontString(nil, "OVERLAY")
E:FontTemplate(CraftCollapseAllButton.Text, nil, 22)
CraftCollapseAllButton.Text:SetPoint("LEFT", 3, 0)
CraftCollapseAllButton.Text:SetText("+")
hooksecurefunc(CraftCollapseAllButton, "SetNormalTexture", function(self, texture)
if find(texture, "MinusButton") then
self.Text:SetText("-")
else
self.Text:SetText("+")
end
end)
end
S:AddCallbackForAddon("Blizzard_CraftUI", "Craft", LoadSkin)