summaryrefslogtreecommitdiff
path: root/world.lua
diff options
context:
space:
mode:
Diffstat (limited to 'world.lua')
-rw-r--r--world.lua27
1 files changed, 26 insertions, 1 deletions
diff --git a/world.lua b/world.lua
index fd793a4..cb322df 100644
--- a/world.lua
+++ b/world.lua
@@ -1,5 +1,30 @@
+_World = {}
World = {}
+
function World.add(entity)
- World[entity.id] = entity
+ _World[entity.id] = entity
return World
+end
+
+function World.foreach(f)
+ for id, entity in pairs(_World) do
+ f(entity)
+ end
+end
+
+function World.cull_the_dead()
+ to_reap = {}
+ for id, e in pairs(_World) do
+ if (e.life_time ~= nil and e.life_time <= 0) then
+ to_reap[id] = e
+ end
+ end
+ for id, e in pairs(to_reap) do
+ _World[id] = nil
+ end
+ return _World
+end
+
+function World.get(id)
+ return _World[id]
end \ No newline at end of file