From: Aleksi Blinnikka Date: Wed, 30 Jun 2021 16:29:07 +0000 (+0300) Subject: Add raid marker and bres tracking to OmaTMW X-Git-Url: https://www.aleksib.fi/git/wowui.git/commitdiff_plain/862e8cd2b1a4010ad75f45c0f0d772881d540982?ds=inline Add raid marker and bres tracking to OmaTMW --- diff --git a/OmaTMW/Bres.lua b/OmaTMW/Bres.lua new file mode 100644 index 0000000..4f0d9cc --- /dev/null +++ b/OmaTMW/Bres.lua @@ -0,0 +1,52 @@ +-- Bres.lua +local _; +local min, ceil = math.min, math.ceil; +local GetSpellCharges = GetSpellCharges; +local GetTime = GetTime; +local CTimerAfter = C_Timer.After; + +local frame = CreateFrame("Frame", "OmaBres", UIParent); + +local function tick() + local charges, maxCharges, start, duration = GetSpellCharges(20484); -- Rebirth + if charges then + frame:Show(); + local remain = duration - (GetTime() - start); + if remain < 0 then + frame:Hide(); + CTimerAfter(5, tick); + return; + end + frame.charge:SetText(charges); + frame.cd:SetCooldown(start, duration); + CTimerAfter(min(ceil(remain), 5), tick); + else + frame:Hide(); + CTimerAfter(5, tick); + end +end + +local function bres() + frame:SetPoint("BOTTOMLEFT", UIParent, "BOTTOMLEFT", 580, 0); + frame:SetWidth(48); + frame:SetHeight(48); + frame.base = frame:CreateTexture(nil, "BACKGROUND"); + frame.base:SetAllPoints(); + frame.base:SetColorTexture(0, 0, 0, 0.5); + frame.icon = frame:CreateTexture(nil, "BORDER"); + frame.icon:SetPoint("TOPLEFT", frame.base, "TOPLEFT", 1, -1); + frame.icon:SetPoint("BOTTOMRIGHT", frame.base, "BOTTOMRIGHT", -1, 1); + frame.icon:SetTexCoord(0.07, 0.93, 0.07, 0.93); + frame.icon:SetTexture(136080); -- Rebirth + frame.charge = frame:CreateFontString(nil, "OVERLAY", "NumberFontNormalLarge"); + frame.charge:SetPoint("BOTTOMRIGHT"); + frame.cd = CreateFrame("Cooldown", "OmaBresCD", frame, "CooldownFrameTemplate"); + frame.cd:SetAllPoints(); + frame:UnregisterAllEvents(); + tick(); +end + +frame:SetScript("OnEvent", function(self, event) + return bres(); +end); +frame:RegisterEvent("PLAYER_LOGIN"); diff --git a/OmaTMW/OmaTMW.toc b/OmaTMW/OmaTMW.toc index c766059..08017e5 100644 --- a/OmaTMW/OmaTMW.toc +++ b/OmaTMW/OmaTMW.toc @@ -8,3 +8,5 @@ Healthstone.lua GiftTracker.lua TellMeWhen.lua TirnaHelper.lua +RaidMarker.lua +Bres.lua diff --git a/OmaTMW/RaidMarker.lua b/OmaTMW/RaidMarker.lua new file mode 100644 index 0000000..f7d1e81 --- /dev/null +++ b/OmaTMW/RaidMarker.lua @@ -0,0 +1,30 @@ +-- RaidMarker.lua +local _; +local frame = CreateFrame("Frame", "OmaRaidMarker", UIParent); + +local function frameConf() + frame:SetPoint("CENTER", UIParent, "CENTER", 140, 140); + frame:SetHeight(100); + frame:SetWidth(100); + frame.icon = frame:CreateTexture(nil, "OVERLAY"); + frame.icon:SetAllPoints(); + frame.icon:SetTexture("Interface\\TARGETINGFRAME\\UI-RaidTargetingIcons"); + frame:Hide(); + + frame:UnregisterAllEvents(); + local event = function() + local index = GetRaidTargetIndex("player"); + if index then + SetRaidTargetIconTexture(frame.icon, index); + frame:Show(); + elseif frame:IsShown() then + frame:Hide(); + end + end + frame:SetScript("OnEvent", event); + frame:RegisterEvent("RAID_TARGET_UPDATE"); + event(); +end + +frame:SetScript("OnEvent", frameConf); +frame:RegisterEvent("PLAYER_LOGIN");