X-Git-Url: https://www.aleksib.fi/git/wowui.git/blobdiff_plain/d89467e02ca50fb6e77a6b39cf940c6de28a7bcc..7cd9b15270a53b3c833f41e00ed755a30e22b2ef:/OmaRF/RaidFrame.lua diff --git a/OmaRF/RaidFrame.lua b/OmaRF/RaidFrame.lua index 015ce88..ad802cb 100644 --- a/OmaRF/RaidFrame.lua +++ b/OmaRF/RaidFrame.lua @@ -11,10 +11,11 @@ local GameTooltip = nil; local GameTooltip_SetDefaultAnchor = nil; local registerEvents = OmaRFEvents.RegisterEvents; +local registerUnitEvents = OmaRFEvents.RegisterUnitEvents; local unitEvent = OmaRFEvents.UnitEvent; +local setupIndicators = OmaRFIndicators.SetupIndicators; local Settings = OmaRFSettings; -local indSize = Settings.IndSize; local baseColor = Settings.BaseColor; local bgColor = Settings.BgColor; local healthColor = Settings.HealthColor; @@ -22,9 +23,8 @@ local shieldColor = Settings.ShieldColor; local shieldhlColor = Settings.ShieldhlColor; local healpredColor = Settings.HealpredColor; local healabsorbColor = Settings.HealabsorbColor; +local width, height = Settings.Width, Settings.Height; -- placeholders with visible values when error happens -local positions = {}; -local width, height = 10, 10; local anchorX, anchorY = 10, 10; local attributes = {}; @@ -36,44 +36,6 @@ local raid = {}; local M = {}; OmaRaidFrame = M; -local function setupIndicators(frame) - frame.inds = CreateFrame("Frame", nil, frame); - frame.inds:SetAllPoints(); - frame.inds:Hide(); - for _, pos in pairs(positions) do - frame.inds[pos] = frame.inds:CreateTexture(nil, "OVERLAY"); - frame.inds[pos]:SetPoint(pos, frame.inds, pos); - frame.inds[pos]:SetWidth(indSize); - frame.inds[pos]:SetHeight(indSize); - frame.inds[pos]:SetTexture("Interface\\AddOns\\OmaRF\\images\\rhomb"); - frame.inds[pos]:SetVertexColor(1, 0, 0); - frame.inds[pos]:Hide(); - frame.inds[pos].text = frame.inds:CreateFontString(nil, "OVERLAY", "GameFontHighlight"); - frame.inds[pos].text:SetPoint("BOTTOMRIGHT", frame.inds[pos], "BOTTOMRIGHT"); - frame.inds[pos].text: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], "TOPRIGHT"); - end - frame.major[i]:SetWidth(indSize*2); - frame.major[i]:SetHeight(indSize*2); - frame.major[i]:Hide(); - frame.major[i].text = frame.major:CreateFontString(nil, "OVERLAY", "GameFontHighlight"); - frame.major[i].text:SetPoint("BOTTOMRIGHT", frame.major[i], "BOTTOMRIGHT"); - frame.major[i].text:Hide(); - frame.major[i].stack = frame.major:CreateFontString(nil, "OVERLAY", "GameFontHighlight"); - frame.major[i].stack:SetPoint("TOPLEFT", frame.major[i], "TOPLEFT"); - frame.major[i].stack:Hide(); - end -end - local function unitUpdate(self, elapsed) -- there's no in/out of range event, have to check each frame -- from FrameXML/CompactUnitFrame.lua @@ -86,21 +48,10 @@ local function unitUpdate(self, elapsed) end local function frameShow(frame) - frame:RegisterEvent("PARTY_MEMBER_ENABLE"); - frame:RegisterEvent("PARTY_MEMBER_DISABLE"); - frame:RegisterEvent("UNIT_ENTERED_VEHICLE"); - frame:RegisterEvent("UNIT_EXITED_VEHICLE"); - frame:RegisterEvent("UNIT_PET"); - frame:RegisterEvent("PLAYER_ROLES_ASSIGNED"); - frame:RegisterEvent("GROUP_ROSTER_UPDATE"); - frame:RegisterEvent("PLAYER_ENTERING_WORLD"); - frame:RegisterEvent("READY_CHECK"); - frame:RegisterEvent("READY_CHECK_CONFIRM"); - frame:RegisterEvent("READY_CHECK_FINISHED"); - if frame.unit == "focus" then frame:RegisterEvent("PLAYER_FOCUS_CHANGED") end registerEvents(frame); + registerUnitEvents(frame); frame:SetScript("OnUpdate", unitUpdate); - unitEvent(frame, "UPDATE_ALL_BARS", frame.displayed); + unitEvent(frame, "UPDATE_ALL_BARS"); end local function frameHide(frame) @@ -108,12 +59,12 @@ local function frameHide(frame) frame:SetScript("OnUpdate", nil); end -local function showTooltip(frame) - GameTooltip_SetDefaultAnchor(GameTooltip, PlayerFrame); - GameTooltip:SetUnit(frame:GetAttribute("unit")); +local function showTooltip(secure) + GameTooltip_SetDefaultAnchor(GameTooltip, secure); + GameTooltip:SetUnit(secure:GetAttribute("unit")); end -local function hideTooltip(frame) +local function hideTooltip(secure) GameTooltip:FadeOut(); end @@ -124,11 +75,8 @@ local function setupFrame(frame, secure, unit) frame.displayed = unit; -- hide frame to get initial frameShow call frame:Hide(); - if unit == "player" then - frame.vehicle = "vehicle"; - else - frame.vehicle = unit.."pet"; - end + if unit == "player" then frame.vehicle = "vehicle" + else frame.vehicle = unit.."pet" end -- create visuals secure:SetWidth(width+2); secure:SetHeight(height+2); @@ -145,16 +93,13 @@ local function setupFrame(frame, secure, unit) frame.health = frame:CreateTexture(nil, "BORDER"); frame.health:SetTexture("Interface\\RaidFrame\\Raid-Bar-Hp-Fill"); frame.health:SetPoint("TOPLEFT", frame.background, "TOPLEFT"); - frame.health:SetPoint("BOTTOMLEFT", frame.background, "BOTTOMLEFT", 0, 2); + frame.health:SetPoint("BOTTOMLEFT", frame.background, "BOTTOMLEFT"); frame.health:SetVertexColor(unpack(healthColor)); - frame.health:SetWidth(width); - frame.health.max = UnitHealthMax(unit); frame.mana = frame:CreateTexture(nil, "BORDER"); frame.mana:SetPoint("TOPLEFT", frame.background, "BOTTOMLEFT", 0, 2); frame.mana:SetPoint("BOTTOMLEFT", frame.background, "BOTTOMLEFT"); frame.mana:SetColorTexture(1, 1, 1); - frame.mana:SetWidth(width); - frame.mana.max = UnitPowerMax(unit); + frame.mana:Hide(); frame.shield = frame:CreateTexture(nil, "BORDER"); frame.shield:SetPoint("TOPLEFT", frame.health, "TOPRIGHT"); frame.shield:SetPoint("BOTTOMLEFT", frame.health, "BOTTOMRIGHT"); @@ -178,12 +123,11 @@ local function setupFrame(frame, secure, unit) frame.role = frame:CreateTexture(nil, "ARTWORK"); frame.role:SetPoint("BOTTOMRIGHT", frame.background, "BOTTOMRIGHT", -2, 2); frame.role:SetPoint("TOPLEFT", frame.background, "BOTTOMRIGHT", -14, 14); - frame.role:SetTexCoord(0.75, 1, 0, 1); frame.role:SetTexture("Interface\\LFGFRAME\\LFGROLE"); frame.role:Hide(); frame.overlay = frame:CreateTexture(nil, "ARTWORK", nil, 1); frame.overlay:SetPoint("TOPLEFT", frame.background, "TOPLEFT"); - frame.overlay:SetPoint("BOTTOMRIGHT", frame.background, "BOTTOMRIGHT", 0, 2); + frame.overlay:SetPoint("BOTTOMRIGHT", frame.background, "BOTTOMRIGHT"); frame.overlay:SetColorTexture(1, 1, 1); frame.overlay:Hide(); frame.name = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlight"); @@ -198,8 +142,8 @@ local function setupFrame(frame, secure, unit) frame.rez:SetTexture("Interface\\RaidFrame\\Raid-Icon-Rez"); frame.rez:Hide(); frame.ready = frame:CreateTexture(nil, "OVERLAY"); - frame.ready:SetPoint("TOPLEFT", frame.background, "BOTTOMLEFT", 0, 12); - frame.ready:SetPoint("BOTTOMRIGHT", frame.background, "BOTTOMLEFT", 12, 0); + frame.ready:SetPoint("TOPLEFT", frame.background, "BOTTOMLEFT", 0, 14); + frame.ready:SetPoint("BOTTOMRIGHT", frame.background, "BOTTOMLEFT", 14, 0); frame.ready:Hide(); -- set up indicators setupIndicators(frame); @@ -207,9 +151,6 @@ local function setupFrame(frame, secure, unit) frame:SetScript("OnShow", frameShow); frame:SetScript("OnHide", frameHide); frame:SetScript("OnEvent", unitEvent); - -- let other addons hook these to anchor tooltip elsewhere - GameTooltip = _G["GameTooltip"]; - GameTooltip_SetDefaultAnchor = _G["GameTooltip_SetDefaultAnchor"]; secure:SetScript("OnEnter", showTooltip); secure:SetScript("OnLeave", hideTooltip); -- set attributes @@ -322,22 +263,24 @@ local function initializeFocus(parent) secure:SetAttribute("_onstate-vehicleui", vehicletoggle); end +local function loadCharSettings() + anchorX, anchorY = Settings.Character.AnchorX, Settings.Character.AnchorY; + attributes = Settings.Character.Clickheal; +end + local function initialize() + -- let other addons hook these to anchor tooltip elsewhere + GameTooltip = _G["GameTooltip"]; + GameTooltip_SetDefaultAnchor = _G["GameTooltip_SetDefaultAnchor"]; + loadCharSettings(); CFrame:SetPoint("CENTER", nil, "CENTER", anchorX, anchorY); CFrame:SetHeight((height+2)*8); - CFrame:SetWidth((width+2)*5+1); + CFrame:SetWidth((width+2)*5); initializeParty(CFrame); initializeRaid(CFrame); initializeFocus(CFrame); end -local function loadCharSettings() - width, height = Settings.Character.Width, Settings.Character.Height; - anchorX, anchorY = Settings.Character.AnchorX, Settings.Character.AnchorY; - attributes = Settings.Character.Clickheal; - positions = Settings.Character.Positions; -end - -- hiding Blizzard frames somewhat based on ShadowedUF local function hideBlizzardRaidButton() if InCombatLockdown() then return end @@ -384,24 +327,16 @@ local function hideBlizzardRaid() end end -CFrame:RegisterEvent("ADDON_LOADED"); CFrame:RegisterEvent("PLAYER_LOGIN"); CFrame:RegisterEvent("PLAYER_REGEN_ENABLED"); CFrame:SetScript("OnEvent", function(self, event, addon) if event == "PLAYER_LOGIN" then + OmaRFLoadChar(); hideBlizzardRaid(); initialize(); - elseif event == "ADDON_LOADED" and addon == "Blizzard_CompactRaidFrames" then - -- never really happening unless load order changes - hideBlizzardRaid(); elseif event == "PLAYER_REGEN_ENABLED" then -- if CompactRaidFrameManager_UpdateOptionsFlowContainer was called in combat -- couldn't hide the button hideBlizzardRaidButton(); - elseif event == "ADDON_LOADED" and addon == "OmaRF" then - OmaRFLoadChar(); - loadCharSettings(); - OmaRFEvents.LoadChar(); - OmaRFIndicators.LoadChar(); end end);