-- Copyright 2023 -- -- This file is part of Omicron Frames -- -- Omicron Frames is free software: you can redistribute it and/or modify it -- under the terms of the GNU General Public License as published by the Free -- Software Foundation, either version 3 of the License, or (at your option) -- any later version. -- -- Omicron Frames is distributed in the hope that it will be useful, but -- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -- more details. -- -- You should have received a copy of the GNU General Public License along with -- Omicron Frames. If not, see . local omif = select(2, ...) local function RangeConfig() local _, class = UnitClass("player") if class == "SHAMAN" then return { friendly = "Healing Surge", enemy = "Lightning Bolt", fade = 0.2 } else return { fade = 0.2 } end end local types = omif.GetModule("types") local UnitFrame = types.UnitFrame local UnitGroup = types.UnitGroup -- re-parent all blizzard frames and then hide the new parent function HideBlizzardFrames() local toggleFrame = CreateFrame("Frame", nil, UIParent) blizzardFrames = { PlayerFrame, TargetFrame, FocusFrame, PartyFrame, CompactRaidFrameContainer } for _, frame in ipairs(blizzardFrames) do frame:SetParent(toggleFrame) end toggleFrame:Hide() end function CreateRaidFrames(left, top, config) local width = config.size.width local height = config.size.height local group = UnitGroup:new(left, top, width, height) for i=0,5 do for j=0,4 do local num = i*5 + j + 1 local frame = UnitFrame:new("raid" .. num, config) group:AddUnitFrame(frame) end end end function CreatePartyFrames(left, top, config) local width = config.size.width local height = config.size.height local group = UnitGroup:new(left, top, width, height) local player = UnitFrame:new("player", config) group:AddUnitFrame(player) for i=1,4 do local frame = UnitFrame:new("party" .. i, config) group:AddUnitFrame(frame) end group:Sort() end function CreateTargetFrames(left, top, config) local width = config.size.width local height = config.size.height local focus = UnitFrame:new("focus", config) focus:SetPosition(left, top) local target = UnitFrame:new("target", config) target:SetPosition(left, top - height) for i=1,4 do local boss = UnitFrame:new("boss" .. i, config) boss:SetPosition(left, top-(i+1)*height) end end function CreateFrames() config = { size = { width = 110, height = 45, }, range = RangeConfig(), hideInRaid = true, } CreatePartyFrames(0, -290, config) config.hideInRaid = false CreateRaidFrames(0, -290, config) CreateTargetFrames(110*3+50, -245, config) HideBlizzardFrames() end omif.SetEventHandler("OMICRON_LOADING", CreateFrames)