437 lines
14 KiB
Lua
437 lines
14 KiB
Lua
local E, L, V, P, G = unpack(select(2, ...)) --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
|
local S = E:GetModule("Skins")
|
|
|
|
--Lua functions
|
|
local _G = _G
|
|
local select = select
|
|
local unpack = unpack
|
|
local find, gsub = string.find, string.gsub
|
|
--WoW API / Variables
|
|
local GetItemInfo = GetItemInfo
|
|
local GetItemQualityColor = GetItemQualityColor
|
|
local GetMoney = GetMoney
|
|
local GetNumQuestLeaderBoards = GetNumQuestLeaderBoards
|
|
local GetQuestItemLink = GetQuestItemLink
|
|
local GetQuestLogItemLink = GetQuestLogItemLink
|
|
local GetQuestLogLeaderBoard = GetQuestLogLeaderBoard
|
|
local GetQuestLogRequiredMoney = GetQuestLogRequiredMoney
|
|
local hooksecurefunc = hooksecurefunc
|
|
local GetQuestMoneyToGet = GetQuestMoneyToGet
|
|
|
|
local MAX_NUM_ITEMS = MAX_NUM_ITEMS
|
|
local MAX_REPUTATIONS = MAX_REPUTATIONS
|
|
|
|
S:AddCallback("Skin_Quest", function()
|
|
if not E.private.skins.blizzard.enable or not E.private.skins.blizzard.quest then return end
|
|
|
|
QuestLogFrame:StripTextures()
|
|
QuestLogFrame:CreateBackdrop("Transparent")
|
|
QuestLogFrame.backdrop:Point("TOPLEFT", 11, -12)
|
|
QuestLogFrame.backdrop:Point("BOTTOMRIGHT", -1, 11)
|
|
|
|
S:SetUIPanelWindowInfo(QuestLogFrame, "width")
|
|
S:SetBackdropHitRect(QuestLogFrame)
|
|
|
|
S:HandleCloseButton(QuestLogFrameCloseButton, QuestLogFrame.backdrop)
|
|
|
|
QuestLogCount:StripTextures()
|
|
QuestLogCount:CreateBackdrop("Transparent")
|
|
QuestLogCount.backdrop:Point("TOPLEFT", -1, 0)
|
|
QuestLogCount.backdrop:Point("BOTTOMRIGHT", 1, -4)
|
|
|
|
QuestLogFrameShowMapButton:StripTextures()
|
|
S:HandleButton(QuestLogFrameShowMapButton)
|
|
|
|
QuestLogScrollFrame:CreateBackdrop("Transparent")
|
|
QuestLogScrollFrame.backdrop:Point("TOPLEFT", 0, 2)
|
|
QuestLogScrollFrame.backdrop:Point("BOTTOMRIGHT", 0, -2)
|
|
|
|
QuestLogDetailScrollFrame:StripTextures()
|
|
QuestLogDetailScrollFrame:CreateBackdrop("Transparent")
|
|
QuestLogDetailScrollFrame.backdrop:Point("TOPLEFT", 0, 1)
|
|
QuestLogDetailScrollFrame.backdrop:Point("BOTTOMRIGHT", 0, -2)
|
|
|
|
EmptyQuestLogFrame:StripTextures()
|
|
|
|
S:HandleButton(QuestLogFrameAbandonButton)
|
|
S:HandleButton(QuestLogFramePushQuestButton)
|
|
S:HandleButton(QuestLogFrameTrackButton)
|
|
S:HandleButton(QuestLogFrameCancelButton)
|
|
|
|
QuestLogSkillHighlight:SetTexture(E.Media.Textures.Highlight)
|
|
QuestLogSkillHighlight:SetAlpha(0.35)
|
|
|
|
S:HandleScrollBar(QuestLogScrollFrameScrollBar)
|
|
S:HandleScrollBar(QuestLogDetailScrollFrameScrollBar)
|
|
S:HandleScrollBar(QuestDetailScrollFrameScrollBar)
|
|
S:HandleScrollBar(QuestProgressScrollFrameScrollBar)
|
|
S:HandleScrollBar(QuestRewardScrollFrameScrollBar)
|
|
|
|
QuestLogCount:ClearAllPoints()
|
|
QuestLogCount:Point("BOTTOMLEFT", QuestLogScrollFrame, "TOPLEFT", 1, 13)
|
|
QuestLogCount.SetPoint = E.noop
|
|
|
|
QuestLogFrameShowMapButton.text:ClearAllPoints()
|
|
QuestLogFrameShowMapButton.text:Point("CENTER")
|
|
QuestLogFrameShowMapButton:Size(QuestLogFrameShowMapButton.text:GetWidth() + 32, 32)
|
|
|
|
QuestLogScrollFrame:Point("TOPLEFT", 19, -62)
|
|
|
|
QuestLogScrollFrameScrollBar:Point("TOPLEFT", QuestLogScrollFrame, "TOPRIGHT", 3, -17)
|
|
QuestLogScrollFrameScrollBar:Point("BOTTOMLEFT", QuestLogScrollFrame, "BOTTOMRIGHT", 3, 17)
|
|
|
|
QuestLogDetailScrollFrame:Width(304)
|
|
QuestLogDetailScrollFrame.Hide = E.noop
|
|
QuestLogDetailScrollFrame:Show()
|
|
|
|
QuestLogFrameTrackButton:Height(22)
|
|
QuestLogFrameAbandonButton:Height(22)
|
|
QuestLogFramePushQuestButton:Height(22)
|
|
|
|
QuestLogFrameTrackButton:Point("RIGHT", -1, 2)
|
|
QuestLogFrameAbandonButton:Point("LEFT", 1, 2)
|
|
|
|
QuestLogFramePushQuestButton:Point("LEFT", QuestLogFrameAbandonButton, "RIGHT", 3, 0)
|
|
QuestLogFramePushQuestButton:Point("RIGHT", QuestLogFrameTrackButton, "LEFT", -3, 0)
|
|
|
|
QuestLogFrameCancelButton:Point("BOTTOMRIGHT", -9, 19)
|
|
|
|
QuestLogFrame:HookScript("OnShow", function()
|
|
QuestLogDetailScrollFrame.backdrop:Show()
|
|
|
|
QuestLogFrameShowMapButton:Point("TOPRIGHT", -30, -24)
|
|
|
|
QuestLogDetailScrollFrame:Height(336)
|
|
QuestLogDetailScrollFrame:Point("TOPRIGHT", -30, -61)
|
|
|
|
QuestLogDetailScrollFrameScrollBar:Point("TOPLEFT", QuestLogDetailScrollFrame, "TOPRIGHT", 3, -18)
|
|
QuestLogDetailScrollFrameScrollBar:Point("BOTTOMLEFT", QuestLogDetailScrollFrame, "BOTTOMRIGHT", 3, 17)
|
|
|
|
QuestLogControlPanel:SetPoint("BOTTOMLEFT", 18, 15)
|
|
end)
|
|
|
|
for _, questLogTitle in ipairs(QuestLogScrollFrame.buttons) do
|
|
questLogTitle:SetNormalTexture(E.Media.Textures.Plus)
|
|
questLogTitle.SetNormalTexture = E.noop
|
|
questLogTitle:GetNormalTexture():Size(16)
|
|
questLogTitle:GetNormalTexture():Point("LEFT", 5, 0)
|
|
questLogTitle:SetHighlightTexture("")
|
|
questLogTitle.SetHighlightTexture = E.noop
|
|
|
|
hooksecurefunc(questLogTitle, "SetNormalTexture", function(self, texture)
|
|
if find(texture, "MinusButton") then
|
|
self:GetNormalTexture():SetTexture(E.Media.Textures.Minus)
|
|
elseif find(texture, "PlusButton") then
|
|
self:GetNormalTexture():SetTexture(E.Media.Textures.Plus)
|
|
else
|
|
self:GetNormalTexture():SetTexture(0, 0, 0, 0)
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- QuestLog Detail Frame
|
|
QuestLogDetailFrame:StripTextures()
|
|
QuestLogDetailFrame:Height(513)
|
|
QuestLogDetailFrame:CreateBackdrop("Transparent")
|
|
QuestLogDetailFrame.backdrop:Point("TOPLEFT", 11, -12)
|
|
QuestLogDetailFrame.backdrop:Point("BOTTOMRIGHT", 2, 1)
|
|
|
|
S:SetUIPanelWindowInfo(QuestLogDetailFrame, "height", nil, nil, true)
|
|
S:SetUIPanelWindowInfo(QuestLogDetailFrame, "width")
|
|
S:SetBackdropHitRect(QuestLogDetailFrame)
|
|
|
|
S:HandleCloseButton(QuestLogDetailFrameCloseButton, QuestLogDetailFrame.backdrop)
|
|
|
|
QuestLogDetailTitleText:Point("TOP", QuestLogDetailFrame, "TOP", 0, -18)
|
|
|
|
QuestLogDetailFrame:HookScript("OnShow", function()
|
|
QuestLogDetailScrollFrame.backdrop:Hide()
|
|
|
|
QuestLogDetailScrollFrame:Height(402)
|
|
QuestLogDetailScrollFrame:Point("TOPLEFT", 19, -73)
|
|
|
|
QuestLogDetailScrollFrameScrollBar:Point("TOPLEFT", QuestLogDetailScrollFrame, "TOPRIGHT", 3, -19)
|
|
QuestLogDetailScrollFrameScrollBar:Point("BOTTOMLEFT", QuestLogDetailScrollFrame, "BOTTOMRIGHT", 3, 19)
|
|
|
|
QuestLogFrameShowMapButton:Point("TOPRIGHT", -27, -34)
|
|
end)
|
|
|
|
-- Quest Frame
|
|
QuestFrame:StripTextures(true)
|
|
QuestFrame:CreateBackdrop("Transparent")
|
|
QuestFrame.backdrop:Point("TOPLEFT", 11, -12)
|
|
QuestFrame.backdrop:Point("BOTTOMRIGHT", -32, 0)
|
|
|
|
S:SetUIPanelWindowInfo(QuestFrame, "width")
|
|
S:SetBackdropHitRect(QuestFrame)
|
|
|
|
S:HandleCloseButton(QuestFrameCloseButton, QuestFrame.backdrop)
|
|
|
|
QuestFrameDetailPanel:StripTextures(true)
|
|
QuestDetailScrollFrame:StripTextures(true)
|
|
QuestDetailScrollChildFrame:StripTextures(true)
|
|
QuestRewardScrollFrame:StripTextures(true)
|
|
QuestRewardScrollChildFrame:StripTextures(true)
|
|
QuestFrameProgressPanel:StripTextures(true)
|
|
QuestFrameRewardPanel:StripTextures(true)
|
|
|
|
S:HandleButton(QuestFrameAcceptButton)
|
|
S:HandleButton(QuestFrameCompleteButton)
|
|
S:HandleButton(QuestFrameCompleteQuestButton)
|
|
S:HandleButton(QuestFrameDeclineButton)
|
|
S:HandleButton(QuestFrameGoodbyeButton)
|
|
S:HandleButton(QuestFrameCancelButton)
|
|
|
|
QuestFrameNpcNameText:ClearAllPoints()
|
|
QuestFrameNpcNameText:Point("TOP", QuestFrame, "TOP", -6, -15)
|
|
|
|
QuestDetailScrollFrame:Size(304, 402)
|
|
QuestRewardScrollFrame:Size(304, 402)
|
|
QuestProgressScrollFrame:Size(304, 402)
|
|
|
|
QuestDetailScrollFrame:Point("TOPLEFT", QuestFrame, "TOPLEFT", 19, -73)
|
|
QuestRewardScrollFrame:Point("TOPLEFT", QuestFrame, "TOPLEFT", 19, -73)
|
|
QuestProgressScrollFrame:Point("TOPLEFT", QuestFrame, "TOPLEFT", 19, -73)
|
|
|
|
QuestDetailScrollFrameScrollBar:Point("TOPLEFT", QuestDetailScrollFrame, "TOPRIGHT", 3, -19)
|
|
QuestDetailScrollFrameScrollBar:Point("BOTTOMLEFT", QuestDetailScrollFrame, "BOTTOMRIGHT", 3, 19)
|
|
|
|
QuestRewardScrollFrameScrollBar:Point("TOPLEFT", QuestRewardScrollFrame, "TOPRIGHT", 3, -19)
|
|
QuestRewardScrollFrameScrollBar:Point("BOTTOMLEFT", QuestRewardScrollFrame, "BOTTOMRIGHT", 3, 19)
|
|
|
|
QuestProgressScrollFrameScrollBar:Point("TOPLEFT", QuestProgressScrollFrame, "TOPRIGHT", 3, -19)
|
|
QuestProgressScrollFrameScrollBar:Point("BOTTOMLEFT", QuestProgressScrollFrame, "BOTTOMRIGHT", 3, 19)
|
|
|
|
QuestFrameAcceptButton:Point("BOTTOMLEFT", 19, 8)
|
|
QuestFrameCompleteButton:Point("BOTTOMLEFT", 19, 8)
|
|
QuestFrameCompleteQuestButton:Point("BOTTOMLEFT", 19, 8)
|
|
QuestFrameDeclineButton:Point("BOTTOMRIGHT", -40, 8)
|
|
QuestFrameGoodbyeButton:Point("BOTTOMRIGHT", -40, 8)
|
|
QuestFrameCancelButton:Point("BOTTOMRIGHT", -40, 8)
|
|
|
|
-- Quest Greeting Frame
|
|
QuestFrameGreetingPanel:StripTextures(true)
|
|
QuestGreetingFrameHorizontalBreak:Kill()
|
|
|
|
S:HandleButton(QuestFrameGreetingGoodbyeButton, true)
|
|
S:HandleScrollBar(QuestGreetingScrollFrameScrollBar)
|
|
|
|
GreetingText:SetTextColor(1, 1, 1)
|
|
CurrentQuestsText:SetTextColor(1, 0.80, 0.10)
|
|
AvailableQuestsText:SetTextColor(1, 0.80, 0.10)
|
|
|
|
GreetingText.SetTextColor = E.noop
|
|
CurrentQuestsText.SetTextColor = E.noop
|
|
AvailableQuestsText.SetTextColor = E.noop
|
|
|
|
QuestGreetingScrollFrame:Size(304, 402)
|
|
QuestGreetingScrollFrame:Point("TOPLEFT", GossipFrame, "TOPLEFT", 19, -73)
|
|
|
|
QuestGreetingScrollFrameScrollBar:Point("TOPLEFT", QuestGreetingScrollFrame, "TOPRIGHT", 3, -19)
|
|
QuestGreetingScrollFrameScrollBar:Point("BOTTOMLEFT", QuestGreetingScrollFrame, "BOTTOMRIGHT", 3, 19)
|
|
|
|
QuestFrameGreetingGoodbyeButton:Point("BOTTOMRIGHT", -40, 8)
|
|
|
|
QuestFrameGreetingPanel:HookScript("OnShow", function()
|
|
for i = 1, MAX_NUM_QUESTS do
|
|
local button = _G["QuestTitleButton"..i]
|
|
|
|
if button:GetFontString() then
|
|
if button:GetText() and find(button:GetText(), "|cff000000") then
|
|
button:SetText(gsub(button:GetText(), "|cff000000", "|cffFFFF00"))
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
-- Quest Progress + Reward
|
|
QuestInfoItemHighlight:StripTextures()
|
|
|
|
QuestInfoTimerText:SetTextColor(1, 1, 1)
|
|
QuestInfoAnchor:SetTextColor(1, 1, 1)
|
|
|
|
local items = {
|
|
["QuestInfoItem"] = MAX_NUM_ITEMS,
|
|
["QuestProgressItem"] = MAX_REQUIRED_ITEMS
|
|
}
|
|
for frame, numItems in pairs(items) do
|
|
for i = 1, numItems do
|
|
local item = _G[frame..i]
|
|
local icon = _G[frame..i.."IconTexture"]
|
|
local count = _G[frame..i.."Count"]
|
|
|
|
item:StripTextures()
|
|
item:SetTemplate("Default")
|
|
item:StyleButton()
|
|
item:Size(143, 40)
|
|
item:SetFrameLevel(item:GetFrameLevel() + 2)
|
|
|
|
icon:Size(E.PixelMode and 38 or 32)
|
|
icon:SetDrawLayer("OVERLAY")
|
|
icon:Point("TOPLEFT", E.PixelMode and 1 or 4, -(E.PixelMode and 1 or 4))
|
|
S:HandleIcon(icon)
|
|
|
|
count:SetParent(item.backdrop)
|
|
count:SetDrawLayer("OVERLAY")
|
|
end
|
|
end
|
|
|
|
local function questQualityColors(frame, text, link, quality)
|
|
if link and not quality then
|
|
quality = select(3, GetItemInfo(link))
|
|
end
|
|
|
|
if quality then
|
|
local r, g, b = GetItemQualityColor(quality)
|
|
|
|
frame:SetBackdropBorderColor(r, g, b)
|
|
frame.backdrop:SetBackdropBorderColor(r, g, b)
|
|
|
|
text:SetTextColor(r, g, b)
|
|
else
|
|
frame:SetBackdropBorderColor(unpack(E.media.bordercolor))
|
|
frame.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
|
|
|
|
text:SetTextColor(1, 1, 1)
|
|
end
|
|
end
|
|
|
|
hooksecurefunc("QuestFrameProgressItems_Update", function()
|
|
QuestProgressTitleText:SetTextColor(1, 0.80, 0.10)
|
|
QuestProgressText:SetTextColor(1, 1, 1)
|
|
QuestProgressRequiredItemsText:SetTextColor(1, 0.80, 0.10)
|
|
|
|
local moneyToGet = GetQuestMoneyToGet()
|
|
|
|
if moneyToGet > 0 then
|
|
if moneyToGet > GetMoney() then
|
|
QuestProgressRequiredMoneyText:SetTextColor(0.6, 0.6, 0.6)
|
|
else
|
|
QuestProgressRequiredMoneyText:SetTextColor(1, 0.80, 0.10)
|
|
end
|
|
end
|
|
|
|
local item, name, link
|
|
|
|
for i = 1, MAX_REQUIRED_ITEMS do
|
|
item = _G["QuestProgressItem"..i]
|
|
name = _G["QuestProgressItem"..i.."Name"]
|
|
link = item.type and GetQuestItemLink(item.type, item:GetID())
|
|
|
|
questQualityColors(item, name, link)
|
|
end
|
|
end)
|
|
|
|
hooksecurefunc("QuestInfoItem_OnClick", function(self)
|
|
if self.type == "choice" then
|
|
self:SetBackdropBorderColor(1, 0.80, 0.10)
|
|
self.backdrop:SetBackdropBorderColor(1, 0.80, 0.10)
|
|
_G[self:GetName().."Name"]:SetTextColor(1, 0.80, 0.10)
|
|
|
|
local item, name, link
|
|
|
|
for i = 1, MAX_NUM_ITEMS do
|
|
item = _G["QuestInfoItem"..i]
|
|
|
|
if item ~= self then
|
|
name = _G["QuestInfoItem"..i.."Name"]
|
|
link = item.type and (QuestInfoFrame.questLog and GetQuestLogItemLink or GetQuestItemLink)(item.type, item:GetID())
|
|
|
|
questQualityColors(item, name, link)
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
local function questObjectiveText()
|
|
local numObjectives = GetNumQuestLeaderBoards()
|
|
local _, objType, finished, objective
|
|
local numVisibleObjectives = 0
|
|
|
|
for i = 1, numObjectives do
|
|
_, objType, finished = GetQuestLogLeaderBoard(i)
|
|
|
|
if objType ~= "spell" then
|
|
numVisibleObjectives = numVisibleObjectives + 1
|
|
objective = _G["QuestInfoObjective"..numVisibleObjectives]
|
|
|
|
if finished then
|
|
objective:SetTextColor(1, 0.80, 0.10)
|
|
else
|
|
objective:SetTextColor(0.6, 0.6, 0.6)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
hooksecurefunc("QuestInfo_Display", function()
|
|
QuestInfoTitleHeader:SetTextColor(1, 0.80, 0.10)
|
|
QuestInfoDescriptionHeader:SetTextColor(1, 0.80, 0.10)
|
|
QuestInfoObjectivesHeader:SetTextColor(1, 0.80, 0.10)
|
|
QuestInfoRewardsHeader:SetTextColor(1, 0.80, 0.10)
|
|
|
|
QuestInfoDescriptionText:SetTextColor(1, 1, 1)
|
|
QuestInfoObjectivesText:SetTextColor(1, 1, 1)
|
|
QuestInfoGroupSize:SetTextColor(1, 1, 1)
|
|
QuestInfoRewardText:SetTextColor(1, 1, 1)
|
|
|
|
QuestInfoItemChooseText:SetTextColor(1, 1, 1)
|
|
QuestInfoItemReceiveText:SetTextColor(1, 1, 1)
|
|
QuestInfoSpellLearnText:SetTextColor(1, 1, 1)
|
|
QuestInfoHonorFrameReceiveText:SetTextColor(1, 1, 1)
|
|
QuestInfoArenaPointsFrameReceiveText:SetTextColor(1, 1, 1)
|
|
QuestInfoTalentFrameReceiveText:SetTextColor(1, 1, 1)
|
|
QuestInfoXPFrameReceiveText:SetTextColor(1, 1, 1)
|
|
QuestInfoReputationText:SetTextColor(1, 1, 1)
|
|
|
|
for i = 1, MAX_REPUTATIONS do
|
|
_G["QuestInfoReputation"..i.."Faction"]:SetTextColor(1, 1, 1)
|
|
end
|
|
|
|
local requiredMoney = GetQuestLogRequiredMoney()
|
|
|
|
if requiredMoney > 0 then
|
|
if requiredMoney > GetMoney() then
|
|
QuestInfoRequiredMoneyText:SetTextColor(0.6, 0.6, 0.6)
|
|
else
|
|
QuestInfoRequiredMoneyText:SetTextColor(1, 0.80, 0.10)
|
|
end
|
|
end
|
|
|
|
questObjectiveText()
|
|
|
|
local item, name, link
|
|
|
|
for i = 1, MAX_NUM_ITEMS do
|
|
item = _G["QuestInfoItem"..i]
|
|
name = _G["QuestInfoItem"..i.."Name"]
|
|
link = item.type and (QuestInfoFrame.questLog and GetQuestLogItemLink or GetQuestItemLink)(item.type, item:GetID())
|
|
|
|
questQualityColors(item, name, link)
|
|
end
|
|
end)
|
|
|
|
hooksecurefunc("QuestInfo_ShowRewards", function()
|
|
local item, name, link
|
|
|
|
for i = 1, MAX_NUM_ITEMS do
|
|
item = _G["QuestInfoItem"..i]
|
|
name = _G["QuestInfoItem"..i.."Name"]
|
|
link = item.type and (QuestInfoFrame.questLog and GetQuestLogItemLink or GetQuestItemLink)(item.type, item:GetID())
|
|
|
|
questQualityColors(item, name, link)
|
|
end
|
|
end)
|
|
|
|
hooksecurefunc("QuestInfo_ShowRequiredMoney", function()
|
|
local requiredMoney = GetQuestLogRequiredMoney()
|
|
|
|
if requiredMoney > 0 then
|
|
if requiredMoney > GetMoney() then
|
|
QuestInfoRequiredMoneyText:SetTextColor(0.6, 0.6, 0.6)
|
|
else
|
|
QuestInfoRequiredMoneyText:SetTextColor(1, 0.80, 0.10)
|
|
end
|
|
end
|
|
end)
|
|
end) |