annotate Spotlight.lua @ 0:defdd6787d6d v0.7.1.0

Initial Commit of files for Spotlight.
author Vynn <mischivin@gmail.com>
date Sat, 28 Jan 2017 10:27:43 -0500
parents
children c5024af04845
rev   line source
mischivin@0 1 local dataobj = LibStub:GetLibrary("LibDataBroker-1.1"):NewDataObject("Spotlight", {
mischivin@0 2 type = "data source",
mischivin@0 3 text = "Everything Unlocked!",
mischivin@0 4 icon = GetInventoryItemTexture("player", 16),
mischivin@0 5 OnClick = function(clickedframe, button)
mischivin@0 6 Spotlight.ShowPercent = not Spotlight.ShowPercent;
mischivin@0 7 Spotlight.Update();
mischivin@0 8 end,
mischivin@0 9 })
mischivin@0 10
mischivin@0 11 local function Initialize ()
mischivin@0 12 if not Spotlight.Status then
mischivin@0 13 Spotlight.Status = {
mischivin@0 14 Dungeons = {
mischivin@0 15 Completed = false,
mischivin@0 16 Progress = 0,
mischivin@0 17 Max = 100,
mischivin@0 18 },
mischivin@0 19 WorldQuests = {
mischivin@0 20 Completed = false,
mischivin@0 21 Progress = 0,
mischivin@0 22 Max = 200,
mischivin@0 23 },
mischivin@0 24 PvP = {
mischivin@0 25 Completed = false,
mischivin@0 26 Progress = 0,
mischivin@0 27 Max = 1000,
mischivin@0 28 },
mischivin@0 29 };
mischivin@0 30 Spotlight.ShowPercent = true;
mischivin@0 31 end
mischivin@0 32
mischivin@0 33 Spotlight.IDs = {
mischivin@0 34 Dungeons = 11152,
mischivin@0 35 WorldQuests = 11153,
mischivin@0 36 PvP = 11154,
mischivin@0 37 };
mischivin@0 38
mischivin@0 39 Spotlight.Calculate = function (key)
mischivin@0 40 local value = 0;
mischivin@0 41 for index = 1, GetAchievementNumCriteria(Spotlight.IDs[key]) do
mischivin@0 42 value = value + select(4, GetAchievementCriteriaInfo(Spotlight.IDs[key], index));
mischivin@0 43 end
mischivin@0 44 return value;
mischivin@0 45 end
mischivin@0 46
mischivin@0 47 Spotlight.GetColor = function (value)
mischivin@0 48 value = value * 2;
mischivin@0 49 local r = (2 - value);
mischivin@0 50 local g = value;
mischivin@0 51 local b = 0;
mischivin@0 52
mischivin@0 53 if r > 1 then r = 1 end
mischivin@0 54 if g > 1 then g = 1 end
mischivin@0 55 if b > 1 then b = 1 end
mischivin@0 56
mischivin@0 57 r = string.format("%i", r * 255);
mischivin@0 58 g = string.format("%i", g * 255);
mischivin@0 59 b = string.format("%i", b * 255);
mischivin@0 60
mischivin@0 61 return "ff" .. string.format("%02x", r) .. string.format("%02x", g) .. string.format("%02x", b);
mischivin@0 62 end
mischivin@0 63
mischivin@0 64 Spotlight.Format = function (key)
mischivin@0 65 local value = Spotlight.Status[key].Progress / Spotlight.Status[key].Max;
mischivin@0 66 if Spotlight.ShowPercent then
mischivin@0 67 value = string.format("|c" .. Spotlight.GetColor(value) .. "%.1f|cffffffff%%|r", value * 100);
mischivin@0 68 else
mischivin@0 69 value = "|c" .. Spotlight.GetColor(value) .. Spotlight.Status[key].Progress .. "|cffffffff/" .. Spotlight.Status[key].Max .. "|r";
mischivin@0 70 end
mischivin@0 71 return value;
mischivin@0 72 end
mischivin@0 73
mischivin@0 74 Spotlight.Update = function (self)
mischivin@0 75 local output = "";
mischivin@0 76 for key, value in pairs(Spotlight.IDs) do
mischivin@0 77 Spotlight.Status[key].Completed = select(3, GetAchievementCriteriaInfo(value,1));
mischivin@0 78 if not Spotlight.Status[key].Completed then
mischivin@0 79 Spotlight.Status[key].Progress = Spotlight.Calculate(key);
mischivin@0 80 output = output .. string.format(" %.1s", key) .. ":" .. Spotlight.Format(key);
mischivin@0 81 end
mischivin@0 82 end
mischivin@0 83 dataobj.icon = GetInventoryItemTexture("player", 16);
mischivin@0 84 dataobj.text = output;
mischivin@0 85 end
mischivin@0 86
mischivin@0 87 Spotlight.Update();
mischivin@0 88 end
mischivin@0 89
mischivin@0 90 function dataobj:OnTooltipShow()
mischivin@0 91 self:AddLine("Spotlight - Hidden Artifact Tracker|n|n");
mischivin@0 92 for k, v in pairs(Spotlight.IDs) do
mischivin@0 93 self:AddDoubleLine(k .. ":", Spotlight.Format(k));
mischivin@0 94 end
mischivin@0 95 self:AddLine("|nClick to toggle display method");
mischivin@0 96 end
mischivin@0 97
mischivin@0 98 function dataobj:OnEnter()
mischivin@0 99 GameTooltip:SetOwner(self, "ANCHOR_NONE");
mischivin@0 100 GameTooltip:SetPoint("TOP", self, "BOTTOM");
mischivin@0 101 GameTooltip:ClearLines();
mischivin@0 102 dataobj.OnTooltipShow(GameTooltip);
mischivin@0 103 GameTooltip:Show();
mischivin@0 104 end
mischivin@0 105
mischivin@0 106 function dataobj:OnLeave()
mischivin@0 107 GameTooltip:Hide()
mischivin@0 108 end
mischivin@0 109
mischivin@0 110 local function EventHandler(self, event, ...)
mischivin@0 111 if event == "VARIABLES_LOADED" then
mischivin@0 112 Initialize();
mischivin@0 113 end
mischivin@0 114 if event == "CRITERIA_UPDATE" then
mischivin@0 115 Spotlight.Update();
mischivin@0 116 end
mischivin@0 117 end
mischivin@0 118
mischivin@0 119 local EventListener = CreateFrame("FRAME", "Spotlight");
mischivin@0 120 EventListener:RegisterEvent("VARIABLES_LOADED");
mischivin@0 121 EventListener:RegisterEvent("CRITERIA_UPDATE");
mischivin@0 122 EventListener:SetScript("OnEvent", EventHandler);
mischivin@0 123