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