/trunk
end |
} |
self.timers = {} |
SLASH_URBANACHIEVER1 = "/urbanachiever" |
SLASH_URBANACHIEVER2 = "/ua" |
SlashCmdList["URBANACHIEVER"] = function(msg) |
}, |
["statCriteria"] = true, |
["moneyAsColor"] = false, |
["trackTimed"] = true, |
} |
------------------------------------------------------------- |
--Startup Stuff |
self:SetDisplayAchievement() |
self.masterList[arg1].searchString = self:GetSearchString(arg1) |
self:SubTracker(arg1) |
self.timers[arg1] = nil |
self:TrackerUpdate() |
end) |
self:RegisterEvent("CRITERIA_UPDATE", function() |
self:RegisterEvent("INSPECT_ACHIEVEMENT_READY", function() |
if self.isComparing then |
self:ComparisonUpdate() |
self:RefreshAchievementButtons(false) |
self:RefreshAchievementButtons(false) |
self.frame:Show() |
end |
end) |
--I loooooove that this event gets called for any achievement, not just when you're tracking it. |
self:RegisterEvent("TRACKED_ACHIEVEMENT_UPDATE", function(event, ...) |
local id, _,elapsed, duration = ... |
self:Print(...) |
if duration then |
if UASVPC.trackTimed then self:AddTracker(id) end |
if self.timers[id] and GetTime() - self.timers[id].start >= self.timers[id].duration then |
--Timer has expired, wipe it. |
self.timers[id] = nil |
else |
--No timer, or timer hasn't expired, refresh it |
self.timers[id] = {["start"] = GetTime() - elapsed, ["duration"] = duration} |
end |
end |
self:TrackerUpdate() |
end) |
--Use a different button so InspectAchievements() doesnt get called. Easier hooking. |
UnitPopupButtons["UA_ACHIEVEMENTS"] = { text = COMPARE_ACHIEVEMENTS, dist = 1 }; |
--Replace their Acheivement Button with mine. |
self.frame.comparisonSummaryBar.name:SetWidth(300) |
--Category Scroll Bar |
self.frame.catScroll = CreateFrame("Slider", "$parentCatSlider", self.frame, "UIPanelScrollBarTemplate") |
self.frame.catScroll = CreateFrame("Slider", "$parentCatSlider", self.frame.category, "UIPanelScrollBarTemplate") |
self.frame.catScroll:SetPoint("TOPLEFT", self.frame.catButtons[2], "TOPRIGHT") |
self.frame.catScroll:SetPoint("BOTTOMLEFT", self.frame.catButtons[#self.frame.catButtons - 1], "BOTTOMRIGHT") |
self.frame.catScroll:SetWidth(16) |
if ChatFrameEditBox:IsVisible() and IsModifiedClick("CHATLINK") then |
self:InsertIntoChat(id) |
elseif IsShiftKeyDown() then |
self:AddTracker(id) |
self:ToggleTracker(id) |
self:RefreshAchievementButtons(false) |
else |
self.currentAch = id |
str = "|CFF808080" |
end |
str = str .. criteriaName -- .. "= " .. criteriaQuantity .. " (" .. criteriaAssetID .. ")" |
if UASVPC.specificCriteria and criteriaReqQuantity > 1 then |
str = string.format("%s (%d/%d)", str, criteriaQuantity, criteriaReqQuantity) |
end |
if self.isComparing and not compDone and UASVPC.statCriteria then |
compCriteriaText,comparisonComplete = GetCriteriaComparisonInfo(self.currentAch, a, 1) |
self.tracker.achievements[i] = self:CreateTrackerAchievementFrame("$parentAchievement" .. i, self.tracker) |
self.tracker.achievements[i]:SetPoint("TOPLEFT", self.tracker.achievements[i-1], "BOTTOMLEFT") |
end |
self.tracker:SetScript("OnUpdate", function() self:TrackerOnUpdate() end) |
end |
function self:CreateTrackerAchievementFrame(name, parent) |
self.tracker.achievements[num].bar.text:SetText(cQ .. " / " .. cRQ) |
height = height + 20 |
else |
if UASVPC.specificCriteria and cReqQuantity > 1 then |
cName = string.format("%s (%d/%d)", cName, cQuantity, cReqQuantity) |
end |
str = str .. " - " .. cName .. "\n" |
end |
end |
end |
if self.timers[id] then --There's an active timer for this achievement, display it |
local timer = self.timers[id] |
local timeLeft = math.floor(timer.start + timer.duration - GetTime()) |
str = str .. " - " .. SecondsToTime(timeLeft) .. "\n" |
end |
else --Its a Statistic, display the stat |
self.tracker.achievements[num].icon:Hide() |
str = "|cffffffff - " .. GetStatistic(id) |
self.tracker.achievements[num]:Show() |
end |
function self:ToggleTracker(id) |
if self:IsTracking(id) then |
self:SubTracker(id) |
else |
self:AddTracker(id) |
end |
end |
function self:AddTracker(id) |
--Make sure we're not already tracking |
for i=1, #self.tracker.achievements do |
if self.tracker.achievements[i]:GetID() == id then |
self:SubTracker(id) |
return |
if self.tracker.achievements[i]:GetID() == id then |
self:SetTrackerAchievement(i, id) --Refresh it for timer purposes |
return |
end |
end |
--Add to the end |
for i=1, #self.tracker.achievements do |
if self.tracker.achievements[i]:GetID() == 0 then |
end |
end |
end |
function self:TrackerOnUpdate() |
for id,_ in next, self.timers do |
if self:IsTracking(id) then |
self:AddTracker(id) |
end |
end |
end |
mC:SetChecked(UASVPC.moneyAsColor) |
end) |
local dS = CreateFrame("CheckButton", "UACB3", panel, "OptionsCheckButtonTemplate") |
dS:SetPoint("TOPLEFT", mC, "BOTTOMLEFT", 0, -10) |
dS.text = getglobal(dS:GetName() .. "Text") |
dS.text:SetText("Detailed Criteria") |
dS.tooltipText = "Show the progress of individual criteria." |
dS:SetChecked(UASVPC.specificCriteria) |
dS:SetScript("OnClick", function() |
if dS:GetChecked() then |
PlaySound("igMainMenuOptionCheckBoxOn") |
else |
PlaySound("igMainMenuOptionCheckBoxOff") |
end |
UASVPC.specificCriteria = not UASVPC.specificCriteria |
dS:SetChecked(UASVPC.specificCriteria) |
end) |
local tT = CreateFrame("CheckButton", "UACB4", panel, "OptionsCheckButtonTemplate") |
tT:SetPoint("TOPLEFT", dS, "BOTTOMLEFT", 0, -10) |
tT.text = getglobal(tT:GetName() .. "Text") |
tT.text:SetText("Auto-track timed Achievements") |
tT.tooltipText = "Will begin tracking achievements when a timer is started for one." |
tT:SetChecked(UASVPC.trackTimed) |
tT:SetScript("OnClick", function() |
if tT:GetChecked() then |
PlaySound("igMainMenuOptionCheckBoxOn") |
else |
PlaySound("igMainMenuOptionCheckBoxOff") |
end |
UASVPC.trackTimed = not UASVPC.trackTimed |
tT:SetChecked(UASVPC.trackTimed) |
end) |
InterfaceOptions_AddCategory(panel) |
UrbanAchiever:AddHelpPanel() |
end |