diff --git a/code/chunk.lua b/code/chunk.lua new file mode 100644 index 0000000..d503bb0 --- /dev/null +++ b/code/chunk.lua @@ -0,0 +1,7 @@ +-- pieces of levels + +Chunk = {} +Chunk.__index = Chunk + +function Chunk:new(file, rect) +end diff --git a/code/editor.lua b/code/editor.lua index 11e45da..03d047e 100644 --- a/code/editor.lua +++ b/code/editor.lua @@ -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) diff --git a/code/in_out.lua b/code/in_out.lua index b8586d1..891c1b6 100644 --- a/code/in_out.lua +++ b/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