41 lines
878 B
Lua
41 lines
878 B
Lua
--[[
|
|
Classy.lua
|
|
Utility methods for constructing a Bagnon object class
|
|
--]]
|
|
|
|
local Bagnon = LibStub('AceAddon-3.0'):GetAddon('Bagnon')
|
|
local Classy = {}
|
|
Bagnon.Classy = Classy
|
|
|
|
function Classy:New(frameType, parentClass)
|
|
local class = CreateFrame(frameType)
|
|
class.mt = {__index = class}
|
|
|
|
if parentClass then
|
|
class = setmetatable(class, {__index = parentClass})
|
|
class.super = parentClass
|
|
end
|
|
|
|
class.Bind = function(self, obj)
|
|
return setmetatable(obj, self.mt)
|
|
end
|
|
|
|
--callback support
|
|
class.RegisterMessage = function(self, ...)
|
|
Bagnon.Callbacks:Listen(self, ...)
|
|
end
|
|
|
|
class.SendMessage = function(self, ...)
|
|
Bagnon.Callbacks:SendMessage(...)
|
|
end
|
|
|
|
class.UnregisterMessage = function(self, ...)
|
|
Bagnon.Callbacks:Ignore(self, ...)
|
|
end
|
|
|
|
class.UnregisterAllMessages = function(self, ...)
|
|
Bagnon.Callbacks:IgnoreAll(self, ...)
|
|
end
|
|
|
|
return class
|
|
end |