annotate Spotlight.lua @ 9:cbf645630277

Reduced a couple of instances of a redundant function call
author Vynn <mischivin@gmail.com>
date Wed, 01 Feb 2017 14:18:49 -0500
parents a30c29933ebc
children 38285b3ff70f
rev   line source
mischivin@0 1 local dataobj = LibStub:GetLibrary("LibDataBroker-1.1"):NewDataObject("Spotlight", {
mischivin@0 2 type = "data source",
mischivin@3 3 text = "Nothing to track!",
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@5 11 SLASH_SPOTLIGHT1, SLASH_SPOTLIGHT2 = "/spotlight", "/Spotlight";
mischivin@5 12
mischivin@5 13 local function SlashHandler(msg)
mischivin@9 14 print("|T" .. Spotlight.Icon .. ":0|t |cffe5cc80Spotlight|r - Artifact Hidden Skin Progress:");
mischivin@5 15 if Spotlight.IDs then
mischivin@5 16 for key, value in pairs(Spotlight.IDs) do
mischivin@5 17 print(" |cffe5cc80" .. key .. " - " .. Spotlight.Format(key, false) .. " (" .. Spotlight.Format(key, true) .. ")|r");
mischivin@5 18 end
mischivin@5 19 end
mischivin@5 20 end
mischivin@5 21
mischivin@5 22 function SlashCmdList.SPOTLIGHT(msg, editbox)
mischivin@5 23 SlashHandler(msg);
mischivin@5 24 end
mischivin@5 25
mischivin@0 26 local function Initialize ()
mischivin@0 27 if not Spotlight.Status then
mischivin@0 28 Spotlight.Status = {
mischivin@0 29 Dungeons = {
mischivin@0 30 Completed = false,
mischivin@0 31 Progress = 0,
mischivin@0 32 Max = 100,
mischivin@0 33 },
mischivin@0 34 WorldQuests = {
mischivin@0 35 Completed = false,
mischivin@0 36 Progress = 0,
mischivin@0 37 Max = 200,
mischivin@0 38 },
mischivin@0 39 PvP = {
mischivin@0 40 Completed = false,
mischivin@0 41 Progress = 0,
mischivin@0 42 Max = 1000,
mischivin@0 43 },
mischivin@0 44 };
mischivin@0 45 Spotlight.ShowPercent = true;
mischivin@0 46 end
mischivin@0 47
mischivin@0 48 Spotlight.IDs = {
mischivin@0 49 Dungeons = 11152,
mischivin@0 50 WorldQuests = 11153,
mischivin@0 51 PvP = 11154,
mischivin@0 52 };
mischivin@0 53
mischivin@0 54 Spotlight.Calculate = function (key)
mischivin@0 55 local value = 0;
mischivin@0 56 for index = 1, GetAchievementNumCriteria(Spotlight.IDs[key]) do
mischivin@0 57 value = value + select(4, GetAchievementCriteriaInfo(Spotlight.IDs[key], index));
mischivin@0 58 end
mischivin@0 59 return value;
mischivin@0 60 end
mischivin@0 61
mischivin@0 62 Spotlight.GetColor = function (value)
mischivin@0 63 value = value * 2;
mischivin@0 64 local r = (2 - value);
mischivin@0 65 local g = value;
mischivin@0 66 local b = 0;
mischivin@0 67
mischivin@0 68 if r > 1 then r = 1 end
mischivin@0 69 if g > 1 then g = 1 end
mischivin@0 70 if b > 1 then b = 1 end
mischivin@0 71
mischivin@0 72 r = string.format("%i", r * 255);
mischivin@0 73 g = string.format("%i", g * 255);
mischivin@0 74 b = string.format("%i", b * 255);
mischivin@0 75
mischivin@0 76 return "ff" .. string.format("%02x", r) .. string.format("%02x", g) .. string.format("%02x", b);
mischivin@0 77 end
mischivin@0 78
mischivin@5 79 Spotlight.Format = function (key, showPercent)
mischivin@0 80 local value = Spotlight.Status[key].Progress / Spotlight.Status[key].Max;
mischivin@5 81 if showPercent then
mischivin@0 82 value = string.format("|c" .. Spotlight.GetColor(value) .. "%.1f|cffffffff%%|r", value * 100);
mischivin@0 83 else
mischivin@0 84 value = "|c" .. Spotlight.GetColor(value) .. Spotlight.Status[key].Progress .. "|cffffffff/" .. Spotlight.Status[key].Max .. "|r";
mischivin@0 85 end
mischivin@0 86 return value;
mischivin@0 87 end
mischivin@0 88
mischivin@0 89 Spotlight.Update = function (self)
mischivin@9 90 Spotlight.Icon = GetInventoryItemTexture("player", 16);
mischivin@9 91
mischivin@0 92 local output = "";
mischivin@0 93 for key, value in pairs(Spotlight.IDs) do
mischivin@0 94 Spotlight.Status[key].Completed = select(3, GetAchievementCriteriaInfo(value,1));
mischivin@0 95 if not Spotlight.Status[key].Completed then
mischivin@0 96 Spotlight.Status[key].Progress = Spotlight.Calculate(key);
mischivin@5 97 if output == "" then
mischivin@5 98 else
mischivin@5 99 output = output .. " ||";
mischivin@5 100 end
mischivin@3 101 if Spotlight.Status[key].Progress > 0 then
mischivin@5 102 output = output .. string.format("|cffe5cc80 %.1s", key) .. ":|r " .. Spotlight.Format(key, Spotlight.ShowPercent);
mischivin@3 103 end
mischivin@0 104 end
mischivin@0 105 end
mischivin@9 106
mischivin@9 107 dataobj.icon = Spotlight.Icon
mischivin@0 108 dataobj.text = output;
mischivin@0 109 end
mischivin@0 110
mischivin@0 111 Spotlight.Update();
mischivin@5 112
mischivin@5 113 return true
mischivin@0 114 end
mischivin@0 115
mischivin@0 116 function dataobj:OnTooltipShow()
mischivin@5 117 self:AddLine("|cffe5cc80Spotlight - Hidden Artifact Skins|r|n|n");
mischivin@0 118 for k, v in pairs(Spotlight.IDs) do
mischivin@5 119 self:AddDoubleLine(k .. ":", Spotlight.Format(k, false) .. " (" .. Spotlight.Format(k, true) .. ")");
mischivin@0 120 end
mischivin@0 121 self:AddLine("|nClick to toggle display method");
mischivin@0 122 end
mischivin@0 123
mischivin@0 124 function dataobj:OnEnter()
mischivin@0 125 GameTooltip:SetOwner(self, "ANCHOR_NONE");
mischivin@0 126 GameTooltip:SetPoint("TOP", self, "BOTTOM");
mischivin@0 127 GameTooltip:ClearLines();
mischivin@0 128 dataobj.OnTooltipShow(GameTooltip);
mischivin@0 129 GameTooltip:Show();
mischivin@0 130 end
mischivin@0 131
mischivin@0 132 function dataobj:OnLeave()
mischivin@0 133 GameTooltip:Hide()
mischivin@0 134 end
mischivin@0 135
mischivin@0 136 local function EventHandler(self, event, ...)
mischivin@0 137 if event == "VARIABLES_LOADED" then
mischivin@5 138 if Initialize() then
mischivin@9 139 print("|T" .. Spotlight.Icon .. ":0|t |cffe5cc80Spotlight v" .. GetAddOnMetadata("Spotlight", "Version") .. " Loaded!|r")
mischivin@5 140 end
mischivin@0 141 end
mischivin@3 142 if event == "CRITERIA_UPDATE" or "PLAYER_ENTERING_WORLD" then
mischivin@0 143 Spotlight.Update();
mischivin@0 144 end
mischivin@0 145 end
mischivin@0 146
mischivin@0 147 local EventListener = CreateFrame("FRAME", "Spotlight");
mischivin@0 148 EventListener:RegisterEvent("VARIABLES_LOADED");
mischivin@0 149 EventListener:RegisterEvent("CRITERIA_UPDATE");
mischivin@3 150 EventListener:RegisterEvent("PLAYER_ENTERING_WORLD");
mischivin@0 151 EventListener:SetScript("OnEvent", EventHandler);
mischivin@0 152