X-Git-Url: https://www.aleksib.fi/git/wowui.git/blobdiff_plain/60bc5ec4ced3b57fd841af7f693728049a0d09a0..7cd9b15270a53b3c833f41e00ed755a30e22b2ef:/OmaUF/UnitFrames.lua diff --git a/OmaUF/UnitFrames.lua b/OmaUF/UnitFrames.lua index 8a49add..2c338f0 100644 --- a/OmaUF/UnitFrames.lua +++ b/OmaUF/UnitFrames.lua @@ -10,6 +10,7 @@ local GameTooltip_SetDefaultAnchor = nil; local registerEvents = OmaUFEvents.RegisterEvents; local unitEvent = OmaUFEvents.UnitEvent; +local createAuraFrame = OmaUFAuras.CreateAuraFrame; local Settings = OmaUFSettings; local indSize = Settings.IndSize; @@ -20,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 = {}; @@ -50,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 = {}; @@ -67,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; @@ -89,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); @@ -143,15 +158,10 @@ 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); - frame.role:SetTexture("Interface\\LFGFRAME\\UI-LFG-ICON-ROLES"); + frame.role:SetTexture("Interface\\LFGFRAME\\UI-LFG-ICON-PORTRAITROLES"); frame.role:Hide(); frame.status = frame:CreateTexture(nil, "OVERLAY"); frame.status:SetPoint("TOPLEFT", frame.manaback, "BOTTOMLEFT", -8, 8); @@ -159,21 +169,24 @@ local function setupFrame(frame, secure, unit) frame.status:SetTexture("Interface\\CHARACTERFRAME\\UI-StateIcon"); frame.status:Hide(); frame.pvp = frame:CreateTexture(nil, "OVERLAY"); - frame.pvp:SetPoint("TOPLEFT", frame.healthback, "TOPLEFT", -6, 6); - frame.pvp:SetPoint("BOTTOMRIGHT", frame.healthback, "TOPLEFT", 16, -16); + frame.pvp:SetPoint("TOPLEFT", frame.manaback, "BOTTOMLEFT", 8, 6); + frame.pvp:SetPoint("BOTTOMRIGHT", frame.manaback, "BOTTOMLEFT", 32, -18); frame.pvp:SetTexture("Interface\\TARGETINGFRAME\\UI-PVP-Horde"); frame.pvp: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); + frame.leader = frame:CreateTexture(nil, "OVERLAY"); + frame.leader:SetPoint("TOPLEFT", frame.healthback, "TOPLEFT", -6, 6); + frame.leader:SetPoint("BOTTOMRIGHT", frame.healthback, "TOPLEFT", 6, -6); + frame.leader:Hide(); + 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 @@ -200,56 +213,92 @@ local function initializePlayer(parent) local secure = CreateFrame("Button", "OmaPlayerSecure", parent, inheritedFrames); local frame = CreateFrame("Frame", "OmaPlayer", parent); local unit = "player"; - secure:SetPoint("CENTER", parent, "CENTER", -320, -100); - secure:SetWidth(width+2); - secure:SetHeight(height+2); - frame:SetPoint("CENTER", parent, "CENTER", -320, -100); - frame:SetWidth(width+2); - frame:SetHeight(height+2); - setupFrame(frame, secure, unit); + secure:SetPoint("CENTER", parent, "CENTER", -300, -175); + frame:SetPoint("CENTER", parent, "CENTER", -300, -175); + 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) local secure = CreateFrame("Button", "OmaTargetSecure", parent, inheritedFrames); local frame = CreateFrame("Frame", "OmaTarget", parent); local unit = "target"; - secure:SetPoint("CENTER", parent, "CENTER", 320, -100); - secure:SetWidth(width+2); - secure:SetHeight(height+2); - frame:SetPoint("CENTER", parent, "CENTER", 320, -100); - frame:SetWidth(width+2); - frame:SetHeight(height+2); - setupFrame(frame, secure, unit); - -- TODO target frame buffs/debuffs + secure:SetPoint("CENTER", parent, "CENTER", 300, -175); + frame:SetPoint("CENTER", parent, "CENTER", 300, -175); + 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() + 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 -local function loadCharSettings() - width, height = Settings.Character.Width, Settings.Character.Height; - anchorX, anchorY = Settings.Character.AnchorX, Settings.Character.AnchorY; - attributes = Settings.Character.Clickheal; +local hidden = false; +local function hideBlizzardFrames() + if hidden then return end + hidden = true; + + for _, frame in pairs({PlayerFrame, TargetFrame, TargetFrameToT, PetFrame}) do + frame:UnregisterAllEvents(); + frame.healthbar:UnregisterAllEvents(); + frame.manabar:UnregisterAllEvents(); + if frame.spellbar then frame.spellbar:UnregisterAllEvents() end + if frame.powerBarAlt then frame.powerBarAlt:UnregisterAllEvents() end + frame:Hide(); + end + + -- TODO create frames for class powers, currently using Simple Holy Power + for _, frame in pairs({PlayerFrameAlternateManaBar, ComboFrame, + PriestBarFrame, RuneFrame, WarlockPowerFrame, MonkHarmonyBarFrame, + PaladinPowerBarFrame, MageArcaneChargesFrame}) do + frame:UnregisterAllEvents(); + frame:Hide(); + end + + -- from ShadowedUF, re-register vehicle events for default auras + PlayerFrame:RegisterEvent("PLAYER_ENTERING_WORLD"); + PlayerFrame:RegisterEvent("UNIT_ENTERING_VEHICLE"); + PlayerFrame:RegisterEvent("UNIT_ENTERED_VEHICLE"); + PlayerFrame:RegisterEvent("UNIT_EXITING_VEHICLE"); + PlayerFrame:RegisterEvent("UNIT_EXITED_VEHICLE"); + PlayerFrame:SetMovable(true); + PlayerFrame:SetUserPlaced(true); + PlayerFrame:SetDontSavePosition(true); end -UnitFrames:RegisterEvent("ADDON_LOADED"); UnitFrames:RegisterEvent("PLAYER_LOGIN"); UnitFrames:SetScript("OnEvent", function(self, event) if event == "PLAYER_LOGIN" then - initialize(); - elseif event == "ADDON_LOADED" then OmaUFLoadChar(); - loadCharSettings(); - OmaUFEvents.LoadChar(); + hideBlizzardFrames(); + initialize(); end end);