trying to do chunked level loading
This commit is contained in:
parent
236e23177d
commit
b3a12305da
7
code/chunk.lua
Normal file
7
code/chunk.lua
Normal file
@ -0,0 +1,7 @@
|
||||
-- pieces of levels
|
||||
|
||||
Chunk = {}
|
||||
Chunk.__index = Chunk
|
||||
|
||||
function Chunk:new(file, rect)
|
||||
end
|
@ -100,7 +100,7 @@ function stepEditor()
|
||||
if name_prompt.canceled then return end
|
||||
Prompt:new({
|
||||
name = "filename",
|
||||
input = "level.lua",
|
||||
input = "unnamed_level",
|
||||
func = function(file_prompt)
|
||||
if file_prompt.canceled then return end
|
||||
exportLevel(name_prompt.input, file_prompt.input)
|
||||
|
115
code/in_out.lua
115
code/in_out.lua
@ -1,90 +1,37 @@
|
||||
function exportLevel(levelname, filename)
|
||||
love.filesystem.createDirectory("export")
|
||||
filename = filename or "output.lua"
|
||||
if string.sub(filename, 1, 1) ~= "/" then
|
||||
filename = "export/"..filename
|
||||
function exportLevel(levelname, dirname)
|
||||
dirname = "export/"..dirname
|
||||
|
||||
local ok = love.filesystem.createDirectory(dirname)
|
||||
if not ok then
|
||||
logPrint("error creating directory")
|
||||
end
|
||||
exportFile = io.open(filename, "w+")
|
||||
|
||||
if exportFile then
|
||||
logPrint("Exporting level \"".. levelname .. "\"...")
|
||||
exportFile:write("return {")
|
||||
|
||||
logPrint("- level name")
|
||||
exportFile:write("\n name = \"" .. levelname .. "\",")
|
||||
|
||||
logPrint("- tileset")
|
||||
for k, v in pairs(tileset) do
|
||||
if v == LevelData.tileset then
|
||||
exportFile:write("\n tileset = tileset." .. k .. ",")
|
||||
end
|
||||
end
|
||||
|
||||
logPrint("- properties")
|
||||
exportFile:write("\n properties = {")
|
||||
logPrint(" - darkness: ".. tostring(LevelData.properties.darkness))
|
||||
exportFile:write("\n darkness = " .. tostring(LevelData.properties.darkness))
|
||||
exportFile:write("\n },")
|
||||
|
||||
logPrint("- tiles")
|
||||
exportFile:write("\n tiles = {")
|
||||
local rows = #LevelTiles
|
||||
for i = 1, #LevelTiles do
|
||||
if i > 1 then
|
||||
exportFile:write(", ")
|
||||
end
|
||||
exportFile:write("\n { ")
|
||||
for j = 1, #LevelTiles[i] do
|
||||
if j ~= 1 then
|
||||
exportFile:write(", ")
|
||||
end
|
||||
exportFile:write(tostring(LevelTiles[i][j].id))
|
||||
end
|
||||
exportFile:write("}")
|
||||
logPrint(" - row "..i.."/"..rows.." "..math.floor(100*((i-1)*100/rows))/100 .."%")
|
||||
end
|
||||
exportFile:write("\n },")
|
||||
logPrint("- objects")
|
||||
exportFile:write("\n objects = {")
|
||||
logPrint(" - spawns")
|
||||
exportFile:write("\n spawns = {")
|
||||
for i, v in ipairs(LoadedObjects.Spawns) do
|
||||
if i > 1 then
|
||||
exportFile:write(",")
|
||||
end
|
||||
exportFile:write("\n {")
|
||||
exportFile:write(v.archetype.type)
|
||||
exportFile:write(",{")
|
||||
for i=1, #v.args do
|
||||
if i > 1 then
|
||||
exportFile:write(",")
|
||||
end
|
||||
exportFile:write(v.args[i])
|
||||
end
|
||||
exportFile:write("}}")
|
||||
end
|
||||
exportFile:write("\n },")
|
||||
logPrint(" - rooms")
|
||||
exportFile:write("\n rooms = {")
|
||||
for i, room in ipairs(LoadedObjects.Rooms) do
|
||||
if i > 1 then
|
||||
exportFile:write(",")
|
||||
end
|
||||
exportFile:write("\n {{")
|
||||
exportFile:write(room.from.x)
|
||||
exportFile:write(",")
|
||||
exportFile:write(room.from.y)
|
||||
exportFile:write("},{")
|
||||
exportFile:write(room.to.x)
|
||||
exportFile:write(",")
|
||||
exportFile:write(room.to.y)
|
||||
exportFile:write("}}")
|
||||
end
|
||||
exportFile:write("\n },")
|
||||
exportFile:write("\n },")
|
||||
logPrint("Exporting complete.")
|
||||
exportFile:write("\n}")
|
||||
exportFile:close()
|
||||
logPrint("Exporting level \"".. levelname .. "\"...")
|
||||
local exportTable = {}
|
||||
exportTable.name = levelname
|
||||
exportTable.tileset = "library"
|
||||
exportTable.properties = LevelData.properties
|
||||
exportTable.tiles = LevelTiles
|
||||
logPrint("- objects")
|
||||
exportTable.objects = { spawns = {}, rooms = {} }
|
||||
logPrint(" - spawns")
|
||||
for i, v in ipairs(LoadedObjects.Spawns) do
|
||||
exportTable.objects.spawns = {v.archetype.name,{},v.args}
|
||||
end
|
||||
|
||||
logPrint(" - rooms")
|
||||
|
||||
for i, room in ipairs(LoadedObjects.Rooms) do
|
||||
table.insert(exportTable.objects.rooms,{room:asRect():getCoords()})
|
||||
end
|
||||
logPrint("Writing to file...")
|
||||
-- FIXME: serialize_lua_table isn't real...
|
||||
local ok, err = love.filesystem.write(dirname.."/level.bin", serialize_lua_table("string", "", exportTable))
|
||||
if ok then
|
||||
logPrint("Exporting complete.")
|
||||
else
|
||||
logPrint("Exporting failed: "..err)
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user