add missing file
This commit is contained in:
parent
236e23177d
commit
6fa7dcbeef
66
code/chunk.lua
Normal file
66
code/chunk.lua
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
-- pieces of levels
|
||||||
|
|
||||||
|
Chunk = {
|
||||||
|
-- set of all chunks in the level.
|
||||||
|
-- chunks are the keys, for easier removal.
|
||||||
|
all = {},
|
||||||
|
}
|
||||||
|
Chunk.__index = Chunk
|
||||||
|
|
||||||
|
--[[
|
||||||
|
instance fields:
|
||||||
|
|
||||||
|
[string] filename
|
||||||
|
[Rect or nil] box
|
||||||
|
[table or nil] data
|
||||||
|
data loaded from the chunks file. may be nil.
|
||||||
|
[table or nil] loaded
|
||||||
|
entities that exist in the chunk.
|
||||||
|
]]
|
||||||
|
|
||||||
|
-- CLASS METHODS
|
||||||
|
|
||||||
|
-- box == nil for global chunks
|
||||||
|
function Chunk:new(filename, box)
|
||||||
|
local o = { filename = filename, box = box }
|
||||||
|
setmetatable(o, self)
|
||||||
|
self.all[o] = true
|
||||||
|
end
|
||||||
|
|
||||||
|
function Chunk:getExportList()
|
||||||
|
local r = {}
|
||||||
|
for chunk in pairs(self.all) do
|
||||||
|
table.insert(r, {chunk.filename, chunk.box})
|
||||||
|
end
|
||||||
|
return r
|
||||||
|
end
|
||||||
|
|
||||||
|
-- INSTANCE METHODS
|
||||||
|
|
||||||
|
function Chunk:containsPoint(pt)
|
||||||
|
return self.box == nil or self.box:containsPoint(pt)
|
||||||
|
end
|
||||||
|
|
||||||
|
function Chunk:load()
|
||||||
|
if self.loaded then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
logPrint("loading chunk "..self.filename)
|
||||||
|
self.data = dofile(level_current.."/chunks/"..self.filename)
|
||||||
|
self.loaded = { rooms = {}, collisions = {} }
|
||||||
|
LevelTiles = self.data.tiles
|
||||||
|
indexLevelTiles()
|
||||||
|
optimizeTileObjects(self.loaded.collisions)
|
||||||
|
|
||||||
|
for _, v in ipairs(self.data.rooms or {}) do
|
||||||
|
local room = Collision:new(v[1],v[2],v[3],v[4])
|
||||||
|
table.insert(self.data.rooms, room)
|
||||||
|
table.insert(LoadedObjects.Rooms, room)
|
||||||
|
end
|
||||||
|
logPrint("loaded chunk with "..#self.loaded.collisions.." collisions")
|
||||||
|
end
|
||||||
|
|
||||||
|
function Chunk:save(chunkdir)
|
||||||
|
return love.filesystem.write(chunkdir.."/"..self.filename, "return "..serialize_lua_value(self.data))
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user