summaryrefslogtreecommitdiff
path: root/common.lua
blob: 7e67dafa5ee5aea966fa5f3f5afffc0957aca309 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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,
}