local registerEvents = OmaUFEvents.RegisterEvents;
local unitEvent = OmaUFEvents.UnitEvent;
+local createAuraFrame = OmaUFAuras.CreateAuraFrame;
local Settings = OmaUFSettings;
local indSize = Settings.IndSize;
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 = {};
"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 = {};
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;
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);
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.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
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);