X-Git-Url: https://www.aleksib.fi/git/wowui.git/blobdiff_plain/6e06bfb151855f946ceb1885d310598e612fa128..7cd9b15270a53b3c833f41e00ed755a30e22b2ef:/OmaUF/UnitFrames.lua diff --git a/OmaUF/UnitFrames.lua b/OmaUF/UnitFrames.lua index d2e5fcc..2c338f0 100644 --- a/OmaUF/UnitFrames.lua +++ b/OmaUF/UnitFrames.lua @@ -21,8 +21,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 width, height = 10, 10; local anchorX, anchorY = 10, 10; local attributes = {}; @@ -51,6 +51,15 @@ local events = { "PLAYER_ENTERING_WORLD", "PLAYER_TARGET_CHANGED", }, + ["pet"] = { + "UNIT_ENTERED_VEHICLE", + "UNIT_EXITED_VEHICLE", + "UNIT_PET", + "PLAYER_ENTERING_WORLD", + "PLAYER_LEVEL_UP", + "PLAYER_REGEN_DISABLED", + "PLAYER_REGEN_ENABLED", + }, }; local M = {}; @@ -68,16 +77,16 @@ local function frameHide(frame) frame:UnregisterAllEvents(); 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 -local function setupFrame(frame, secure, unit) +local function setupFrame(frame, secure, unit, width, height) secure:SetAttribute("unit", unit); frame:SetAttribute("unit", unit); frame.unit = unit; @@ -90,6 +99,11 @@ local function setupFrame(frame, secure, unit) frame.vehicle = unit.."pet"; end -- create visuals + secure:SetWidth(width+2); + secure:SetHeight(height+2); + frame:SetWidth(width+2); + frame:SetHeight(height+2); + frame.width = width; frame.base = frame:CreateTexture(nil, "BACKGROUND"); frame.base:SetAllPoints(); frame.base:SetColorTexture(1, 1, 1); @@ -144,11 +158,6 @@ local function setupFrame(frame, secure, unit) frame.healabsorb:SetPoint("BOTTOMRIGHT", frame.health, "BOTTOMRIGHT"); frame.healabsorb:SetColorTexture(unpack(healabsorbColor)); frame.healabsorb:Hide(); - frame.overlay = frame:CreateTexture(nil, "ARTWORK", nil, 1); - frame.overlay:SetPoint("TOPLEFT", frame.healthback, "TOPLEFT"); - frame.overlay:SetPoint("BOTTOMRIGHT", frame.healthback, "BOTTOMRIGHT"); - frame.overlay:SetColorTexture(1, 1, 1); - frame.overlay:Hide(); frame.role = frame:CreateTexture(nil, "OVERLAY"); frame.role:SetPoint("TOPLEFT", frame.healthback, "TOPRIGHT", -8, 8); frame.role:SetPoint("BOTTOMRIGHT", frame.healthback, "TOPRIGHT", 8, -8); @@ -168,17 +177,16 @@ local function setupFrame(frame, secure, unit) frame.leader:SetPoint("TOPLEFT", frame.healthback, "TOPLEFT", -6, 6); frame.leader:SetPoint("BOTTOMRIGHT", frame.healthback, "TOPLEFT", 6, -6); frame.leader:Hide(); - frame.name = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlightLarge"); - frame.name:SetPoint("LEFT", frame.healthback, "LEFT", 2, 1); - frame.level = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlight"); - frame.level:SetPoint("LEFT", frame.manaback, "LEFT", 2, 1); + if unit ~= "pet" then + frame.name = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlightLarge"); + frame.name:SetPoint("LEFT", frame.healthback, "LEFT", 2, 1); + frame.level = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlight"); + frame.level:SetPoint("LEFT", frame.manaback, "LEFT", 2, 1); + end -- set scripts 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 @@ -206,16 +214,23 @@ local function initializePlayer(parent) local frame = CreateFrame("Frame", "OmaPlayer", parent); local unit = "player"; secure:SetPoint("CENTER", parent, "CENTER", -300, -175); - secure:SetWidth(width+2); - secure:SetHeight(height+2); frame:SetPoint("CENTER", parent, "CENTER", -300, -175); - frame:SetWidth(width+2); - frame:SetHeight(height+2); - setupFrame(frame, secure, unit); + setupFrame(frame, secure, unit, width, height); + RegisterUnitWatch(frame); + RegisterUnitWatch(secure); + --RegisterStateDriver(secure, "vehicleui", "[vehicleui] vehicle; no"); + --secure:SetAttribute("_onstate-vehicleui", vehicletoggle); +end + +local function initializePet(parent) + local secure = CreateFrame("Button", "OmaPetSecure", parent, inheritedFrames); + local frame = CreateFrame("Frame", "OmaPet", parent); + local unit = "pet"; + secure:SetPoint("TOPRIGHT", parent, "TOPLEFT", -10, 0); + frame:SetPoint("TOPRIGHT", parent, "TOPLEFT", -10, 0); + setupFrame(frame, secure, unit, width/2, height/2); RegisterUnitWatch(frame); RegisterUnitWatch(secure); - RegisterStateDriver(secure, "vehicleui", "[vehicleui] vehicle; no"); - secure:SetAttribute("_onstate-vehicleui", vehicletoggle); end local function initializeTarget(parent) @@ -223,28 +238,25 @@ local function initializeTarget(parent) local frame = CreateFrame("Frame", "OmaTarget", parent); local unit = "target"; secure:SetPoint("CENTER", parent, "CENTER", 300, -175); - secure:SetWidth(width+2); - secure:SetHeight(height+2); frame:SetPoint("CENTER", parent, "CENTER", 300, -175); - frame:SetWidth(width+2); - frame:SetHeight(height+2); - setupFrame(frame, secure, unit); + setupFrame(frame, secure, unit, width, height); createAuraFrame(frame, unit); RegisterUnitWatch(frame); RegisterUnitWatch(secure); - RegisterStateDriver(secure, "vehicleui", "[vehicleui] vehicle; no"); - secure:SetAttribute("_onstate-vehicleui", vehicletoggle); end local function loadCharSettings() - width, height = Settings.Character.Width, Settings.Character.Height; anchorX, anchorY = Settings.Character.AnchorX, Settings.Character.AnchorY; attributes = Settings.Character.Clickheal; end local function initialize() loadCharSettings(); + -- let other addons hook these to anchor tooltip elsewhere + GameTooltip = _G["GameTooltip"]; + GameTooltip_SetDefaultAnchor = _G["GameTooltip_SetDefaultAnchor"]; initializePlayer(UIParent); + initializePet(_G["OmaPlayer"]); initializeTarget(UIParent); -- TODO boss frames, pet frame, (arena frames) end @@ -254,7 +266,7 @@ local function hideBlizzardFrames() if hidden then return end hidden = true; - for _, frame in pairs({PlayerFrame, TargetFrame, TargetFrameToT}) do + for _, frame in pairs({PlayerFrame, TargetFrame, TargetFrameToT, PetFrame}) do frame:UnregisterAllEvents(); frame.healthbar:UnregisterAllEvents(); frame.manabar:UnregisterAllEvents(); @@ -286,7 +298,6 @@ UnitFrames:RegisterEvent("PLAYER_LOGIN"); UnitFrames:SetScript("OnEvent", function(self, event) if event == "PLAYER_LOGIN" then OmaUFLoadChar(); - OmaUFEvents.LoadChar(); hideBlizzardFrames(); initialize(); end