Allow events to be registered on elements without parents #83
@@ -59,6 +59,9 @@ return function(name, basalt)
|
|||||||
table.insert(elements, {element = element, zIndex = zIndex, objId = objId})
|
table.insert(elements, {element = element, zIndex = zIndex, objId = objId})
|
||||||
sorted = false
|
sorted = false
|
||||||
element:setParent(self, true)
|
element:setParent(self, true)
|
||||||
|
for event, _ in pairs(element:getRegisteredEvents()) do
|
||||||
|
self:addEvent(event, element)
|
||||||
|
end
|
||||||
if(element.init~=nil)then element:init() end
|
if(element.init~=nil)then element:init() end
|
||||||
if(element.load~=nil)then element:load() end
|
if(element.load~=nil)then element:load() end
|
||||||
if(element.draw~=nil)then element:draw() end
|
if(element.draw~=nil)then element:draw() end
|
||||||
@@ -96,6 +99,7 @@ return function(name, basalt)
|
|||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
self:removeEvents(element)
|
||||||
sorted = false
|
sorted = false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ return function(name, basalt)
|
|||||||
local isEnabled,initialized = true,false
|
local isEnabled,initialized = true,false
|
||||||
|
|
||||||
local eventSystem = basaltEvent()
|
local eventSystem = basaltEvent()
|
||||||
|
local registeredEvents = {}
|
||||||
local activeEvents = {}
|
local activeEvents = {}
|
||||||
|
|
||||||
local parent
|
local parent
|
||||||
@@ -113,7 +114,6 @@ return function(name, basalt)
|
|||||||
remove = function(self)
|
remove = function(self)
|
||||||
if (parent ~= nil) then
|
if (parent ~= nil) then
|
||||||
parent:removeObject(self)
|
parent:removeObject(self)
|
||||||
parent:removeEvents(self)
|
|
||||||
end
|
end
|
||||||
self:updateDraw()
|
self:updateDraw()
|
||||||
return self
|
return self
|
||||||
@@ -139,11 +139,19 @@ return function(name, basalt)
|
|||||||
return eventSystem
|
return eventSystem
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
getRegisteredEvents = function(self)
|
||||||
|
return registeredEvents
|
||||||
|
end,
|
||||||
|
|
||||||
registerEvent = function(self, event, func)
|
registerEvent = function(self, event, func)
|
||||||
if(parent~=nil)then
|
if(parent~=nil)then
|
||||||
parent:addEvent(event, self)
|
parent:addEvent(event, self)
|
||||||
end
|
end
|
||||||
return eventSystem:registerEvent(event, func)
|
eventSystem:registerEvent(event, func)
|
||||||
|
if (registeredEvents[event] == nil) then
|
||||||
|
registeredEvents[event] = {}
|
||||||
|
end
|
||||||
|
table.insert(registeredEvents[event], func)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
removeEvent = function(self, event, index)
|
removeEvent = function(self, event, index)
|
||||||
@@ -152,7 +160,13 @@ return function(name, basalt)
|
|||||||
parent:removeEvent(event, self)
|
parent:removeEvent(event, self)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return eventSystem:removeEvent(event, index)
|
eventSystem:removeEvent(event, index)
|
||||||
|
if (registeredEvents[event] ~= nil) then
|
||||||
|
table.remove(registeredEvents[event], index)
|
||||||
|
if (#registeredEvents[event] == 0) then
|
||||||
|
registeredEvents[event] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
eventHandler = function(self, event, ...)
|
eventHandler = function(self, event, ...)
|
||||||
@@ -262,7 +276,7 @@ return function(name, basalt)
|
|||||||
end
|
end
|
||||||
return self
|
return self
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
object.__index = object
|
object.__index = object
|
||||||
return object
|
return object
|
||||||
|
|||||||
Reference in New Issue
Block a user