diff options
author | ubq323 <ubq323@ubq323.website> | 2025-06-04 18:01:09 +0100 |
---|---|---|
committer | ubq323 <ubq323@ubq323.website> | 2025-06-04 18:01:09 +0100 |
commit | ded2684211826c9585b1c6d9c1036e233b65fd86 (patch) | |
tree | 3482f77e3f7fc9a47737fd9d37706709041afb79 /common.lua | |
parent | ed46ddec16e48b94a240a58e4b60990ada2a7308 (diff) |
stuff
Diffstat (limited to 'common.lua')
-rw-r--r-- | common.lua | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/common.lua b/common.lua new file mode 100644 index 0000000..7e67daf --- /dev/null +++ b/common.lua @@ -0,0 +1,17 @@ +local class = require 'r.class' + +local SIZE = 64 +local ChunkMap = class() +function ChunkMap.make(cls) return setmetatable({d={}},cls) end +local function key(pos) return pos.x .. ':' .. pos.y end +function ChunkMap.add(self,pos,val) self.d[key(pos)] = val end +function ChunkMap.remove(self,pos) self:add(pos,nil) end +function ChunkMap.get(self,pos) return self.d[key(pos)] end +local function idx(pos) return 1+pos.x*SIZE+pos.y end +function ChunkMap.tile(self,pos) + local cp = (pos/SIZE):floor() local ix = idx(pos-cp*SIZE) + return self:get(cp)[ix] end + +return { + ChunkMap = ChunkMap, +} |