local class = require 'r.class' local Pos = require 'r.pos' local SIZE = 64 local ChunkMap = class() function ChunkMap.make(cls) return setmetatable({d={}},cls) end function ChunkMap.add(self,pos,val) self.d[pos:key()] = val end function ChunkMap.remove(self,pos) self.d[pos:key()] = nil end function ChunkMap.get(self,pos) return self.d[pos:key()] end local function idx(pos) return 1+pos.x*SIZE+pos.y end function ChunkMap.tile(self,pos) local cp,mod = pos:divmod(SIZE) local ch = self:get(cp) return ch and ch.d[idx(mod)] end function ChunkMap.set_tile(self,pos,val) local cp,mod = pos:divmod(SIZE) local ch = self:get(cp) if ch then ch.d[idx(mod)] = val end end return { ChunkMap = ChunkMap, SIZE = SIZE, port = '1616', }