vanilla-wow-addons – Rev 1
?pathlinks?
UBERQUEST_VERSION = "Reborn 1.11.9"
UIPanelWindows["UberQuest_List"] = {area = "doublewide", pushable = 997}
BINDING_HEADER_UBERQUEST_SEP = "Uber Quest Reborn"
BINDING_NAME_UBERQUEST_CONFIG = BINDING_NAME_UBERQUEST_CONFIG
BINDING_NAME_UBERQUEST_CONFIG2 = BINDING_NAME_UBERQUEST_CONFIG2
UBERQUEST_QUESTS_DISPLAYED = 22
UBERQUEST_QUESTLINE_HEIGHT = 16
UberQuest_Player = nil --global
UberQuest_Minion_ColorPicker = { r = 1, g = 1, b = 1 } -- global
UBERQUEST_MINIONSCALE = 100
local UberQuest_Config_Loaded = nil
local UberQuest_ThereAreQuests = nil
local UberQuest_MinionSetOnce = nil
local UberQuest_QuestTitles = nil
local UberQuest_SelectedQuest = nil
local UberQuest_ActivityTracker = {}
local UberQuest_GotFullList = nil
local UberQuest_DelayedConfigInit = nil
local UberQuest_InfoRequested = {}
local UberQuest_WatchTextIndex = 1
UberQuestDetails = {
name = "UberQuest",
version = UBERQUEST_VERSION,
releaseDate = "2006.08.22",
author = "Saien (Modded by BanMan)",
email = "Woosleyt@gmail.com",
website = "http://ui.worldofwar.net/ui.php?id=2780",
category = MYADDONS_CATEGORY_QUESTS
}
function UberQuest_Minion_Reset()
UberQuest_Minion:ClearAllPoints()
UberQuest_Minion:SetPoint("CENTER","UIParent","CENTER",0,0)
if (not UberQuest_Minion:IsVisible()) then
UberQuest_MinionShowHide()
end
end
local function UberQuest_Items_Update(questState)
local isQuestLog = 0
if (questState == "UberQuest_Details_ScrollChild_") then -- that's one change
isQuestLog = 1
end
local numQuestRewards
local numQuestChoices
local numQuestSpellRewards = 0
local money
local spacerFrame
if (isQuestLog == 1) then
numQuestRewards = GetNumQuestLogRewards()
numQuestChoices = GetNumQuestLogChoices()
if ( GetQuestLogRewardSpell() ) then
numQuestSpellRewards = 1
end
money = GetQuestLogRewardMoney()
spacerFrame = UberQuest_Details_ScrollChild_SpacerFrame -- that's two!
-- All this crap copied for TWO changes.
else
numQuestRewards = GetNumQuestRewards()
numQuestChoices = GetNumQuestChoices()
if ( GetRewardSpell() ) then
numQuestSpellRewards = 1
end
money = GetRewardMoney()
spacerFrame = QuestSpacerFrame
end
local totalRewards = numQuestRewards + numQuestChoices + numQuestSpellRewards
local questItemName = questState.."Item"
local material = QuestFrame_GetMaterial()
local questItemReceiveText = getglobal(questState.."ItemReceiveText")
if (totalRewards == 0 and money == 0) then
getglobal(questState.."RewardTitleText"):Hide()
else
getglobal(questState.."RewardTitleText"):Show()
QuestFrame_SetTitleTextColor(getglobal(questState.."RewardTitleText"), material)
QuestFrame_SetAsLastShown(getglobal(questState.."RewardTitleText"), spacerFrame)
end
if (money == 0) then
getglobal(questState.."MoneyFrame"):Hide()
else
getglobal(questState.."MoneyFrame"):Show()
QuestFrame_SetAsLastShown(getglobal(questState.."MoneyFrame"), spacerFrame)
MoneyFrame_Update(questState.."MoneyFrame", money)
end
for i=totalRewards + 1, MAX_NUM_ITEMS, 1 do
getglobal(questItemName..i):Hide()
end
local questItem, name, texture, quality, isUsable, numItems = 1
if ( numQuestChoices > 0 ) then
getglobal(questState.."ItemChooseText"):Show()
QuestFrame_SetTextColor(getglobal(questState.."ItemChooseText"), material)
QuestFrame_SetAsLastShown(getglobal(questState.."ItemChooseText"), spacerFrame)
for i=1, numQuestChoices, 1 do
questItem = getglobal(questItemName..i)
questItem.type = "choice"
numItems = 1
if ( isQuestLog == 1 ) then
name, texture, numItems, quality, isUsable = GetQuestLogChoiceInfo(i)
else
name, texture, numItems, quality, isUsable = GetQuestItemInfo(questItem.type, i)
end
questItem:SetID(i)
questItem:Show()
-- For the tooltip
questItem.rewardType = "item"
QuestFrame_SetAsLastShown(questItem, spacerFrame)
getglobal(questItemName..i.."Name"):SetText(name)
SetItemButtonCount(questItem, numItems)
SetItemButtonTexture(questItem, texture)
if ( isUsable ) then
SetItemButtonTextureVertexColor(questItem, 1.0, 1.0, 1.0)
SetItemButtonNameFrameVertexColor(questItem, 1.0, 1.0, 1.0)
else
SetItemButtonTextureVertexColor(questItem, 0.9, 0, 0)
SetItemButtonNameFrameVertexColor(questItem, 0.9, 0, 0)
end
if ( i > 1 ) then
if ( mod(i,2) == 1 ) then
questItem:SetPoint("TOPLEFT", questItemName..(i - 2), "BOTTOMLEFT", 0, -2)
else
questItem:SetPoint("TOPLEFT", questItemName..(i - 1), "TOPRIGHT", 1, 0)
end
else
questItem:SetPoint("TOPLEFT", questState.."ItemChooseText", "BOTTOMLEFT", -3, -5)
end
end
else
getglobal(questState.."ItemChooseText"):Hide()
end
local rewardsCount = 0
if ( numQuestRewards > 0 or money > 0 or numQuestSpellRewards > 0) then
QuestFrame_SetTextColor(questItemReceiveText, material)
-- Anchor the reward text differently if there are choosable rewards
if ( numQuestChoices > 0 ) then
questItemReceiveText:SetText(TEXT(REWARD_ITEMS))
local index = numQuestChoices
if ( mod(index, 2) == 0 ) then
index = index - 1
end
questItemReceiveText:SetPoint("TOPLEFT", questItemName..index, "BOTTOMLEFT", 3, -5)
else
questItemReceiveText:SetText(TEXT(REWARD_ITEMS_ONLY))
questItemReceiveText:SetPoint("TOPLEFT", questState.."RewardTitleText", "BOTTOMLEFT", 3, -5)
end
questItemReceiveText:Show()
QuestFrame_SetAsLastShown(questItemReceiveText, spacerFrame)
-- Setup mandatory rewards
for i=1, numQuestRewards, 1 do
questItem = getglobal(questItemName..(i + numQuestChoices))
questItem.type = "reward"
numItems = 1
if ( isQuestLog == 1 ) then
name, texture, numItems, quality, isUsable = GetQuestLogRewardInfo(i)
else
name, texture, numItems, quality, isUsable = GetQuestItemInfo(questItem.type, i)
end
questItem:SetID(i)
questItem:Show()
-- For the tooltip
questItem.rewardType = "item"
QuestFrame_SetAsLastShown(questItem, spacerFrame)
getglobal(questItemName..(i + numQuestChoices).."Name"):SetText(name)
SetItemButtonCount(questItem, numItems)
SetItemButtonTexture(questItem, texture)
if ( isUsable ) then
SetItemButtonTextureVertexColor(questItem, 1.0, 1.0, 1.0)
SetItemButtonNameFrameVertexColor(questItem, 1.0, 1.0, 1.0)
else
SetItemButtonTextureVertexColor(questItem, 0.5, 0, 0)
SetItemButtonNameFrameVertexColor(questItem, 1.0, 0, 0)
end
if ( i > 1 ) then
if ( mod(i,2) == 1 ) then
questItem:SetPoint("TOPLEFT", questItemName..((i + numQuestChoices) - 2), "BOTTOMLEFT", 0, -2)
else
questItem:SetPoint("TOPLEFT", questItemName..((i + numQuestChoices) - 1), "TOPRIGHT", 1, 0)
end
else
questItem:SetPoint("TOPLEFT", questState.."ItemReceiveText", "BOTTOMLEFT", -3, -5)
end
rewardsCount = rewardsCount + 1
end
-- Setup spell reward
if ( numQuestSpellRewards > 0 ) then
if ( isQuestLog == 1 ) then
texture, name = GetQuestLogRewardSpell()
else
texture, name = GetRewardSpell()
end
questItem = getglobal(questItemName..(rewardsCount + numQuestChoices + 1))
questItem:Show()
-- For the tooltip
questItem.rewardType = "spell"
SetItemButtonCount(questItem, 0)
SetItemButtonTexture(questItem, texture)
getglobal(questItemName..(rewardsCount + numQuestChoices + 1).."Name"):SetText(name)
if ( rewardsCount > 0 ) then
if ( mod(rewardsCount,2) == 0 ) then
questItem:SetPoint("TOPLEFT", questItemName..((rewardsCount + numQuestChoices) - 1), "BOTTOMLEFT", 0, -2)
else
questItem:SetPoint("TOPLEFT", questItemName..((rewardsCount + numQuestChoices)), "TOPRIGHT", 1, 0)
end
else
questItem:SetPoint("TOPLEFT", questState.."ItemReceiveText", "BOTTOMLEFT", -3, -5)
end
end
else
questItemReceiveText:Hide()
end
if ( questState == "QuestReward" ) then
QuestFrameCompleteQuestButton:Enable()
QuestFrameRewardPanel.itemChoice = 0
QuestRewardItemHighlight:Hide()
end
end
local function UberQuest_Details_Update()
local questID = GetQuestLogSelection()
local questTitle = GetQuestLogTitle(questID)
if ( not questTitle ) then
questTitle = ""
end
if ( IsCurrentQuestFailed() ) then
questTitle = questTitle.." - ("..TEXT(FAILED)..")"
end
UberQuest_Details_ScrollChild_QuestTitle:SetText(questTitle)
local questDescription
local questObjectives
questDescription, questObjectives = GetQuestLogQuestText()
UberQuest_Details_ScrollChild_ObjectivesText:SetText(questObjectives)
local questTimer = GetQuestLogTimeLeft()
if ( questTimer ) then
UberQuest_Details.hasTimer = 1
UberQuest_Details.timePassed = 0
UberQuest_Details_ScrollChild_TimerText:Show()
UberQuest_Details_ScrollChild_TimerText:SetText(TEXT(TIME_REMAINING).." "..SecondsToTime(questTimer))
UberQuest_Details_ScrollChild_Objective1:SetPoint("TOPLEFT", "UberQuest_Details_ScrollChild_TimerText", "BOTTOMLEFT", 0, -10)
else
UberQuest_Details.hasTimer = nil
UberQuest_Details_ScrollChild_TimerText:Hide()
UberQuest_Details_ScrollChild_Objective1:SetPoint("TOPLEFT", "UberQuest_Details_ScrollChild_ObjectivesText", "BOTTOMLEFT", 0, -10)
end
local numObjectives = GetNumQuestLeaderBoards()
for i=1, numObjectives, 1 do
local string = getglobal("UberQuest_Details_ScrollChild_Objective"..i)
local text
local type
local finished
text, type, finished = GetQuestLogLeaderBoard(i)
if ( not text or strlen(text) == 0 ) then
text = type
end
if ( finished ) then
string:SetTextColor(0.2, 0.2, 0.2)
text = text.." ("..TEXT(COMPLETE)..")"
else
string:SetTextColor(0, 0, 0)
end
string:SetText(text)
string:Show()
QuestFrame_SetAsLastShown(string,UberQuest_Details_ScrollChild_SpacerFrame)
end
for i=numObjectives + 1, MAX_OBJECTIVES, 1 do
getglobal("UberQuest_Details_ScrollChild_Objective"..i):Hide()
end
-- If there's money required then anchor and display it
if ( GetQuestLogRequiredMoney() > 0 ) then
if ( numObjectives > 0 ) then
UberQuest_Details_ScrollChild_RequiredMoneyText:SetPoint("TOPLEFT", "UberQuest_Details_ScrollChild_Objective"..numObjectives, "BOTTOMLEFT", 0, -4)
else
UberQuest_Details_ScrollChild_RequiredMoneyText:SetPoint("TOPLEFT", "UberQuest_Details_ScrollChild_ObjectivesText", "BOTTOMLEFT", 0, -10)
end
MoneyFrame_Update("UberQuest_Details_ScrollChild_RequiredMoneyFrame", GetQuestLogRequiredMoney())
if ( GetQuestLogRequiredMoney() > GetMoney() ) then
-- Not enough money
UberQuest_Details_ScrollChild_RequiredMoneyText:SetTextColor(0, 0, 0)
SetMoneyFrameColor("UberQuest_Details_ScrollChild_RequiredMoneyFrame", 1.0, 0.1, 0.1)
else
UberQuest_Details_ScrollChild_RequiredMoneyText:SetTextColor(0.2, 0.2, 0.2)
SetMoneyFrameColor("UberQuest_Details_ScrollChild_RequiredMoneyFrame", 1.0, 1.0, 1.0)
end
UberQuest_Details_ScrollChild_RequiredMoneyText:Show()
UberQuest_Details_ScrollChild_RequiredMoneyFrame:Show()
else
UberQuest_Details_ScrollChild_RequiredMoneyText:Hide()
UberQuest_Details_ScrollChild_RequiredMoneyFrame:Hide()
end
if ( GetQuestLogRequiredMoney() > 0 ) then
UberQuest_Details_ScrollChild_DescriptionTitle:SetPoint("TOPLEFT", "UberQuest_Details_ScrollChild_RequiredMoneyText", "BOTTOMLEFT", 0, -10)
elseif ( numObjectives > 0 ) then
UberQuest_Details_ScrollChild_DescriptionTitle:SetPoint("TOPLEFT", "UberQuest_Details_ScrollChild_Objective"..numObjectives, "BOTTOMLEFT", 0, -10)
else
if ( questTimer ) then
UberQuest_Details_ScrollChild_DescriptionTitle:SetPoint("TOPLEFT", "UberQuest_Details_ScrollChild_TimerText", "BOTTOMLEFT", 0, -10)
else
UberQuest_Details_ScrollChild_DescriptionTitle:SetPoint("TOPLEFT", "UberQuest_Details_ScrollChild_ObjectivesText", "BOTTOMLEFT", 0, -10)
end
end
if ( questDescription ) then
UberQuest_Details_ScrollChild_QuestDescription:SetText(questDescription)
QuestFrame_SetAsLastShown(UberQuest_Details_ScrollChild_QuestDescription,UberQuest_Details_ScrollChild_SpacerFrame)
end
local numRewards = GetNumQuestLogRewards()
local numChoices = GetNumQuestLogChoices()
local money = GetQuestLogRewardMoney()
if ( (numRewards + numChoices + money) > 0 ) then
UberQuest_Details_ScrollChild_RewardTitleText:Show()
QuestFrame_SetAsLastShown(UberQuest_Details_ScrollChild_RewardTitleText,UberQuest_Details_ScrollChild_SpacerFrame)
else
UberQuest_Details_ScrollChild_RewardTitleText:Hide()
end
UberQuest_Items_Update("UberQuest_Details_ScrollChild_")
UberQuest_Details_ScrollScrollBar:SetValue(0)
UberQuest_Details_Scroll:UpdateScrollChildRect()
end
local function UberQuest_List_SetSelection(questID)
local selectedQuest
if ( questID == 0 ) then
UberQuest_Details_Scroll:Hide()
return
end
UberQuest_Details_Scroll:Show()
-- Get xml id
local id = questID - FauxScrollFrame_GetOffset(UberQuest_List_Scroll)
UberQuest_SelectedQuest = questID
SelectQuestLogEntry(questID)
local titleButton = getglobal("UberQuest_List_Title"..id)
local titleButtonTag = getglobal("UberQuest_List_Title"..id.."Tag")
local questLogTitleText, level, questTag, isHeader, isCollapsed = GetQuestLogTitle(questID)
if ( isHeader ) then
if ( isCollapsed ) then
ExpandQuestHeader(questID)
return
else
CollapseQuestHeader(questID)
return
end
else
-- Set newly selected quest and highlight it
UberQuest_List.selectedButtonID = questID
local scrollFrameOffset = FauxScrollFrame_GetOffset(UberQuest_List_Scroll)
if ( questID > scrollFrameOffset and questID <= (scrollFrameOffset + UBERQUEST_QUESTS_DISPLAYED) and questID <= GetNumQuestLogEntries() ) then
titleButton:LockHighlight()
titleButtonTag:SetTextColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b)
UberQuest_List_HighlightFrame_SkillHighlight:SetVertexColor(titleButton.r, titleButton.g, titleButton.b)
UberQuest_List_HighlightFrame:SetPoint("TOPLEFT", "UberQuest_List_Title"..id, "TOPLEFT", 5, 0)
UberQuest_List_HighlightFrame:Show()
end
end
if ( GetQuestLogSelection() > GetNumQuestLogEntries() ) then
return
end
UberQuest_Details_Title:SetText ("Uber Quest ("..UBERQUEST_VERSION..")")
UberQuest_Details:Show()
UberQuest_Details_Update()
end
local function UberQuest_SetFirstValidSelection()
-- Intentionally left at QuestLog_
local selectableQuest = QuestLog_GetFirstSelectableQuest()
UberQuest_List_SetSelection(selectableQuest)
end
local function UberQuest_ConfigInit()
UberQuest_Config_Loaded = 1
if (not UberQuest_Config) then
UberQuest_Config = {}
UberQuest_Config.showquestlevels = 1
UberQuest_Config.useminion = 1
UberQuest_Config.addnewquests = 1
UberQuest_Config.UberMinionScale = 100
end
-- In General: No reason, IMO, for per-player config options since
-- people are going to want consistant QuestLog views anyways. Or at least I do.
-- The exception is for options regarding onscreen placement, and (duh)
-- Quests selected for minion
if (not UberQuest_Config[UberQuest_Player]) then
UberQuest_Config[UberQuest_Player] = {}
end
if (not UberQuest_Config[UberQuest_Player].selected) then
UberQuest_Config[UberQuest_Player].selected = {}
end
UberQuest_Config.speedquest = nil
if (UberQuest_Config.useminion) then
if (UberQuest_Config[UberQuest_Player].minionvisible) then
if (not UberQuest_Minion:IsVisible()) then
UberQuest_MinionShowHide()
end
end
if (UberQuest_Config[UberQuest_Player].lockminion) then
UberQuest_Minion_Move:Hide()
else
UberQuest_Minion_Move:Show()
end
if (UberQuest_Config.color and UberQuest_Config.color.r and UberQuest_Config.color.g and UberQuest_Config.color.b and UberQuest_Config.color.opacity) then
UberQuest_MinionBackdrop:SetBackdropColor(UberQuest_Config.color.r, UberQuest_Config.color.g, UberQuest_Config.color.b)
local alpha = 1.0 - UberQuest_Config.color.opacity
UberQuest_MinionBackdrop:SetAlpha(alpha)
else
UberQuest_MinionBackdrop:SetBackdropColor(TOOLTIP_DEFAULT_BACKGROUND_COLOR.r, TOOLTIP_DEFAULT_BACKGROUND_COLOR.g, TOOLTIP_DEFAULT_BACKGROUND_COLOR.b)
UberQuest_MinionBackdrop:SetAlpha(1)
end
if (UberQuest_Config[UberQuest_Player].lock and
UberQuest_Config[UberQuest_Player].lock.corner and
UberQuest_Config[UberQuest_Player].lock.pointone and
UberQuest_Config[UberQuest_Player].lock.pointtwo) then
UberQuest_Minion:ClearAllPoints()
UberQuest_Minion:SetPoint(UberQuest_Config[UberQuest_Player].lock.corner,"UIParent","BOTTOMLEFT",UberQuest_Config[UberQuest_Player].lock.pointone,UberQuest_Config[UberQuest_Player].lock.pointtwo)
end
-- Load Scale settings
if (UberQuest_Config[UberQuest_Player]["scale"]) then
local scale = 1
scale = UberQuest_Config[UberQuest_Player]["scale"]
UberQuest_Minion:SetScale(UIParent:GetScale() * scale)
UberMinionScale:SetValue(scale * 100)
end
end
UberQuest_List_ConfigButton:Enable()
UberQuest_List_SummonMinion:Enable()
end
function UberQuest_DelayedConfigInit_OnUpdate(elapsed)
if (UberQuest_DelayedConfigInit) then
UberQuest_DelayedConfigInit = UberQuest_DelayedConfigInit - elapsed
if (UberQuest_DelayedConfigInit < 0) then
UberQuest_ConfigInit()
UberQuest_DelayedConfigInit = nil
UberQuest:Hide()
end
else -- Stop receiving OnUpdates
UberQuest:Hide()
end
end
function UberQuest_OnLoad()
this:RegisterEvent("PLAYER_ENTERING_WORLD")
this:RegisterEvent("QUEST_LOG_UPDATE")
this:RegisterEvent("PARTY_MEMBERS_CHANGED")
this:RegisterEvent("ADDON_LOADED")
DEFAULT_CHAT_FRAME:AddMessage("UberQuest ("..UBERQUEST_VERSION..") loaded.")
UberQuest_oldToggleQuestLog = ToggleQuestLog
ToggleQuestLog = UberQuest_ListShowHide
local playerName = UnitName("player")
if (playerName ~= UKNOWNBEING and playerName ~= UNKNOWNOBJECT) then
UberQuest_Player = playerName
end
end
function UberQuest_OnEvent()
if(event == "ADDON_LOADED" and myAddOnsFrame_Register) then
myAddOnsFrame_Register(UberQuestDetails)
end
if (event == "PLAYER_ENTERING_WORLD") then
if (UberQuest_Player and not UberQuest_Config_Loaded) then
UberQuest_DelayedConfigInit = 10
UberQuest:Show()
end
elseif (UberQuest_Config_Loaded and event == "QUEST_LOG_UPDATE") then
UberQuest_List_Update()
if (UberQuest_Details:IsVisible()) then
UberQuest_Details_Update()
end
if (UberQuest_Minion:IsVisible() and UberQuest_Config[UberQuest_Player].selected) then
UberQuest_Minion_Update()
end
elseif ( event == "PARTY_MEMBERS_CHANGED" ) then
-- Pushable == Sharable. Blizzard likes things straight forward
if ( GetQuestLogPushable() and GetNumPartyMembers() > 0 ) then
UberQuest_List_ShareButton:Enable()
else
UberQuest_List_ShareButton:Disable()
end
end
end
function UberQuest_List_OnLoad()
this.selectedButtonID = 2
end
function UberQuest_ListShowHide()
if (UberQuest_List:IsVisible()) then
HideUIPanel(UberQuest_List)
PlaySound("igQuestLogClose")
else
UberQuest_List_Title:SetText ("Uber Quest ("..UBERQUEST_VERSION..")")
ShowUIPanel(UberQuest_List)
UberQuest_List_Update()
PlaySound("igQuestLogOpen")
if (UberQuest_Details:IsVisible()) then
UberQuest_Details_Update()
end
end
end
function UberQuest_Minion_ShowHide()
if (UberQuest_Minion:IsVisible() and UberQuest_Config[UberQuest_Player].selected) then
UberQuest_Minion_Update()
else
UberQuest_Minion:Hide()
end
end
function UberQuest_List_Update()
local i
UberQuest_QuestTitles = {}
if (UberQuest_Config.useminion) then
UberQuest_List_SummonMinion:Show()
else
UberQuest_List_SummonMinion:Hide()
UberQuest_Minion:Hide()
end
-- Copied muchly from QuestLog_Update(), Blizzard code, with updates for sexual prowess.
local numEntries, numQuests = GetNumQuestLogEntries()
if ( numEntries == 0 ) then
--EmptyQuestLogFrame:Show()
UberQuest_List_AbandonButton:Disable()
UberQuest_List.hasTimer = nil
UberQuest_List_ExpandButtonFrame:Hide()
else
--EmptyQuestLogFrame:Hide()
UberQuest_List_AbandonButton:Enable()
UberQuest_List_ExpandButtonFrame:Show()
-- UberQuest_Details_Title:SetText ("Uber Quest ("..UBERQUEST_VERSION..")")
-- UberQuest_Details:Show()
-- UberQuest_Details_Update()
end
-- Update Quest Count
UberQuest_List_QuestCount:SetText(format(QUEST_LOG_COUNT_TEMPLATE, numQuests, MAX_QUESTLOG_QUESTS))
UberQuest_List_CountMiddle:SetWidth(UberQuest_List_QuestCount:GetWidth())
-- ScrollFrame update
FauxScrollFrame_Update(UberQuest_List_Scroll, numEntries, UBERQUEST_QUESTS_DISPLAYED, UBERQUEST_QUESTLINE_HEIGHT, nil, nil, nil, UberQuest_List_HighlightFrame, 293, 316 )
if (numQuests and numQuests > 0) then
local i
for i=1, numEntries, 1 do
local index = i
local quest, level, questTag, isHeader, isCollapsed = GetQuestLogTitle(i)
if (quest and not isHeader) then
if (UberQuest_GotFullList and UberQuest_Config.addnewquests and not UberQuest_ActivityTracker[quest]) then
UberQuest_Config[UberQuest_Player].selected[quest] = 1
end
if (not UberQuest_ActivityTracker[quest]) then
UberQuest_ActivityTracker[quest] = {}
end
end
end
if (UberQuest_ActivityTracker ~= {}) then
UberQuest_GotFullList = true
end
end
local numPartyMembers = GetNumPartyMembers()
-- Update the quest listing
UberQuest_List_HighlightFrame:Hide()
for i=1, UBERQUEST_QUESTS_DISPLAYED, 1 do
local questIndex = i + FauxScrollFrame_GetOffset(UberQuest_List_Scroll)
local questLogTitle = getglobal("UberQuest_List_Title"..i)
local questTitleTag = getglobal("UberQuest_List_Title"..i.."Tag")
local questNormalText = getglobal("UberQuest_List_Title"..i.."NormalText")
local questHighlightText = getglobal("UberQuest_List_Title"..i.."NormalText")
local questDisabledText = getglobal("UberQuest_List_Title"..i.."NormalText")
local questNumGroupMates = getglobal("UberQuest_List_Title"..i.."GroupMates")
if ( questIndex <= numEntries ) then
local questLogTitleText, level, questTag, isHeader, isCollapsed, isComplete = GetQuestLogTitle(questIndex)
local color
if ( isHeader ) then
if ( questLogTitleText ) then
questLogTitle:SetText(questLogTitleText)
else
questLogTitle:SetText("")
end
if ( isCollapsed ) then
questLogTitle:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-Up")
else
questLogTitle:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-Up")
end
questNumGroupMates:SetText("")
getglobal("UberQuest_List_Title"..i.."Highlight"):SetTexture("Interface\\Buttons\\UI-PlusButton-Hilight")
getglobal("UberQuest_List_Title"..i.."_MinionSelect"):Hide()
else
UberQuest_QuestTitles[i] = questLogTitleText
if (UberQuest_Config.useminion) then
getglobal("UberQuest_List_Title"..i.."_MinionSelect"):Show()
getglobal("UberQuest_List_Title"..i.."_MinionSelect"):SetChecked(UberQuest_Config[UberQuest_Player].selected[questLogTitleText])
else
getglobal("UberQuest_List_Title"..i.."_MinionSelect"):Hide()
end
if ( UberQuest_Config.showquestlevels == 1 ) then
if ( questTag == ELITE ) then
questLogTitle:SetText(" ["..level.."+] "..questLogTitleText)
else
if ( questTag == RAID or questTag == "Schlachtzug" ) then
questLogTitle:SetText(" ["..level.."R] "..questLogTitleText)
else
if ( questTag == "Dungeon" or questTag == "Donjon" or questTag == "Instanz" ) then
questLogTitle:SetText(" ["..level.."D] "..questLogTitleText)
else
if ( questTag == "PvP" ) then
questLogTitle:SetText(" ["..level.."P] "..questLogTitleText)
else
questLogTitle:SetText(" ["..level.."] "..questLogTitleText)
end
end
end
end
else
questLogTitle:SetText(" "..questLogTitleText)
end
questLogTitle:SetNormalTexture("")
getglobal("UberQuest_List_Title"..i.."Highlight"):SetTexture("")
local partyMembersOnQuest = 0
for j=1, numPartyMembers do
local isOnQuest = IsUnitOnQuest(questIndex, "party"..j)
if ( isOnQuest and isOnQuest == 1 ) then
partyMembersOnQuest = partyMembersOnQuest + 1
end
end
if ( partyMembersOnQuest > 0 ) then
questNumGroupMates:SetText("["..partyMembersOnQuest.."]")
else
questNumGroupMates:SetText("")
end
end
-- Set the quest tag
if ( isComplete ) then
questTag = COMPLETE
end
if ( questTag ) then
questTitleTag:SetText("("..questTag..")")
-- Shrink text to accomdate quest tags without wrapping
-- This is just wrong, so very very wrong.
-- (Elite) is coming out at width 80
if (questTag == "Elite" or questTag == "Raid" or questTag == "Fertig" or questTag == "PvP" ) then
questNormalText:SetWidth(225)
elseif (questTag == "Complete" or questTag == "Dungeon" or questTag == "Instanz") then
questHighlightText:SetWidth(225)
questDisabledText:SetWidth(225)
elseif (questTag == "Schlachtzug") then
questNormalText:SetWidth(205)
questHighlightText:SetWidth(205)
questDisabledText:SetWidth(205)
else
questNormalText:SetWidth(275 - 5 - questTitleTag:GetWidth())
questHighlightText:SetWidth(275 - 5 - questTitleTag:GetWidth())
questDisabledText:SetWidth(275 - 5 - questTitleTag:GetWidth())
end
else
questTitleTag:SetText("")
-- Reset to max text width
questNormalText:SetWidth(275)
questHighlightText:SetWidth(275)
questDisabledText:SetWidth(275)
end
-- Color the quest title and highlight according to the difficulty level
local playerLevel = UnitLevel("player")
if ( isHeader ) then
color = QuestDifficultyColor["header"]
else
color = GetDifficultyColor(level)
end
questTitleTag:SetTextColor(color.r, color.g, color.b)
questLogTitle:SetTextColor(color.r, color.g, color.b)
questNumGroupMates:SetTextColor(color.r, color.g, color.b)
questLogTitle.r = color.r
questLogTitle.g = color.g
questLogTitle.b = color.b
questLogTitle:Show()
-- Place the highlight and lock the highlight state
if ( UberQuest_List.selectedButtonID and GetQuestLogSelection() == questIndex ) then
UberQuest_List_HighlightFrame:SetPoint("TOPLEFT", "UberQuest_List_Title"..i, "TOPLEFT", 0, 0)
UberQuest_List_HighlightFrame:Show()
questTitleTag:SetTextColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b)
questLogTitle:LockHighlight()
else
questLogTitle:UnlockHighlight()
end
else
questLogTitle:Hide()
end
end
-- Set the expand/collapse all button texture
local numHeaders = 0
local notExpanded = 0
-- Somewhat redundant loop, but cleaner than the alternatives
for i=1, numEntries, 1 do
local index = i
local questLogTitleText, level, questTag, isHeader, isCollapsed = GetQuestLogTitle(i)
if ( questLogTitleText and isHeader ) then
numHeaders = numHeaders + 1
if ( isCollapsed ) then
notExpanded = notExpanded + 1
end
end
end
-- If all headers are not expanded then show collapse button, otherwise show the expand button
if ( notExpanded ~= numHeaders ) then
UberQuest_List_ExpandButtonFrame_CollapseAllButton.collapsed = nil
UberQuest_List_ExpandButtonFrame_CollapseAllButton:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-Up")
else
UberQuest_List_ExpandButtonFrame_CollapseAllButton.collapsed = 1
UberQuest_List_ExpandButtonFrame_CollapseAllButton:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-Up")
end
-- Update Quest Count
UberQuest_List_QuestCount:SetText(format(QUEST_LOG_COUNT_TEMPLATE, numQuests, MAX_QUESTLOG_QUESTS))
UberQuest_List_CountMiddle:SetWidth(UberQuest_List_QuestCount:GetWidth())
-- If no selection then set it to the first available quest
if ( GetQuestLogSelection() == 0 ) then
UberQuest_SetFirstValidSelection()
end
-- Determine whether the selected quest is pushable or not
if ( numEntries == 0 ) then
UberQuest_List_ShareButton:Disable()
elseif ( GetQuestLogPushable() and GetNumPartyMembers() > 0 ) then
UberQuest_List_ShareButton:Enable()
else
UberQuest_List_ShareButton:Disable()
end
end
function UberQuest_DetailsShowHide()
if (UberQuest_Details:IsVisible()) then
UberQuest_Details:Hide()
else
UberQuest_Details_Title:SetText ("Uber Quest ("..UBERQUEST_VERSION..")")
UberQuest_Details:Show()
UberQuest_Details_Update()
end
end
function UberQuest_ConfigShowHide()
if (UberQuest_ConfigFrame:IsVisible()) then
UberQuest_ConfigFrame:Hide()
else
UberQuest_ConfigFrame:Show()
UberQuest_Config_Update()
end
end
function UberQuest_Config_Update()
UberQuest_ConfigFrame_ShowQuestLevels:SetChecked(UberQuest_Config.showquestlevels)
UberQuest_ConfigFrame_UseMinion:SetChecked(UberQuest_Config.useminion)
UberQuest_ConfigFrame_LockMinion:SetChecked(UberQuest_Config[UberQuest_Player].lockminion)
UberQuest_ConfigFrame_MinionAddNew:SetChecked(UberQuest_Config.addnewquests)
UberQuest_ConfigFrame_ColorizeObjective:SetChecked(UberQuest_Config[UberQuest_Player].colorizeobjectives)
UberQuest_ConfigFrame_ExpireObjective:SetChecked(UberQuest_Config[UberQuest_Player].expireobjectives) -- EMERALD
UberQuest_ConfigFrame_ExpireQuest:SetChecked(UberQuest_Config[UberQuest_Player].expirequests) -- EMERALD
UberQuest_ConfigFrame_ToggleMinionText:SetChecked(UberQuest_Config[UberQuest_Player].hidetext) -- D.I.
if (UberQuest_Config.useminion) then
UberQuest_ConfigFrame_LockMinion:Enable()
UberQuest_ConfigFrame_MinionAddNew:Enable()
UberQuest_ConfigFrame_ColorizeObjective:Enable()
UberQuest_ConfigFrame_ExpireObjective:Enable() -- EMERALD
UberQuest_ConfigFrame_ExpireQuest:Enable() -- EMERALD
else
UberQuest_ConfigFrame_LockMinion:Disable()
UberQuest_ConfigFrame_MinionAddNew:Disable()
UberQuest_ConfigFrame_ColorizeObjective:Disable()
UberQuest_ConfigFrame_ExpireObjective:Disable() -- EMERALD
UberQuest_ConfigFrame_ExpireQuest:Disable() -- EMERALD
end
if (UberQuest_Config.color and UberQuest_Config.color.r and UberQuest_Config.color.g and UberQuest_Config.color.b and UberQuest_Config.color.opacity) then
UberQuest_Minion_ColorPicker = { r = UberQuest_Config.color.r,
g = UberQuest_Config.color.g,
b = UberQuest_Config.color.b }
UberQuest_ConfigFrame_BGColorSwatchBg:SetVertexColor(UberQuest_Config.color.r,
UberQuest_Config.color.g,
UberQuest_Config.color.b)
else
UberQuest_Minion_ColorPicker = { r = TOOLTIP_DEFAULT_BACKGROUND_COLOR.r,
g = TOOLTIP_DEFAULT_BACKGROUND_COLOR.g,
b = TOOLTIP_DEFAULT_BACKGROUND_COLOR.b }
UberQuest_ConfigFrame_BGColorSwatchBg:SetVertexColor(TOOLTIP_DEFAULT_BACKGROUND_COLOR.r,
TOOLTIP_DEFAULT_BACKGROUND_COLOR.g,
TOOLTIP_DEFAULT_BACKGROUND_COLOR.b)
end
end
function UberQuest_Minion_OnOff(val)
if (val) then
else
if (UberQuest_Minion:IsVisible()) then
UberQuest_MinionShowHide()
end
end
end
function UberQuest_MinionSelect_OnClick()
if (UberQuest_QuestTitles[this:GetParent():GetID()]) then
if (this:GetChecked()) then
UberQuest_Config[UberQuest_Player].selected[UberQuest_QuestTitles[this:GetParent():GetID()]] = 1
else
UberQuest_Config[UberQuest_Player].selected[UberQuest_QuestTitles[this:GetParent():GetID()]] = nil
end
if (UberQuest_Minion:IsVisible()) then
UberQuest_Minion_Update()
end
end
end
function UberQuest_MinionShowHide()
if (UberQuest_Config and UberQuest_Player and UberQuest_Config[UberQuest_Player]) then
if (UberQuest_Minion:IsVisible()) then
UberQuest_Minion:Hide()
UberQuest_List_SummonMinion:SetText(UBERQUEST_SUMMONMINION)
UberQuest_Config[UberQuest_Player].minionvisible = nil
else
UberQuest_Minion:Show()
UberQuest_List_SummonMinion:SetText(UBERQUEST_DISMISSMINION)
UberQuest_Minion_Update()
UberQuest_Config[UberQuest_Player].minionvisible = 1
end
end
end
function UberQuest_Minion_Update()
local function ConvertColorFormat(color)
local function dec2hex(decnum)
if (decnum == 0) then return "00" end
local hexnum=""
local tempval
decnum = 255*decnum
if ((decnum-math.floor(decnum)) > 0) then
decnum = decnum + 1
end
decnum = math.floor(decnum)
while (decnum ~= 0) do
tempval = math.mod(decnum,16)
if (tempval > 9) then
tempval = string.char(tempval + 55)
end
hexnum = tempval..hexnum
decnum = math.floor(decnum / 16)
if (decnum < 16) then
if (decnum > 9) then
decnum = string.char(decnum + 55)
end
hexnum = decnum..hexnum
decnum = 0
end
end
return hexnum
end
return (dec2hex(color.r)..dec2hex(color.g)..dec2hex(color.b))
end
local function DifficultyColor(now,max)
local startrange = QuestDifficultyColor["impossible"]
local midrange = QuestDifficultyColor["difficult"]
local endrange = QuestDifficultyColor["standard"]
now = tonumber(now)
max = tonumber(max)
if (not now or now == 0 or now > max) then
return ConvertColorFormat(startrange)
elseif (now == (max / 2)) then
return ConvertColorFormat(midrange)
elseif (now == max) then
return ConvertColorFormat(endrange)
elseif (now <= (max / 2)) then
local color = {}
local percent = now / max
color.r = startrange.r
color.g = startrange.g + ((midrange.g - startrange.g) * percent)
color.b = startrange.b - ((startrange.b - midrange.b) * percent)
return ConvertColorFormat(color)
else
local color = {}
local percent = now / max
color.r = midrange.r - ((midrange.r - endrange.r) * percent)
color.g = midrange.g - ((midrange.g - endrange.g) * percent)
color.b = midrange.b + ((endrange.b - midrange.b) * percent)
return ConvertColorFormat(color)
end
end
local applytext = ""
local questlist = {}
local i = 1
local j
if (UberQuest_Config and UberQuest_Player and UberQuest_Config[UberQuest_Player] and UberQuest_Config[UberQuest_Player].selected and UberQuest_Config[UberQuest_Player].selected ~= {}) then
local category = nil
local questLogTitleText, level, questTag, isHeader, isCollapsed, isComplete = GetQuestLogTitle(i)
while (questLogTitleText) do
if (isHeader) then
category = questLogTitleText
elseif (UberQuest_Config[UberQuest_Player].selected[questLogTitleText]) then
questlist[questLogTitleText] = i
UberQuests_ThereAreQuests = 1
--[[
if (applytext ~= "") then
applytext = applytext.."\n"
end
local color = ConvertColorFormat(GetDifficultyColor(level))
-- Better Questlevels to Minion
if ( UberQuest_Config.showquestlevels == 1 ) then
if ( questTag == ELITE ) then
applytext = applytext.."|cff"..color.."["..level.."+] "..questLogTitleText.."|r"
else
if ( questTag == RAID or questTag == "Schlachtzug") then
applytext = applytext.."|cff"..color.."["..level.."R] "..questLogTitleText.."|r"
else
if ( questTag == "Dungeon" or questTag == "Donjon" or questTag == "Instanz") then
applytext = applytext.."|cff"..color.."["..level.."D] "..questLogTitleText.."|r"
else
if ( questTag == "PvP") then
applytext = applytext.."|cff"..color.."["..level.."P] "..questLogTitleText.."|r"
else
applytext = applytext.."|cff"..color.."["..level.."] "..questLogTitleText.."|r"
end
end
end
end
else
applytext = applytext.."|cff"..color..questLogTitleText.."|r"
end
if (isComplete) then
color = ConvertColorFormat(QuestDifficultyColor["header"])
applytext = applytext.." |cff"..color.."("..UBERQUEST_QCOMPLETE..")|r"
else
]]--
-- EMERALD START
local color = ConvertColorFormat(GetDifficultyColor(level))
if (isComplete) then
if (not UberQuest_Config[UberQuest_Player].expirequests) then
if (applytext ~= "") then
applytext = applytext.."\n"
end
if (UberQuest_Config.showquestlevels ==1) then
if ( questTag == ELITE ) then
applytext = applytext.."|cff"..color.."["..level.."+] "..questLogTitleText.."|r"
else
if ( questTag == RAID or questTag == "Schlachtzug") then
applytext = applytext.."|cff"..color.."["..level.."R] "..questLogTitleText.."|r"
else
if ( questTag == "Dungeon" or questTag == "Donjon" or questTag == "Instanz") then
applytext = applytext.."|cff"..color.."["..level.."D] "..questLogTitleText.."|r"
else
if ( questTag == "PvP") then
applytext = applytext.."|cff"..color.."["..level.."P] "..questLogTitleText.."|r"
else
applytext = applytext.."|cff"..color.."["..level.."] "..questLogTitleText.."|r"
end
end
end
end
end
color = ConvertColorFormat(QuestDifficultyColor["header"])
applytext = applytext.." |cff"..color.."("..UBERQUEST_QCOMPLETE..")|r"
end
else
if (applytext ~= "") then
applytext = applytext.."\n"
end
if (UberQuest_Config.showquestlevels) then
if ( questTag == ELITE ) then
applytext = applytext.."|cff"..color.."["..level.."+] "..questLogTitleText.."|r"
else
if ( questTag == RAID or questTag == "Schlachtzug") then
applytext = applytext.."|cff"..color.."["..level.."R] "..questLogTitleText.."|r"
else
if ( questTag == "Dungeon" or questTag == "Donjon" or questTag == "Instanz") then
applytext = applytext.."|cff"..color.."["..level.."D] "..questLogTitleText.."|r"
else
if ( questTag == "PvP") then
applytext = applytext.."|cff"..color.."["..level.."P] "..questLogTitleText.."|r"
else
applytext = applytext.."|cff"..color.."["..level.."] "..questLogTitleText.."|r"
end
end
end
end
else
applytext = applytext.."|cff"..color..questLogTitleText.."|r"
end -- EMERALD END
SelectQuestLogEntry(i)
for j = 1, GetNumQuestLeaderBoards(), 1 do
local text, typ, finished = GetQuestLogLeaderBoard(j)
if ( not text or strlen(text) == 0 ) then
text = typ
end
if (finished) then -- EMERALD START
if (not UberQuest_Config[UberQuest_Player].expireobjectives) then
color = ConvertColorFormat(QuestDifficultyColor["header"])
applytext = applytext.."\n |cff"..color..text.." ("..UBERQUEST_QCOMPLETE..")|r"
end
else -- EMERALD END
local item, now, max
for item, now, max in string.gfind(text,"([^:]+): (%d+)/(%d+)$") do
if (item and now and max) then
if (UberQuest_Config[UberQuest_Player].colorizeobjectives) then
color = DifficultyColor(now,max)
else
color = "ffffff"
end
end
end
applytext = applytext.."\n |cff"..color..text.."|r"
end
end
end
end
i = i + 1
questLogTitleText, level, questTag, isHeader, isCollapsed, isComplete = GetQuestLogTitle(i)
end
if (applytext == "") then
if (UberQuest_Config[UberQuest_Player].hidetext) then
UberQuest_Minion_Text:SetText("")
else
UberQuest_Minion_Text:SetText(UBERQUEST_MINION_NOQUESTS)
end
else
UberQuest_Minion_Text:SetText(applytext)
end
if (UberQuests_ThereAreQuests) then
for i in UberQuest_Config[UberQuest_Player].selected do
if (not questlist[i]) then
UberQuest_Config[UberQuest_Player].selected[i] = nil
UberQuest_ActivityTracker[i] = nil
end
end
end
else
if (UberQuest_Config[UberQuest_Player].hidetext) then
UberQuest_Minion_Text:SetText("")
else
UberQuest_Minion_Text:SetText(UBERQUEST_MINION_NOQUESTS)
end
end
if (UberQuest_SelectedQuest) then
SelectQuestLogEntry(UberQuest_SelectedQuest)
end
local width = UberQuest_Minion_Text:GetWidth() + 15
local height = UberQuest_Minion_Text:GetHeight() + 15
if (width < 100) then width = 100 end
if (height < 30) then height = 30 end
if (UberQuest_MinionSetOnce) then
-- Running this before the Width and Height are set at least once always
-- screws up the corner locking.
UberQuest_Minion_LockCornerForGrowth()
end
UberQuest_MinionSetOnce = 1
UberQuest_Minion:SetWidth(width)
UberQuest_Minion:SetHeight(height)
end
function UberQuest_Minion_LockCornerForGrowth()
local Left = UberQuest_Minion:GetLeft()
local Right = UberQuest_Minion:GetRight()
local Top = UberQuest_Minion:GetTop()
local Bottom = UberQuest_Minion:GetBottom()
local lock
local pointone
local pointtwo
local TOPBOTTOM_MEDIAN = 384
local LEFTRIGHT_MEDIAN = 512
if (Left and Right and Top and Bottom) then
if (Bottom < TOPBOTTOM_MEDIAN and Top > TOPBOTTOM_MEDIAN) then
local topcross = Top - TOPBOTTOM_MEDIAN
local bottomcross = TOPBOTTOM_MEDIAN - Bottom
if (bottomcross > topcross) then
lock = "BOTTOM"
pointtwo = Bottom
else
lock = "TOP"
pointtwo = Top
end
elseif (Top > TOPBOTTOM_MEDIAN) then
lock = "TOP"
pointtwo = Top
elseif (Bottom < TOPBOTTOM_MEDIAN) then
lock = "BOTTOM"
pointtwo = Bottom
end
if (Left < LEFTRIGHT_MEDIAN and Right > LEFTRIGHT_MEDIAN) then
-- Minion crossed the LEFT/RIGHT median
local leftcross = LEFTRIGHT_MEDIAN - Left
local rightcross = Right - LEFTRIGHT_MEDIAN
if (rightcross > leftcross) then
lock = lock.."RIGHT"
pointone = Right
else
lock = lock.."LEFT"
pointone = Left
end
elseif (Left < LEFTRIGHT_MEDIAN) then
lock = lock.."LEFT"
pointone = Left
elseif (Right > LEFTRIGHT_MEDIAN) then
lock = lock.."RIGHT"
pointone = Right
end
if (lock and lock ~= "" and pointone and pointtwo) then
UberQuest_Minion:ClearAllPoints()
UberQuest_Minion:SetPoint(lock,"UIParent","BOTTOMLEFT",pointone,pointtwo)
UberQuest_Config[UberQuest_Player].lock = {}
UberQuest_Config[UberQuest_Player].lock.corner = lock
UberQuest_Config[UberQuest_Player].lock.pointone = pointone
UberQuest_Config[UberQuest_Player].lock.pointtwo = pointtwo
elseif (UberQuests_ThereAreQuests and
UberQuest_Config[UberQuest_Player].lock and
UberQuest_Config[UberQuest_Player].lock.corner and
UberQuest_Config[UberQuest_Player].lock.pointone and
UberQuest_Config[UberQuest_Player].lock.pointtwo) then
UberQuest_Minion:ClearAllPoints()
UberQuest_Minion:SetPoint(UberQuest_Config[UberQuest_Player].lock.corner,"UIParent","BOTTOMLEFT",UberQuest_Config[UberQuest_Player].lock.pointone,UberQuest_Config[UberQuest_Player].lock.pointtwo)
end
end
end
function UberQuest_TitleButton_OnClick(button)
if ( button == "LeftButton" ) then
if ( IsShiftKeyDown() and ChatFrameEditBox:IsVisible() ) then
ChatFrameEditBox:Insert(this:GetText())
end
UberQuest_List_SetSelection(this:GetID() + FauxScrollFrame_GetOffset(UberQuest_List_Scroll))
UberQuest_List_Update()
end
end
function UberQuest_Minion_ColorPick()
ColorPickerFrame.func = UberQuest_Minion_SetColor
ColorPickerFrame.hasOpacity = 1
ColorPickerFrame.opacityFunc = UberQuest_Minion_SetOpacity
ColorPickerFrame.cancelFunc = UberQuest_Minion_Cancel
if (UberQuest_Config.color and UberQuest_Config.color.r and UberQuest_Config.color.g and UberQuest_Config.color.b and UberQuest_Config.color.opacity) then
ColorPickerFrame:SetColorRGB( UberQuest_Config.color.r,
UberQuest_Config.color.g,
UberQuest_Config.color.b)
ColorPickerFrame.opacity = UberQuest_Config.color.opacity
ColorPickerFrame.previousValues = {r=UberQuest_Config.color.r, g=UberQuest_Config.color.g, b=UberQuest_Config.color.b, opacity=UberQuest_Config.color.opacity}
else
ColorPickerFrame:SetColorRGB(TOOLTIP_DEFAULT_BACKGROUND_COLOR.r,TOOLTIP_DEFAULT_BACKGROUND_COLOR.g,TOOLTIP_DEFAULT_BACKGROUND_COLOR.b)
ColorPickerFrame.previousValues = {r=TOOLTIP_DEFAULT_BACKGROUND_COLOR.r, g=TOOLTIP_DEFAULT_BACKGROUND_COLOR.g, b=TOOLTIP_DEFAULT_BACKGROUND_COLOR.b, opacity=0}
ColorPickerFrame.opacity = 0
end
ShowUIPanel(ColorPickerFrame)
end
function UberQuest_Minion_SetColor()
local r,g,b = ColorPickerFrame:GetColorRGB()
UberQuest_MinionBackdrop:SetBackdropColor(r, g, b)
if (not UberQuest_Config.color) then
UberQuest_Config.color = {}
end
UberQuest_Config.color.r = r
UberQuest_Config.color.g = g
UberQuest_Config.color.b = b
UberQuest_Config_Update()
end
function UberQuest_Minion_SetOpacity()
local alpha = 1.0 - OpacitySliderFrame:GetValue()
UberQuest_MinionBackdrop:SetAlpha(alpha)
if (not UberQuest_Config.color) then
UberQuest_Config.color = {}
end
UberQuest_Config.color.opacity = OpacitySliderFrame:GetValue()
end
function UberQuest_Minion_Cancel(previousValues)
if (not UberQuest_Config.color) then
UberQuest_Config.color = {}
end
if (previousValues.r and previousValues.g and previousValues.b) then
UberQuest_MinionBackdrop:SetBackdropColor(previousValues.r, previousValues.g, previousValues.b)
UberQuest_Config.color.r = previousValues.r
UberQuest_Config.color.g = previousValues.g
UberQuest_Config.color.b = previousValues.b
end
if (previousValues.opacity) then
local alpha = 1.0 - previousValues.opacity
UberQuest_MinionBackdrop:SetAlpha(alpha)
UberQuest_Config.color.opacity = previousValues.opacity
end
UberQuest_Config_Update()
end
function UberMinion_Scale_Update()
local scale = UberMinionScale:GetValue() / 100
UberQuest_Minion:SetScale(UIParent:GetScale() * scale)
UberQuest_Config[UberQuest_Player]["scale"] = scale
UberQuest_Minion_Update()
end
function QuestLogTitleButton_OnEnter()
-- Set highlight
getglobal(this:GetName().."Tag"):SetTextColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b)
-- Set group info tooltip
QuestLog_UpdatePartyInfoTooltip()
end
function QuestLog_UpdatePartyInfoTooltip()
local index = this:GetID() + FauxScrollFrame_GetOffset(UberQuest_List_Scroll)
local numPartyMembers = GetNumPartyMembers()
if ( numPartyMembers == 0 or this.isHeader ) then
return
end
GameTooltip_SetDefaultAnchor(GameTooltip, this)
local questLogTitleText = GetQuestLogTitle(index)
GameTooltip:SetText(questLogTitleText)
local isOnQuest, unitName, partyMemberOnQuest
for i=1, numPartyMembers do
isOnQuest = IsUnitOnQuest( index, "party"..i)
unitName = UnitName("party"..i)
if ( isOnQuest and isOnQuest == 1 ) then
if ( not partyMemberOnQuest ) then
GameTooltip:AddLine(HIGHLIGHT_FONT_COLOR_CODE..PARTY_QUEST_STATUS_ON..FONT_COLOR_CODE_CLOSE)
partyMemberOnQuest = 1
end
GameTooltip:AddLine(LIGHTYELLOW_FONT_COLOR_CODE..unitName..FONT_COLOR_CODE_CLOSE)
end
end
if ( not partyMemberOnQuest ) then
GameTooltip:AddLine(HIGHLIGHT_FONT_COLOR_CODE..PARTY_QUEST_STATUS_NONE..FONT_COLOR_CODE_CLOSE)
end
GameTooltip:Show()
end