X-Git-Url: https://www.aleksib.fi/git/wowui.git/blobdiff_plain/7cd9b15270a53b3c833f41e00ed755a30e22b2ef..fdbd89d788a6442f2fe57abb8f2321bd6c452889:/OmaUF/UnitFrames.lua diff --git a/OmaUF/UnitFrames.lua b/OmaUF/UnitFrames.lua index 2c338f0..0a812d4 100644 --- a/OmaUF/UnitFrames.lua +++ b/OmaUF/UnitFrames.lua @@ -1,264 +1,18 @@ --- RaidFrame.lua +-- UnitFrames.lua local _; -local unpack, pairs = unpack, pairs; -local format = string.format; -local UnitHealthMax, UnitPowerMax = UnitHealthMax, UnitPowerMax; -local CreateFrame, RegisterStateDriver, RegisterUnitWatch = CreateFrame, RegisterStateDriver, RegisterUnitWatch; -local STANDARD_TEXT_FONT = STANDARD_TEXT_FONT; -local GameTooltip = nil; -local GameTooltip_SetDefaultAnchor = nil; - -local registerEvents = OmaUFEvents.RegisterEvents; -local unitEvent = OmaUFEvents.UnitEvent; -local createAuraFrame = OmaUFAuras.CreateAuraFrame; - -local Settings = OmaUFSettings; -local indSize = Settings.IndSize; -local baseColor = Settings.BaseColor; -local bgColor = Settings.BgColor; -local healthColor = Settings.HealthColor; -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 anchorX, anchorY = 10, 10; -local attributes = {}; +local pairs = pairs; local UnitFrames = CreateFrame("Frame", "OmaUnitFrames"); -local inheritedFrames = "SecureUnitButtonTemplate,SecureHandlerStateTemplate"; - -local events = { - ["player"] = { - "UNIT_ENTERED_VEHICLE", - "UNIT_EXITED_VEHICLE", - "UNIT_PET", - "PLAYER_ROLES_ASSIGNED", - "PLAYER_ENTERING_WORLD", - "PLAYER_LEVEL_UP", - "PLAYER_REGEN_DISABLED", - "PLAYER_REGEN_ENABLED", - "PLAYER_UPDATE_RESTING", - }, - ["target"] = { - "UNIT_ENTERED_VEHICLE", - "UNIT_EXITED_VEHICLE", - "UNIT_PET", - "UNIT_LEVEL", - "GROUP_ROSTER_UPDATE", - "PLAYER_ROLES_ASSIGNED", - "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 = {}; OmaUnitFrames = M; -local function frameShow(frame) - for _, ev in pairs(events[frame.unit]) do - frame:RegisterEvent(ev); - end - registerEvents(frame); - unitEvent(frame, "UPDATE_ALL_BARS"); -end - -local function frameHide(frame) - frame:UnregisterAllEvents(); -end - -local function showTooltip(secure) - GameTooltip_SetDefaultAnchor(GameTooltip, secure); - GameTooltip:SetUnit(secure:GetAttribute("unit")); -end - -local function hideTooltip(secure) - GameTooltip:FadeOut(); -end - -local function setupFrame(frame, secure, unit, width, height) - secure:SetAttribute("unit", unit); - frame:SetAttribute("unit", unit); - frame.unit = unit; - frame.displayed = unit; - -- hide frame to get initial frameShow call - frame:Hide(); - if unit == "player" then - frame.vehicle = "vehicle"; - else - 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.base:SetVertexColor(unpack(baseColor)); - frame.healthback = frame:CreateTexture(nil, "BACKGROUND", nil, 1); - frame.healthback:SetPoint("TOPLEFT", frame, "TOPLEFT", 1, -1); - frame.healthback:SetPoint("BOTTOMRIGHT", frame, "RIGHT", -1, -5); - frame.healthback:SetTexture("Interface\\RaidFrame\\Raid-Bar-Hp-Fill"); - frame.healthback:SetVertexColor(unpack(bgColor)); - frame.health = frame:CreateTexture(nil, "BORDER"); - frame.health:SetTexture("Interface\\RaidFrame\\Raid-Bar-Hp-Fill"); - frame.health:SetPoint("TOPLEFT", frame.healthback, "TOPLEFT"); - frame.health:SetPoint("BOTTOMLEFT", frame.healthback, "BOTTOMLEFT"); - frame.health:SetVertexColor(unpack(healthColor)); - frame.health:SetWidth(width); - frame.health.max = UnitHealthMax(unit); - frame.healthText = frame:CreateFontString(nil, "ARTWORK", "GameFontHighlightLarge"); - frame.healthText:SetPoint("RIGHT", frame.healthback, "RIGHT", -2, 0); - frame.healthText:Hide(); - frame.manaback = frame:CreateTexture(nil, "BACKGROUND", nil, 1); - frame.manaback:SetPoint("TOPLEFT", frame, "LEFT", 1, -5); - frame.manaback:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -1, 1); - frame.manaback:SetTexture("Interface\\RaidFrame\\Raid-Bar-Hp-Fill"); - frame.manaback:SetVertexColor(unpack(bgColor)); - frame.mana = frame:CreateTexture(nil, "BORDER"); - frame.mana:SetPoint("TOPLEFT", frame.manaback, "TOPLEFT"); - frame.mana:SetPoint("BOTTOMLEFT", frame.manaback, "BOTTOMLEFT"); - frame.mana:SetTexture("Interface\\RaidFrame\\Raid-Bar-Hp-Fill"); - frame.mana:SetWidth(width); - frame.mana.max = UnitPowerMax(unit); - frame.manaText = frame:CreateFontString(nil, "ARTWORK", "GameFontHighlight"); - frame.manaText:SetPoint("RIGHT", frame.manaback, "RIGHT", -2, 0); - frame.manaText:Hide(); - frame.shield = frame:CreateTexture(nil, "BORDER"); - frame.shield:SetPoint("TOPLEFT", frame.health, "TOPRIGHT"); - frame.shield:SetPoint("BOTTOMLEFT", frame.health, "BOTTOMRIGHT"); - frame.shield:SetTexture("Interface\\RaidFrame\\Shield-Fill"); - frame.shield:SetVertexColor(unpack(shieldColor)); - frame.shield:Hide(); - frame.shieldhl = frame:CreateTexture(nil, "ARTWORK"); - frame.shieldhl:SetPoint("TOPLEFT", frame.healthback, "TOPRIGHT", -1, 0); - frame.shieldhl:SetPoint("BOTTOMRIGHT", frame.healthback, "BOTTOMRIGHT", 1, 0); - frame.shieldhl:SetColorTexture(unpack(shieldhlColor)); - frame.shieldhl:Hide(); - frame.healpred = frame:CreateTexture(nil, "ARTWORK"); - frame.healpred:SetPoint("TOPLEFT", frame.health, "TOPRIGHT"); - frame.healpred:SetPoint("BOTTOMLEFT", frame.health, "BOTTOMRIGHT"); - frame.healpred:SetColorTexture(unpack(healpredColor)); - frame.healpred:Hide(); - frame.healabsorb = frame:CreateTexture(nil, "ARTWORK"); - frame.healabsorb:SetPoint("TOPRIGHT", frame.health, "TOPRIGHT"); - frame.healabsorb:SetPoint("BOTTOMRIGHT", frame.health, "BOTTOMRIGHT"); - frame.healabsorb:SetColorTexture(unpack(healabsorbColor)); - frame.healabsorb: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-PORTRAITROLES"); - frame.role:Hide(); - frame.status = frame:CreateTexture(nil, "OVERLAY"); - frame.status:SetPoint("TOPLEFT", frame.manaback, "BOTTOMLEFT", -8, 8); - frame.status:SetPoint("BOTTOMRIGHT", frame.manaback, "BOTTOMLEFT", 8, -8); - frame.status:SetTexture("Interface\\CHARACTERFRAME\\UI-StateIcon"); - frame.status:Hide(); - frame.pvp = frame:CreateTexture(nil, "OVERLAY"); - 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.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); - secure:SetScript("OnEnter", showTooltip); - secure:SetScript("OnLeave", hideTooltip); - -- set attributes - secure:RegisterForClicks("AnyDown"); - for attr, val in pairs(attributes) do - secure:SetAttribute(attr, val); - end - -- rest give target and menu - secure:SetAttribute("*type1", "target"); - secure:SetAttribute("*type2", "togglemenu"); -end - --- vehicle toggle from Shadowed Unit Frames -local vehicletoggle = [=[ - local unit = self:GetAttribute("unit"); - if unit and newstate == "vehicle" and not UnitTargetsVehicleInRaidUI(unit) then - self:SetAttribute("toggleForVehicle", false); - else - self:SetAttribute("toggleForVehicle", true); - end -]=] - -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", -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); -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", 300, -175); - frame:SetPoint("CENTER", parent, "CENTER", 300, -175); - setupFrame(frame, secure, unit, width, height); - createAuraFrame(frame, unit); - RegisterUnitWatch(frame); - RegisterUnitWatch(secure); -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) + local player = M.InitializePlayer(UIParent); + --M.InitializePet(player); + local target = M.InitializeTarget(UIParent); + --M.InitializeToT(target); + -- TODO boss frames, (arena frames) end local hidden = false;