mirror of
https://github.com/Keyslam-Group/Concord.git
synced 2025-09-02 04:13:58 -04:00
Did work on events
This commit is contained in:
parent
fa22f6f6f6
commit
8810005217
3 changed files with 21 additions and 18 deletions
|
@ -22,7 +22,9 @@ function EventManager:emit(name, ...)
|
|||
return self
|
||||
end
|
||||
|
||||
function EventManager:register(name, listener, callback)
|
||||
function EventManager:register(name, listener, callback, enabled)
|
||||
enabled = enabled == nil and true
|
||||
|
||||
local listeners = self.listeners[name]
|
||||
|
||||
if not listeners then
|
||||
|
|
|
@ -9,9 +9,7 @@ Instance.__index = Instance
|
|||
function Instance.new()
|
||||
local instance = setmetatable({
|
||||
entities = List(),
|
||||
systems = List(),
|
||||
systemCount = {},
|
||||
eventManager = EventManager(),
|
||||
systems = {},
|
||||
}, Instance)
|
||||
|
||||
return instance
|
||||
|
@ -38,23 +36,26 @@ function Instance:removeEntity(e)
|
|||
end
|
||||
end
|
||||
|
||||
function Instance:addSystem(system, eventName, callback)
|
||||
self.systemCount[system] = (self.systemCount[system] or 0) + 1
|
||||
self.systems:add(system)
|
||||
function Instance:addSystem(system, eventName, callback, enabled)
|
||||
self.systems[eventName] = self.systems[eventName] or {}
|
||||
|
||||
self.eventManager:register(eventName, system, callback)
|
||||
local i = #self.systems[eventName] + 1
|
||||
self.systems[eventName][i] = {
|
||||
system = system,
|
||||
eventName = eventName,
|
||||
callback = callback or eventName,
|
||||
enabled = enabled == nil or true,
|
||||
}
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
function Instance:removeSystem(system, callback)
|
||||
self.systemCount[system] = self.systemCount[system] - 1
|
||||
if self.systemCount[system] == 0 then
|
||||
self.systemCount[system] = nil
|
||||
self.eventManager:deregister(eventName, system, callback)
|
||||
function Instance:enableSystem(system, eventName, callback)
|
||||
|
||||
end
|
||||
|
||||
return self
|
||||
function Instance:disableSystem(system, eventName, callback)
|
||||
|
||||
end
|
||||
|
||||
function Instance:emit(...)
|
||||
|
|
6
main.lua
6
main.lua
|
@ -89,9 +89,9 @@ function RandomRemover:update(dt)
|
|||
love.window.setTitle(love.timer.getFPS())
|
||||
end
|
||||
|
||||
Game:addSystem(RandomRemover(), "update")
|
||||
Game:addSystem(RectangleRenderer(), "draw")
|
||||
Game:addSystem(CircleRenderer(), "draw")
|
||||
Game:addSystem(RandomRemover(), "update", nil, true)
|
||||
Game:addSystem(RectangleRenderer(), "draw", nil, true)
|
||||
Game:addSystem(CircleRenderer(), "draw", nil, true)
|
||||
|
||||
for i = 1, 100 do
|
||||
local e = Entity()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue