c23b2d1 - Move some standard blizzard frames
[wowui.git] / OmaUF / UnitFrames.lua
index 0a812d4..f477e37 100644 (file)
@@ -1,18 +1,26 @@
 -- UnitFrames.lua
 local _;
 local pairs = pairs;
+local InCombatLockdown = InCombatLockdown;
+local CTimerAfter = C_Timer.After;
 
-local UnitFrames = CreateFrame("Frame", "OmaUnitFrames");
+local updateAuraTooltips = OmaUFAuras.UpdateAuraTooltips;
+
+local UnitFrames = CreateFrame("Frame", "OmaUnitFrames", UIParent);
 
 local M = {};
 OmaUnitFrames = M;
 
 local function initialize()
-    local player = M.InitializePlayer(UIParent);
-    --M.InitializePet(player);
-    local target = M.InitializeTarget(UIParent);
-    --M.InitializeToT(target);
-    -- TODO boss frames, (arena frames)
+    UnitFrames:SetFrameStrata("LOW");
+    UnitFrames:SetPoint("CENTER");
+    UnitFrames:SetWidth(1);
+    UnitFrames:SetHeight(1);
+    local player = M.InitializePlayer(UnitFrames);
+    M.InitializePet(player);
+    local target = M.InitializeTarget(UnitFrames);
+    --M.InitializeToT(target); -- might not do this
+    M.InitializeBoss(UnitFrames);
 end
 
 local hidden = false;
@@ -20,23 +28,24 @@ local function hideBlizzardFrames()
     if hidden then return end
     hidden = true;
 
-    for _, frame in pairs({PlayerFrame, TargetFrame, TargetFrameToT, PetFrame}) do
+    local frames = {PlayerFrame, TargetFrame, TargetFrameToT, PetFrame,
+        PlayerFrameAlternateManaBar, ComboFrame, PriestBarFrame, RuneFrame,
+        WarlockPowerFrame, MonkHarmonyBarFrame, PaladinPowerBarFrame,
+        MageArcaneChargesFrame, CastingBarFrame, PetCastingBarFrame};
+    for i = 1,MAX_BOSS_FRAMES do
+        --table.insert(frames, _G["Boss"..i.."TargetFrame"]);
+        --table.insert(frames, _G["Boss"..i.."TargetFrameHealthBar"]);
+        --table.insert(frames, _G["Boss"..i.."TargetFrameManaBar"]);
+    end
+    for _, frame in pairs(frames) do
         frame:UnregisterAllEvents();
-        frame.healthbar:UnregisterAllEvents();
-        frame.manabar:UnregisterAllEvents();
+        if frame.healthbar then frame.healthbar:UnregisterAllEvents() end
+        if frame.manabar then frame.manabar:UnregisterAllEvents() end
         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");
@@ -48,9 +57,40 @@ local function hideBlizzardFrames()
     PlayerFrame:SetDontSavePosition(true);
 end
 
+-- untested, not playing arena, from ShadowedUF
+local hiddenFrame = CreateFrame("Frame");
+hiddenFrame:Hide();
+local arenaHidden = false;
+local function hideArenaFrames()
+    -- not run if /reload happens in combat, may cause problems?
+    if not arenaHidden and not InCombatLockdown() then
+        arenaHidden = true;
+        ArenaEnemyFrames:UnregisterAllEvents();
+        ArenaEnemyFrames:SetParent(hiddenFrame);
+        ArenaPrepFrames:UnregisterAllEvents();
+        ArenaPrepFrames:SetParent(hiddenFrame);
+        SetCVar("showArenaEnemyFrames", 0, "SHOW_ARENA_ENEMY_FRAMES_TEXT");
+    end
+end
+
+local function updateTooltipFuncs()
+    -- let MoveAnything hook these to anchor tooltip elsewhere
+    M.UpdatePlayerTooltips();
+    M.UpdatePetTooltips();
+    M.UpdateTargetTooltips();
+    M.UpdateBossTooltips();
+    updateAuraTooltips();
+end
+
 UnitFrames:RegisterEvent("PLAYER_LOGIN");
-UnitFrames:SetScript("OnEvent", function(self, event)
-    if event == "PLAYER_LOGIN" then
+UnitFrames:RegisterEvent("PLAYER_ENTERING_WORLD");
+UnitFrames:RegisterEvent("ADDON_LOADED");
+UnitFrames:SetScript("OnEvent", function(self, event, addon)
+    if event == "PLAYER_ENTERING_WORLD" then
+        CTimerAfter(0.01, updateTooltipFuncs);
+    elseif event == "ADDON_LOADED" and addon == "Blizzard_ArenaUI" then
+        hideArenaFrames();
+    elseif event == "PLAYER_LOGIN" then
         OmaUFLoadChar();
         hideBlizzardFrames();
         initialize();