From 7166c9b831f9c6a50ba42272682b776d01e5703e Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Tue, 2 Feb 2021 13:01:35 -0500 Subject: Map rendering Works but I don't want to use Tileson so I'm gonna change that Mainly bc Tileson requires std::filesystem, which my clang is too old for apparently, and while I can use gcc instead I just want to not, I suppose. Also Tileson's API is very weird RE const correctness? Idk. And also being able to parse the tmx files rather than exporting to json would be preferable. --- tools/sprite_dumper/tileset_dumper.cpp | 44 ++++++++++++++++------------------ 1 file changed, 21 insertions(+), 23 deletions(-) (limited to 'tools') diff --git a/tools/sprite_dumper/tileset_dumper.cpp b/tools/sprite_dumper/tileset_dumper.cpp index d8997a5..f09fbd9 100644 --- a/tools/sprite_dumper/tileset_dumper.cpp +++ b/tools/sprite_dumper/tileset_dumper.cpp @@ -264,15 +264,32 @@ int main(int argc, char** argv) { itemised.push_back(std::move(newLayer)); } + constexpr int TILES_PER_ROW = 10; + int sheetWidth; + int sheetHeight; + if (metatiles.size() < TILES_PER_ROW) { + sheetWidth = metatiles.size() * 16; + sheetHeight = 16; + } else { + sheetWidth = TILES_PER_ROW * 16; + sheetHeight = (metatiles.size() / TILES_PER_ROW + 1) * 16; + } + // Generate map datafile. std::ofstream mapfile("out.tmx"); mapfile << R"()" << std::endl; - mapfile << R"( )" << std::endl; + mapfile << R"( )" << std::endl; + mapfile << R"( )" << std::endl; + mapfile << R"( )" << std::endl; for (int layer=itemised.size()-1; layer>=0; layer--) { mapfile << R"( )" << std::endl; + // Render map to image. for (int layer=itemised.size()-1; layer>=0; layer--) { for (int mapy = 0; mapy < height; mapy++) { for (int mapx = 0; mapx < width; mapx++) { @@ -319,27 +337,7 @@ int main(int argc, char** argv) { image.magick("png"); image.write("out.png"); - constexpr int TILES_PER_ROW = 10; - int sheetWidth; - int sheetHeight; - - if (metatiles.size() < TILES_PER_ROW) { - sheetWidth = metatiles.size() * 16; - sheetHeight = 16; - } else { - sheetWidth = TILES_PER_ROW * 16; - sheetHeight = (metatiles.size() / TILES_PER_ROW + 1) * 16; - } - - std::ofstream tilesetfile("out.tsx"); - tilesetfile << R"()" << std::endl; - tilesetfile << R"( )" << std::endl; - tilesetfile << R"()" << std::endl; - + // Render tileset image. Magick::Image tilesetImage(Magick::Geometry(sheetWidth, sheetHeight), "transparent"); for (int i=0; i