otclient-redemption/modules/modulelib/eventcontroller.lua
Renato Machado f97007320f
improve: html/css v0.3b (#1333)
- Added support for reactive *for loops
- Implemented full event propagation system
- Fixed align-items to properly center elements vertically
- Fixed several bugs (and probably added a few new ones too 😆)
2025-10-04 18:50:59 -03:00

75 lines
1.4 KiB
Lua

EventController = {
events = nil,
connected = false
}
function EventController:new(actor, events)
if actor == nil then
error('Actor is null.')
return
end
if events == nil then
error('Events is null.')
return
end
local obj = {
actor = actor,
events = events,
connected = false
}
setmetatable(obj, self)
self.__index = self
return obj
end
function EventController:connect()
if self.connected then
return
end
self.connected = true
connect(self.actor, self.events)
end
function EventController:disconnect()
if not self.connected then
return
end
self.connected = false
disconnect(self.actor, self.events)
end
function EventController:destroy()
self:disconnect()
self.actor = nil
self.events = nil
end
function EventController:isWidget()
return self.actor and self.actor.addChild ~= nil
end
function EventController:actorIsDestroyed()
return self:isWidget() and self.actor:isDestroyed()
end
function EventController:isDestroyed()
return self.actor == nil
end
function EventController:getActor()
return self.actor
end
function EventController:execute(name, ...)
if name == nil then
for name, act in pairs(self.events) do
act()
end
return
end
self.events[name](...)
end