b205549 - Add Caustic Slime from Hasabel
[wowui.git] / OmaUF / UnitFrames.lua
1 -- UnitFrames.lua
2 local _;
3 local pairs = pairs;
4 local InCombatLockdown = InCombatLockdown;
5 local CTimerAfter = C_Timer.After;
6
7 local updateAuraTooltips = OmaUFAuras.UpdateAuraTooltips;
8
9 local UnitFrames = CreateFrame("Frame", "OmaUnitFrame", UIParent);
10
11 local M = {};
12 OmaUnitFrames = M;
13
14 local function initialize()
15     UnitFrames:SetFrameStrata("LOW");
16     UnitFrames:SetPoint("CENTER");
17     UnitFrames:SetWidth(1);
18     UnitFrames:SetHeight(1);
19     local player = M.InitializePlayer(UnitFrames);
20     M.InitializePet(player);
21     local target = M.InitializeTarget(UnitFrames);
22     --M.InitializeToT(target); -- might not do this
23     M.InitializeBoss(UnitFrames);
24 end
25
26 local hidden = false;
27 local function hideBlizzardFrames()
28     if hidden then return end
29     hidden = true;
30
31     local frames = {PlayerFrame, TargetFrame, TargetFrameToT, PetFrame,
32         PlayerFrameAlternateManaBar, ComboFrame, PriestBarFrame, RuneFrame,
33         WarlockPowerFrame, MonkHarmonyBarFrame, PaladinPowerBarFrame,
34         MageArcaneChargesFrame, CastingBarFrame, PetCastingBarFrame};
35     for i = 1,MAX_BOSS_FRAMES do
36         table.insert(frames, _G["Boss"..i.."TargetFrame"]);
37         table.insert(frames, _G["Boss"..i.."TargetFrameHealthBar"]);
38         table.insert(frames, _G["Boss"..i.."TargetFrameManaBar"]);
39         -- keep boss frame powerBarAlt
40     end
41     for _, frame in pairs(frames) do
42         frame:UnregisterAllEvents();
43         if frame.healthbar then frame.healthbar:UnregisterAllEvents() end
44         if frame.manabar then frame.manabar:UnregisterAllEvents() end
45         if frame.spellbar then frame.spellbar:UnregisterAllEvents() end
46         --if frame.powerBarAlt then frame.powerBarAlt:UnregisterAllEvents() end
47         frame:Hide();
48     end
49
50     -- from ShadowedUF, re-register vehicle events for default auras
51     PlayerFrame:RegisterEvent("PLAYER_ENTERING_WORLD");
52     PlayerFrame:RegisterEvent("UNIT_ENTERING_VEHICLE");
53     PlayerFrame:RegisterEvent("UNIT_ENTERED_VEHICLE");
54     PlayerFrame:RegisterEvent("UNIT_EXITING_VEHICLE");
55     PlayerFrame:RegisterEvent("UNIT_EXITED_VEHICLE");
56     PlayerFrame:SetMovable(true);
57     PlayerFrame:SetUserPlaced(true);
58     PlayerFrame:SetDontSavePosition(true);
59 end
60
61 -- untested, not playing arena, from ShadowedUF
62 local hiddenFrame = CreateFrame("Frame");
63 hiddenFrame:Hide();
64 local arenaHidden = false;
65 local function hideArenaFrames()
66     -- not run if /reload happens in combat, may cause problems?
67     if not arenaHidden and not InCombatLockdown() then
68         arenaHidden = true;
69         ArenaEnemyFrames:UnregisterAllEvents();
70         ArenaEnemyFrames:SetParent(hiddenFrame);
71         ArenaPrepFrames:UnregisterAllEvents();
72         ArenaPrepFrames:SetParent(hiddenFrame);
73         SetCVar("showArenaEnemyFrames", 0, "SHOW_ARENA_ENEMY_FRAMES_TEXT");
74     end
75 end
76
77 local function updateTooltipFuncs()
78     -- let MoveAnything hook these to anchor tooltip elsewhere
79     M.UpdatePlayerTooltips();
80     M.UpdatePetTooltips();
81     M.UpdateTargetTooltips();
82     M.UpdateBossTooltips();
83     updateAuraTooltips();
84 end
85
86 UnitFrames:RegisterEvent("PLAYER_LOGIN");
87 UnitFrames:RegisterEvent("PLAYER_ENTERING_WORLD");
88 UnitFrames:RegisterEvent("ADDON_LOADED");
89 UnitFrames:SetScript("OnEvent", function(self, event, addon)
90     if event == "PLAYER_ENTERING_WORLD" then
91         CTimerAfter(0.01, updateTooltipFuncs);
92     elseif event == "ADDON_LOADED" and addon == "Blizzard_ArenaUI" then
93         hideArenaFrames();
94     elseif event == "PLAYER_LOGIN" then
95         OmaUFLoadChar();
96         hideBlizzardFrames();
97         initialize();
98     end
99 end);