QuillsObjectiveTracker = LibStub("AceAddon-3.0"):NewAddon("QuillsObjectiveTracker", "AceConsole-3.0", "AceEvent-3.0" ); function QuillsObjectiveTracker:OnInitialize() -- Called when the addon is loaded -- Print a message to the chat frame self:Print("OnInitialize Event Fired: Hello") self.quests = {} end function QuillsObjectiveTracker:OnEnable() -- Called when the addon is enabled -- Print a message to the chat frame self:Print("OnEnable Event Fired: Hello, again ;)") self:CreateQuestFrame() end function QuillsObjectiveTracker:OnDisable() -- Called when the addon is disabled end QuillsObjectiveTracker.QuestTrackerFrame = nil function QuillsObjectiveTracker:CreateQuestFrame() quest_tracker_frame = CreateFrame("Frame", "QOL_Quests", UIParent) quest_tracker_frame:Hide() quest_tracker_frame:SetFrameStrata("LOW") quest_tracker_frame:SetWidth(250) quest_tracker_frame:SetHeight(310) quest_tracker_frame:SetPoint("CENTER") quest_tracker_frame:SetMovable(true) quest_tracker_frame:EnableMouse(true) quest_tracker_frame:RegisterForDrag("LeftButton") quest_tracker_frame:SetScript("OnDragStart", quest_tracker_frame.StartMoving) quest_tracker_frame:SetScript("OnDragStop", quest_tracker_frame.StopMovingOrSizing) local dialogbg = quest_tracker_frame:CreateTexture() dialogbg:SetAllPoints(quest_tracker_frame) dialogbg:SetColorTexture(0.06, 0.06, 0.06, 0.92) local titlebg = quest_tracker_frame:CreateTexture(nil, "BORDER") titlebg:SetTexture(251966) --"Interface\\PaperDollInfoFrame\\UI-GearManager-Title-Background" titlebg:SetPoint("TOPLEFT", 9, -6) titlebg:SetPoint("BOTTOMRIGHT", quest_tracker_frame, "TOPRIGHT", -28, -24) local close = CreateFrame("Button", nil, quest_tracker_frame, "UIPanelCloseButton") close:SetPoint("TOPRIGHT", 2, 1) close:SetScript("OnClick", QuillsObjectiveTracker.Close) local minimise = CreateFrame("Button", nil, quest_tracker_frame, "UIPanelCloseButton") minimise:SetPoint("TOPRIGHT", close, "TOPLEFT", 2, 0) minimise:SetScript("OnClick", QuillsObjectiveTracker.Close) sessionLabel = CreateFrame("Button", nil, quest_tracker_frame) sessionLabel:SetNormalFontObject("GameFontNormalLeft") sessionLabel:SetHighlightFontObject("GameFontHighlightLeft") sessionLabel:SetPoint("TOPLEFT", titlebg, 6, -1) sessionLabel:SetPoint("BOTTOMRIGHT", titlebg, "BOTTOMRIGHT", -26, 1) sessionLabel:SetScript("OnHide", function() quest_tracker_frame:StopMovingOrSizing() end) sessionLabel:SetScript("OnDoubleClick", function() -- Open Quest Log end) local total_entries, numQuests = C_QuestLog.GetNumQuestLogEntries() local watched_quests = C_QuestLog.GetNumQuestWatches() sessionLabel:SetText(("Quests - %d/%d"):format(numQuests, MAX_QUESTS)) local scroll = CreateFrame("ScrollFrame", "QOL_Quests_Scroll", quest_tracker_frame, "UIPanelScrollFrameTemplate") scroll:SetPoint("TOPLEFT", sessionLabel, "BOTTOMLEFT", 4, -4) scroll:SetPoint("BOTTOMRIGHT", -4, 4) scroll:SetClipsChildren(true) --scroll:EnableMouseWheel(true) scroll_items = CreateFrame("Frame", "QOL_Quests_ScrollItems", scroll) scroll_items:SetWidth(250) scroll_items:SetHeight(0) local scroll_bg = scroll_items:CreateTexture() scroll_bg:SetAllPoints(scroll_items) scroll_bg:SetColorTexture(1, 0.06, 0.06, 0.92) scroll_items.quests = {} local flip = true for i=1, watched_quests do local quest_id = C_QuestLog.GetQuestIDForQuestWatchIndex(i) local quest_log_index = C_QuestLog.GetLogIndexForQuestID(quest_id) local quest_info = C_QuestLog.GetInfo(quest_log_index) local numQuestLogLeaderBoards = GetNumQuestLeaderBoards(quest_id) local isInArea, isOnMap, numObjectives = GetTaskInfo(quest_id) self:Print(quest_info.title) self:Print(numQuestLogLeaderBoards) if numQuestLogLeaderBoards ~= nil then for j=1, numQuestLogLeaderBoards do local text, objectiveType, finished = GetQuestObjectiveInfo(quest_id, objectiveIndex, Boolean) self:Print(text, objectiveType, finished) end end local current_height = scroll_items:GetHeight() new_entry = CreateFrame("Button", nil, scroll_items) scroll_items.quests[i] = new_entry new_entry:SetNormalFontObject("GameFontNormalLeft") new_entry:SetHighlightFontObject("GameFontHighlightLeft") new_entry:SetText(quest_info.title) font = new_entry:GetFontString() new_entry:SetHeight(font:GetStringHeight()+4) new_entry:SetWidth(250) if i == 1 then new_entry:SetPoint("TOPLEFT", 5, 0) else new_entry:SetPoint("TOPLEFT", scroll_items.quests[i-1], "BOTTOMLEFT", 0, 0) end local bg = new_entry:CreateTexture() bg:SetAllPoints(new_entry) if flip then bg:SetColorTexture(0.06, 1, 0.06, 0.92) else bg:SetColorTexture(0.06, 0.06, 1, 0.92) end flip = not flip new_entry:Show() local new_height = current_height + new_entry:GetHeight() --self:Print(current_height, new_height) scroll_items:SetHeight(new_height) end scroll:SetScrollChild(scroll_items) quest_tracker_frame:Show() end function QuillsObjectiveTracker:Close() --quest_tracker_frame:Hide() end function QuillsObjectiveTracker:AddQuest(title) end