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