mirror of
https://github.com/brues-code/pfUI.git
synced 2026-09-30 19:19:59 +00:00
256 lines
9.8 KiB
Lua
256 lines
9.8 KiB
Lua
pfUI:RegisterSkin("QuestLogFrame", function ()
|
|
local border = tonumber(pfUI_config.appearance.border.default)
|
|
local bpad = border > 1 and border - 1 or 1
|
|
|
|
_G.QUESTS_DISPLAYED = 23
|
|
_G.MAX_WATCHABLE_QUESTS = 20 -- TODO
|
|
|
|
do -- quest frame
|
|
hooksecurefunc("QuestLog_OnShow", function()
|
|
QuestLogFrame:ClearAllPoints()
|
|
QuestLogFrame:SetPoint("TOPLEFT", 10, -104)
|
|
end, 1)
|
|
|
|
QuestLogFrame:SetWidth(676)
|
|
QuestLogFrame:SetHeight(440)
|
|
QuestLogFrame:DisableDrawLayer("BACKGROUND")
|
|
|
|
StripTextures(QuestLogFrame, true)
|
|
CreateBackdrop(QuestLogFrame, nil, nil, .75)
|
|
EnableMovable(QuestLogFrame)
|
|
|
|
QuestLogTitleText:ClearAllPoints()
|
|
QuestLogTitleText:SetPoint("TOP", 0, -10)
|
|
SkinCloseButton(QuestLogFrameCloseButton, QuestLogFrame, -6, -6)
|
|
|
|
QuestLogNoQuestsText:ClearAllPoints()
|
|
QuestLogNoQuestsText:SetPoint("TOP", QuestLogFrame, 0, -100)
|
|
|
|
local QuestLogFrameLevelsCheckButton = CreateFrame("CheckButton", "QuestLogFrameLevelsCheckButton", QuestLogFrame, "UICheckButtonTemplate")
|
|
QuestLogFrameLevelsCheckButton:SetChecked(C.questlog.showQuestLevels == "1" and true or nil)
|
|
QuestLogFrameLevelsCheckButton:SetPoint("LEFT", QuestLogCollapseAllButton, "RIGHT", 0, 1)
|
|
QuestLogFrameLevelsCheckButton:SetScript("OnClick", function()
|
|
C.questlog.showQuestLevels = C.questlog.showQuestLevels == "1" and "0" or "1"
|
|
QuestLog_Update()
|
|
end)
|
|
SkinCheckbox(QuestLogFrameLevelsCheckButton, 23)
|
|
QuestLogFrameLevelsCheckButtonText:SetText(T["Quest Levels"])
|
|
|
|
QuestLogQuestCount:ClearAllPoints()
|
|
QuestLogQuestCount:SetPoint("TOPRIGHT", -10, -30)
|
|
|
|
CreateBackdrop(QuestLogTrack)
|
|
QuestLogTrack:SetHeight(8)
|
|
QuestLogTrack:SetWidth(8)
|
|
QuestLogTrack:ClearAllPoints()
|
|
QuestLogTrack:SetPoint("RIGHT", QuestLogQuestCount, "LEFT", -5, 0)
|
|
HookScript(QuestLogTrack, "OnShow", function()
|
|
QuestLogTrackTitle:Hide()
|
|
QuestLogTrackTracking:SetTexture(.8,.8,.8,1)
|
|
end)
|
|
|
|
SkinButton(QuestLogFrameAbandonButton)
|
|
QuestLogFrameAbandonButton:ClearAllPoints()
|
|
QuestLogFrameAbandonButton:SetPoint("BOTTOMLEFT", QuestLogFrame, "BOTTOMLEFT", 5, 5)
|
|
QuestLogFrameAbandonButton:SetWidth(98)
|
|
|
|
SkinButton(QuestFramePushQuestButton)
|
|
QuestFramePushQuestButton:ClearAllPoints()
|
|
QuestFramePushQuestButton:SetPoint("LEFT", QuestLogFrameAbandonButton, "RIGHT", 5, 0)
|
|
QuestFramePushQuestButton:SetWidth(98)
|
|
|
|
SkinButton(QuestFrameExitButton)
|
|
QuestFrameExitButton:ClearAllPoints()
|
|
QuestFrameExitButton:SetPoint("LEFT", QuestFramePushQuestButton, "RIGHT", 5, 0)
|
|
QuestFrameExitButton:SetWidth(99)
|
|
|
|
local QuestLogFrameExpandButton = CreateFrame("Button", "QuestLogFrameExpandButton", QuestLogFrame, "UIPanelButtonTemplate")
|
|
SkinArrowButton(QuestLogFrameExpandButton, "LEFT", 21)
|
|
SetAllPointsOffset(QuestLogFrameExpandButton.icon, QuestLogFrameExpandButton, 6)
|
|
QuestLogFrameExpandButton:SetPoint("LEFT", QuestFrameExitButton, "RIGHT", 5, 0)
|
|
QuestLogFrameExpandButton:SetScript("OnClick", function()
|
|
if QuestLogDetailScrollFrame:IsShown() then
|
|
QuestLogDetailScrollFrame:Hide()
|
|
QuestLogDetailScrollFrame.hidden = true
|
|
else
|
|
QuestLogDetailScrollFrame:Show()
|
|
QuestLogDetailScrollFrame.hidden = nil
|
|
end
|
|
end)
|
|
|
|
HookScript(QuestLogDetailScrollFrame, "OnHide", function()
|
|
SkinArrowButton(QuestLogFrameExpandButton, "RIGHT", 21)
|
|
QuestLogDetailScrollFrame:Hide()
|
|
QuestLogFrame:SetWidth(340)
|
|
end)
|
|
|
|
HookScript(QuestLogDetailScrollFrame, "OnShow", function()
|
|
SkinArrowButton(QuestLogFrameExpandButton, "LEFT", 21)
|
|
QuestLogDetailScrollFrame:Show()
|
|
QuestLogFrame:SetWidth(676)
|
|
QuestLog_UpdateQuestDetails()
|
|
end)
|
|
|
|
EmptyQuestLogFrame:SetScript("OnShow", function() QuestLogFrameExpandButton:Disable() end)
|
|
EmptyQuestLogFrame:SetScript("OnHide", function() QuestLogFrameExpandButton:Enable() end)
|
|
StripTextures(EmptyQuestLogFrame)
|
|
end
|
|
|
|
do -- left pane
|
|
StripTextures(QuestLogListScrollFrame)
|
|
SkinScrollbar(QuestLogListScrollFrameScrollBar)
|
|
StripTextures(QuestLogExpandButtonFrame) -- ?
|
|
StripTextures(QuestLogCollapseAllButton)
|
|
SkinCollapseButton(QuestLogCollapseAllButton, true)
|
|
|
|
-- collapse buttons
|
|
QuestLogCollapseAllButton:ClearAllPoints()
|
|
QuestLogCollapseAllButton:SetPoint("BOTTOMLEFT", QuestLogTitle1, "TOPLEFT", -6, 4)
|
|
for i = 1, QUESTS_DISPLAYED do SkinCollapseButton(_G["QuestLogTitle"..i]) end
|
|
|
|
-- quest list backdrop
|
|
local backdrop = CreateFrame("Frame", nil, QuestLogFrame)
|
|
CreateBackdrop(backdrop, nil, nil, .75)
|
|
backdrop.backdrop:SetPoint("TOPLEFT", QuestLogListScrollFrame, "TOPLEFT", -5, 5)
|
|
backdrop.backdrop:SetPoint("BOTTOMRIGHT", QuestLogListScrollFrame, "BOTTOMRIGHT", 26, -5)
|
|
|
|
QuestLogTitle1:ClearAllPoints()
|
|
QuestLogTitle1:SetPoint("TOPLEFT", QuestLogListScrollFrame, "TOPLEFT", 0, 0)
|
|
|
|
-- add additional scroll entries
|
|
for i = 7, QUESTS_DISPLAYED do
|
|
local b = CreateFrame("Button", "QuestLogTitle"..i, QuestLogFrame, "QuestLogTitleButtonTemplate")
|
|
b:SetID(i)
|
|
b:SetPoint("TOPLEFT", _G["QuestLogTitle"..(i-1)], "BOTTOMLEFT", 0, 1)
|
|
SkinCollapseButton(_G["QuestLogTitle"..i])
|
|
end
|
|
|
|
QuestLogListScrollFrame:SetPoint("TOPLEFT", 10, -54)
|
|
QuestLogListScrollFrame:SetHeight(350)
|
|
|
|
hooksecurefunc("QuestLog_Update", function()
|
|
local numEntries = GetNumQuestLogEntries()
|
|
local questIndex, text, level, questTag, isHeader
|
|
|
|
if QuestLogDetailScrollFrame.hidden then
|
|
QuestLogDetailScrollFrame:Hide()
|
|
end
|
|
|
|
for i=1, QUESTS_DISPLAYED do
|
|
-- update tracked quest marks
|
|
_G["QuestLogTitle"..i.."Check"]:ClearAllPoints()
|
|
_G["QuestLogTitle"..i.."Check"]:SetPoint("RIGHT", _G["QuestLogTitle"..i], "LEFT", 24, 0)
|
|
|
|
-- update quest level
|
|
if C.questlog.showQuestLevels == "1" then
|
|
questIndex = i + FauxScrollFrame_GetOffset(QuestLogListScrollFrame)
|
|
if questIndex <= numEntries then
|
|
text, level, questTag, isHeader = GetQuestLogTitle(questIndex)
|
|
if not isHeader then
|
|
_G["QuestLogTitle"..i]:SetText(" ".."["..(questTag and level.."+" or level).."] "..text)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end, 1)
|
|
end
|
|
|
|
do -- right pane
|
|
StripTextures(QuestLogDetailScrollFrame)
|
|
SkinScrollbar(QuestLogDetailScrollFrameScrollBar)
|
|
|
|
QuestLogDetailScrollFrame:ClearAllPoints()
|
|
QuestLogDetailScrollFrame:SetPoint("TOPLEFT", QuestLogListScrollFrame, "TOPRIGHT", 35, 0)
|
|
QuestLogDetailScrollFrame:SetHeight(376)
|
|
QuestLogDetailScrollChildFrame:SetHeight(376)
|
|
|
|
-- quest log backdrop
|
|
CreateBackdrop(QuestLogDetailScrollFrame, nil, nil, .75)
|
|
QuestLogDetailScrollFrame.backdrop:SetPoint("TOPLEFT", -5, 5)
|
|
QuestLogDetailScrollFrame.backdrop:SetPoint("BOTTOMRIGHT", 26, -5)
|
|
|
|
-- skin item buttons
|
|
for i = 1, MAX_OBJECTIVES do
|
|
local button = _G["QuestLogItem"..i]
|
|
StripTextures(button)
|
|
CreateBackdrop(button, nil, true, .5)
|
|
|
|
local itemButton = CreateFrame("Button", button:GetName().."ItemButton", button)
|
|
itemButton:SetWidth(37)
|
|
itemButton:SetHeight(37)
|
|
itemButton:SetPoint("LEFT", 2, 0)
|
|
itemButton.icon = itemButton:CreateTexture("ARTWORK")
|
|
itemButton.icon:SetTexture(_G[button:GetName().."IconTexture"]:GetTexture())
|
|
SkinButton(itemButton, nil, nil, nil, itemButton.icon, true)
|
|
itemButton.text = itemButton:CreateFontString("Status", "LOW", "GameFontNormal")
|
|
itemButton.text:SetFontObject(GameFontWhite)
|
|
itemButton.text:SetPoint("BOTTOMRIGHT", -4, 1)
|
|
itemButton.text:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE")
|
|
end
|
|
|
|
hooksecurefunc("QuestLog_UpdateQuestDetails", function()
|
|
for i = 1, MAX_OBJECTIVES do
|
|
local button = _G["QuestLogItem"..i]
|
|
if button:IsShown() then
|
|
local itemButton = _G[button:GetName().."ItemButton"]
|
|
local texture = _G[button:GetName().."IconTexture"]:GetTexture()
|
|
local numItems = _G[button:GetName().."Count"]:GetText() or 1
|
|
|
|
itemButton.icon:SetTexture(texture)
|
|
itemButton.text:SetText(tonumber(numItems) > 1 and numItems)
|
|
_G[button:GetName().."Count"]:SetText()
|
|
end
|
|
end
|
|
end, 1)
|
|
|
|
do -- overwrite colors
|
|
hooksecurefunc("QuestLog_UpdateQuestDetails", function()
|
|
for i=1, GetNumQuestLeaderBoards() do
|
|
local string = _G["QuestLogObjective"..i]
|
|
|
|
if not string._SetTextColor then
|
|
string._SetTextColor = string.SetTextColor
|
|
string.SetTextColor = function() return end
|
|
end
|
|
|
|
local text, type, finished = GetQuestLogLeaderBoard(i)
|
|
if finished then
|
|
string:_SetTextColor(.4, 1, .4)
|
|
else
|
|
string:_SetTextColor(.4, .4, .4)
|
|
end
|
|
end
|
|
|
|
local reqmoney = GetQuestLogRequiredMoney()
|
|
if reqmoney > 0 then
|
|
if reqmoney > GetMoney() then
|
|
QuestLogRequiredMoneyText:SetTextColor(1, .4, .4);
|
|
else
|
|
QuestLogRequiredMoneyText:SetTextColor(.4, 1, .4);
|
|
end
|
|
end
|
|
end)
|
|
|
|
local titles = { QuestLogQuestTitle, QuestLogDescriptionTitle, QuestLogRewardTitleText }
|
|
for _, string in pairs(titles) do
|
|
if not string._SetTextColor then
|
|
string._SetTextColor = string.SetTextColor
|
|
string.SetTextColor = function() return end
|
|
end
|
|
string:_SetTextColor(1,1,.2,1)
|
|
string:SetShadowColor(0,0,0,0)
|
|
end
|
|
|
|
local texts = { QuestLogObjectivesText, QuestLogTimerText, QuestLogQuestDescription,
|
|
QuestLogItemChooseText, QuestLogItemReceiveText, QuestLogSpellLearnText }
|
|
for _, string in pairs(texts) do
|
|
if not string._SetTextColor then
|
|
string._SetTextColor = string.SetTextColor
|
|
string.SetTextColor = function() return end
|
|
end
|
|
string:_SetTextColor(1,1,1,1)
|
|
end
|
|
end
|
|
end
|
|
end)
|