mirror of
https://github.com/Keyslam-Group/Concord.git
synced 2025-09-02 12:24:11 -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
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
function EventManager:register(name, listener, callback)
|
function EventManager:register(name, listener, callback, enabled)
|
||||||
|
enabled = enabled == nil and true
|
||||||
|
|
||||||
local listeners = self.listeners[name]
|
local listeners = self.listeners[name]
|
||||||
|
|
||||||
if not listeners then
|
if not listeners then
|
||||||
|
|
|
@ -9,9 +9,7 @@ Instance.__index = Instance
|
||||||
function Instance.new()
|
function Instance.new()
|
||||||
local instance = setmetatable({
|
local instance = setmetatable({
|
||||||
entities = List(),
|
entities = List(),
|
||||||
systems = List(),
|
systems = {},
|
||||||
systemCount = {},
|
|
||||||
eventManager = EventManager(),
|
|
||||||
}, Instance)
|
}, Instance)
|
||||||
|
|
||||||
return instance
|
return instance
|
||||||
|
@ -38,23 +36,26 @@ function Instance:removeEntity(e)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function Instance:addSystem(system, eventName, callback)
|
function Instance:addSystem(system, eventName, callback, enabled)
|
||||||
self.systemCount[system] = (self.systemCount[system] or 0) + 1
|
self.systems[eventName] = self.systems[eventName] or {}
|
||||||
self.systems:add(system)
|
|
||||||
|
|
||||||
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
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
function Instance:removeSystem(system, callback)
|
function Instance:enableSystem(system, eventName, callback)
|
||||||
self.systemCount[system] = self.systemCount[system] - 1
|
|
||||||
if self.systemCount[system] == 0 then
|
|
||||||
self.systemCount[system] = nil
|
|
||||||
self.eventManager:deregister(eventName, system, callback)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return self
|
function Instance:disableSystem(system, eventName, callback)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function Instance:emit(...)
|
function Instance:emit(...)
|
||||||
|
|
6
main.lua
6
main.lua
|
@ -89,9 +89,9 @@ function RandomRemover:update(dt)
|
||||||
love.window.setTitle(love.timer.getFPS())
|
love.window.setTitle(love.timer.getFPS())
|
||||||
end
|
end
|
||||||
|
|
||||||
Game:addSystem(RandomRemover(), "update")
|
Game:addSystem(RandomRemover(), "update", nil, true)
|
||||||
Game:addSystem(RectangleRenderer(), "draw")
|
Game:addSystem(RectangleRenderer(), "draw", nil, true)
|
||||||
Game:addSystem(CircleRenderer(), "draw")
|
Game:addSystem(CircleRenderer(), "draw", nil, true)
|
||||||
|
|
||||||
for i = 1, 100 do
|
for i = 1, 100 do
|
||||||
local e = Entity()
|
local e = Entity()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue