Files
coa-quartz/Quartz/modules/Pet.lua
T
Andrew6810 3b75efe038 init
2022-10-21 07:30:59 -07:00

126 lines
3.4 KiB
Lua

--[[
Copyright (C) 2006-2007 Nymbia
Copyright (C) 2010 Hendrik "Nevcairiel" Leppkes < h.leppkes@gmail.com >
This program 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 2 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
]]
local Quartz3 = LibStub("AceAddon-3.0"):GetAddon("Quartz3")
local L = LibStub("AceLocale-3.0"):GetLocale("Quartz3")
local MODNAME = "Pet"
local Pet = Quartz3:NewModule(MODNAME, "AceEvent-3.0")
----------------------------
-- Upvalues
-- GLOBALS: PetCastingBarFrame
local db, getOptions
local defaults = {
profile = Quartz3:Merge(Quartz3.CastBarTemplate.defaults,
{
hideblizz = true,
--x = -- applied automatically in :ApplySettings()
y = 300,
h = 18,
w = 200,
texture = "LiteStep",
})
}
do
local function setOpt(info, value)
db[info[#info]] = value
Pet:ApplySettings()
end
local options
function getOptions()
if not options then
options = Pet.Bar:CreateOptions()
options.args.hideblizz = {
type = "toggle",
name = L["Disable Blizzard Cast Bar"],
desc = L["Disable and hide the default UI's casting bar"],
set = setOpt,
order = 101,
}
options.args.noInterruptGroup = nil
end
return options
end
end
function Pet:OnInitialize()
self.db = Quartz3.db:RegisterNamespace(MODNAME, defaults)
db = self.db.profile
self:SetEnabledState(Quartz3:GetModuleEnabled(MODNAME))
Quartz3:RegisterModuleOptions(MODNAME, getOptions, L["Pet"])
self.Bar = Quartz3.CastBarTemplate:new(self, "pet", MODNAME, L["Pet"], db)
end
function Pet:OnEnable()
self.Bar:RegisterEvents()
self:ApplySettings()
end
function Pet:OnDisable()
self.Bar:UnregisterEvents()
self.Bar:Hide()
end
function Pet:ApplySettings()
db = self.db.profile
-- obey the hideblizz setting no matter if disabled or not
if db.hideblizz then
PetCastingBarFrame.RegisterEvent = function() end
PetCastingBarFrame:UnregisterAllEvents()
PetCastingBarFrame:Hide()
else
PetCastingBarFrame.RegisterEvent = nil
PetCastingBarFrame:UnregisterAllEvents()
PetCastingBarFrame:RegisterEvent("UNIT_SPELLCAST_START")
PetCastingBarFrame:RegisterEvent("UNIT_SPELLCAST_STOP")
PetCastingBarFrame:RegisterEvent("UNIT_SPELLCAST_FAILED")
PetCastingBarFrame:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED")
PetCastingBarFrame:RegisterEvent("UNIT_SPELLCAST_DELAYED")
PetCastingBarFrame:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START")
PetCastingBarFrame:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP")
PetCastingBarFrame:RegisterEvent("UNIT_SPELLCAST_CHANNEL_UPDATE")
PetCastingBarFrame:RegisterEvent("UNIT_SPELLCAST_INTERRUPTIBLE")
PetCastingBarFrame:RegisterEvent("UNIT_SPELLCAST_NOT_INTERRUPTIBLE")
PetCastingBarFrame:RegisterEvent("PLAYER_ENTERING_WORLD")
PetCastingBarFrame:RegisterEvent("UNIT_PET")
end
self.Bar:SetConfig(db)
if self:IsEnabled() then
self.Bar:ApplySettings()
end
end
function Pet:Unlock()
self.Bar:Unlock()
end
function Pet:Lock()
self.Bar:Lock()
end