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