X-Git-Url: https://www.aleksib.fi/git/wowui.git/blobdiff_plain/bf7bbcc53ab8a1db9cef615c4db7ce0c7abe797d..b13d011fccb7f54165883e06d1047d6570a62675:/OmaRF/CFrame.lua diff --git a/OmaRF/CFrame.lua b/OmaRF/CFrame.lua index 5049497..4aa70e6 100644 --- a/OmaRF/CFrame.lua +++ b/OmaRF/CFrame.lua @@ -13,6 +13,7 @@ local IsInGroup, IsInRaid = IsInGroup, IsInRaid; local UnitIsCharmed = UnitIsCharmed; local CreateFrame, RegisterStateDriver, RegisterUnitWatch = CreateFrame, RegisterStateDriver, RegisterUnitWatch; local SPELL_POWER_MANA = SPELL_POWER_MANA; +local checkIndicators = OmaCheckIndicators; local CFrame = CreateFrame("Frame", "OmaCFrame", UIParent); local party = {}; @@ -21,16 +22,17 @@ local positions = {"TOPRIGHT", "BOTTOMLEFT"}; -- configurable settings local width, height = 80, 40; -local anchorX, anchorY = 0, -200; +local anchorX, anchorY = 0, -330; local indSize = 14; local bgColor = {0.7, 0.7, 0.7}; -local bgColorDispel = {1, 0.5, 0}; local healthColor = {0.3, 0.3, 0.3}; -local healthColorDispel = {0.8, 0.4, 0}; local shieldColor = {0, 0.7, 1}; local shieldhlColor = {0.5, 0.8, 1}; local healpredColor = {0.5, 0.6, 0.5}; local healabsorbColor = {0.1, 0.1, 0.1}; +local overlayColorDispel = {1, 0.5, 0, 0.5}; +local overlayColorCharm = {0.8, 0, 1, 0.5}; +local overlayColorAlert = {1, 0, 0, 0.5}; local powerColors = { [SPELL_POWER_MANA] = {0, 0.5, 1}, [SPELL_POWER_RAGE] = {1, 0.2, 0}, @@ -128,21 +130,24 @@ local function updateHealAbsorb(frame, unit) end local function updateAuras(frame, unit) + checkIndicators(frame, unit); if UnitDebuff(unit, 1, "RAID") ~= nil then -- something dispellable - if frame.health.color ~= healthColorDispel then - -- TODO change to a texture layered on top tinting whole bar - frame.health:SetStatusBarColor(unpack(healthColorDispel)); - frame.background:SetColorTexture(unpack(bgColorDispel)); - frame.health.color = healthColorDispel; + if frame.overlay.color ~= overlayColorDispel then + frame.overlay:SetColorTexture(unpack(overlayColorDispel)); + frame.overlay:Show(); + frame.overlay.color = overlayColorDispel; end elseif UnitIsCharmed(unit) then - -- TODO purple + if frame.overlay.color ~= overlayColorCharm then + frame.overlay:SetColorTexture(unpack(overlayColorCharm)); + frame.overlay:Show(); + frame.overlay.color = overlayColorCharm; + end else - if frame.health.color ~= healthColor then - frame.health:SetStatusBarColor(unpack(healthColor)); - frame.background:SetColorTexture(unpack(bgColor)); - frame.health.color = healthColor; + if frame.overlay.color ~= nil then + frame.overlay:Hide(); + frame.overlay.color = nil; end end end @@ -175,6 +180,7 @@ local function unitEvent(self, event, ...) updateAuras(self, arg1); updateShield(self, arg1); updateHealPred(self, arg1); + updateHealAbsorb(self, arg1); updateMaxHealth(self, arg1); updateMaxPower(self, arg1); updatePowerColor(self, arg1); @@ -272,6 +278,21 @@ local function setupIndicators(frame) frame.inds[pos]:SetWidth(indSize); frame.inds[pos]:SetHeight(indSize); frame.inds[pos]:SetTexture("Interface\\AddOns\\OmaRF\\images\\rhomb"); + frame.inds[pos]:Hide(); + end + frame.major = CreateFrame("Frame", nil, frame); + frame.major:SetPoint("TOPLEFT", frame, "TOPLEFT", 4, -indSize + 4); + frame.major:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT"); + for i = 1,3 do + frame.major[i] = frame.major:CreateTexture(nil, "OVERLAY"); + if i == 1 then + frame.major[i]:SetPoint("TOPLEFT", frame.major, "TOPLEFT"); + else + frame.major[i]:SetPoint("TOPLEFT", frame.major[i-1], "TOPLEFT"); + end + frame.major[i]:SetWidth(indSize*2); + frame.major[i]:SetHeight(indSize*2); + frame.major[i]:Hide(); end end @@ -293,7 +314,6 @@ local function setupFrame(frame, secure, unit) frame.health.bar:SetTexture("Interface\\RaidFrame\\Raid-Bar-Hp-Fill"); frame.health:SetStatusBarTexture(frame.health.bar); frame.health:SetStatusBarColor(unpack(healthColor)); - frame.health.color = healthColor; frame.shield = frame.health:CreateTexture(nil, "ARTWORK"); frame.shield:SetPoint("TOPLEFT", frame.health.bar, "TOPRIGHT"); frame.shield:SetPoint("BOTTOMLEFT", frame.health.bar, "BOTTOMRIGHT"); @@ -320,6 +340,9 @@ local function setupFrame(frame, secure, unit) frame.mana.bar = frame.mana:CreateTexture(nil, "ARTWORK"); frame.mana.bar:SetColorTexture(1, 1, 1); frame.mana:SetStatusBarTexture(frame.mana.bar); + frame.overlay = frame.health:CreateTexture(nil, "ARTWORK", nil, 2); + frame.overlay:SetAllPoints(); + frame.overlay:Hide(); frame.name = frame.health:CreateFontString(nil, "OVERLAY", "GameFontHighlight"); frame.name:SetPoint("TOPLEFT", frame.background, "TOPLEFT"); local name = UnitName(unit);