diff options
Diffstat (limited to 'common/map.lua')
-rw-r--r-- | common/map.lua | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/common/map.lua b/common/map.lua index 8161f11..64d353c 100644 --- a/common/map.lua +++ b/common/map.lua @@ -10,6 +10,7 @@ local class = require"common.class" local chunk = require"common.chunk" +local coords = require"common.coords" local CHUNK_SIZE = require"common.constants".CHUNK_SIZE local Map = class() @@ -66,5 +67,20 @@ function Map.set_at(self,hpos,tile) if not ch then return nil end ch:set_at(hoffs,tile) end +function Map.iter_chunks(self) + -- iterates through all cp,chunk pairs + -- chunk might be false + -- not guaranteed to be in any particular order + + return coroutine.wrap(function() + for u,t in pairs(self.chunks) do + for v,ch in pairs(t) do + -- if ch is false, won't have a .cp + local cp = coords.ChunkPos:make(u,v) + coroutine.yield(cp,ch) + end + end + end) +end return {Map=Map} |