1
0
mirror of https://github.com/ScrelliCopter/tmx2gba.git synced 2025-02-21 03:29:25 +11:00

merge help and version commands

This commit is contained in:
2024-04-11 04:37:49 +10:00
parent b29c61774c
commit 2638bf2667
3 changed files with 17 additions and 24 deletions

View File

@@ -10,13 +10,12 @@ tmx2gba is a simple command line utility that converts [Tiled](http://www.mapedi
## Usage ## ## Usage ##
``` ```
tmx2gba [-hv] [-r offset] [-lyc name] [-p 0-15] [-m name;id] <-i inpath> <-o outpath> tmx2gba [-h] [-r offset] [-lyc name] [-p 0-15] [-m name;id] <-i inpath> <-o outpath>
``` ```
| Command | Required | Notes | | Command | Required | Notes |
|--------------|----------|------------------------------------------------------------------------------------| |--------------|----------|------------------------------------------------------------------------------------|
| -h | N/A | Display help & command info | | -h | N/A | Display program help & command info then quit |
| -v | No | Display version & quit |
| -l (name) | No | Name of layer to use (default first layer in TMX) | | -l (name) | No | Name of layer to use (default first layer in TMX) |
| -y (name) | No | Layer for palette mappings | | -y (name) | No | Layer for palette mappings |
| -c (name) | No | Output a separate 8bit collision map of the specified layer | | -c (name) | No | Output a separate 8bit collision map of the specified layer |

View File

@@ -2,6 +2,9 @@
#define CONFIG_H #define CONFIG_H
#define TMX2GBA_VERSION "@PROJECT_VERSION@" #define TMX2GBA_VERSION "@PROJECT_VERSION@"
#define TMX2GBA_DESCRIPTION "@PROJECT_DESCRIPTION@"
#define TMX2GBA_HOMEPAGE "@PROJECT_HOMEPAGE_URL@"
#cmakedefine USE_ZLIB #cmakedefine USE_ZLIB
#endif//CONFIG_H #endif//CONFIG_H

View File

@@ -2,6 +2,9 @@
// SPDX-License-Identifier: Zlib // SPDX-License-Identifier: Zlib
// SPDX-FileCopyrightText: (c) 2015-2024 a dinosaur // SPDX-FileCopyrightText: (c) 2015-2024 a dinosaur
#include <string_view>
constexpr std::string_view copyrightStr("(c) 2015-2024 a dinosaur");
#include "argparse.hpp" #include "argparse.hpp"
#include "tmxreader.hpp" #include "tmxreader.hpp"
#include "convert.hpp" #include "convert.hpp"
@@ -21,15 +24,14 @@ struct Arguments
int offset = 0; int offset = 0;
int palette = 0; int palette = 0;
std::vector<std::string> objMappings; std::vector<std::string> objMappings;
bool help = false, showVersion = false; bool help = false;
}; };
using ArgParse::Option; using ArgParse::Option;
static const ArgParse::Options options = static const ArgParse::Options options =
{ {
Option::Optional('h', {}, "Display this help & command info"), Option::Optional('h', {}, "Display help & command info"),
Option::Optional('v', {}, "Display version & quit"),
Option::Optional('l', "name", "Name of layer to use (default first layer in TMX)"), Option::Optional('l', "name", "Name of layer to use (default first layer in TMX)"),
Option::Optional('y', "name", "Layer for palette mappings"), Option::Optional('y', "name", "Layer for palette mappings"),
Option::Optional('c', "name", "Output a separate 8bit collision map of the specified layer"), Option::Optional('c', "name", "Output a separate 8bit collision map of the specified layer"),
@@ -53,7 +55,6 @@ static bool ParseArgs(int argc, char** argv, Arguments& params)
switch (opt) switch (opt)
{ {
case 'h': params.help = true; return ParseCtrl::QUIT_EARLY; case 'h': params.help = true; return ParseCtrl::QUIT_EARLY;
case 'v': params.showVersion = true; return ParseCtrl::QUIT_EARLY;
case 'l': params.layer = arg; return ParseCtrl::CONTINUE; case 'l': params.layer = arg; return ParseCtrl::CONTINUE;
case 'c': params.collisionlay = arg; return ParseCtrl::CONTINUE; case 'c': params.collisionlay = arg; return ParseCtrl::CONTINUE;
case 'y': params.paletteLay = arg; return ParseCtrl::CONTINUE; case 'y': params.paletteLay = arg; return ParseCtrl::CONTINUE;
@@ -71,11 +72,8 @@ static bool ParseArgs(int argc, char** argv, Arguments& params)
catch (std::out_of_range const&) { return ParseCtrl::QUIT_ERR_RANGE; } catch (std::out_of_range const&) { return ParseCtrl::QUIT_ERR_RANGE; }
}); });
if (!parser.Parse(std::span(argv + 1, argc - 1))) if (!parser.Parse(std::span(argv + 1, argc - 1))) { return false; }
return false; if (params.help) { return true; }
if (params.help || params.showVersion)
return true;
if (!params.flagFile.empty()) if (!params.flagFile.empty())
{ {
@@ -140,18 +138,13 @@ static std::string SanitiseLabel(const std::string_view ident)
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
Arguments p; Arguments p;
if (!ParseArgs(argc, argv, p)) if (!ParseArgs(argc, argv, p)) { return 1; }
return 1;
if (p.help) if (p.help)
{ {
std::cout << "tmx2gba v" << TMX2GBA_VERSION << ", " << copyrightStr << std::endl;
options.ShowHelpUsage(argv[0], std::cout); options.ShowHelpUsage(argv[0], std::cout);
return 0; return 0;
} }
if (p.showVersion)
{
std::cout << "tmx2gba version " << TMX2GBA_VERSION << ", (c) 2015-2024 a dinosaur" << std::endl;
return 0;
}
// Object mappings // Object mappings
std::map<std::string, uint32_t> objMapping; std::map<std::string, uint32_t> objMapping;
@@ -237,8 +230,7 @@ int main(int argc, char** argv)
if (tmx.HasCollisionTiles()) if (tmx.HasCollisionTiles())
{ {
std::vector<uint8_t> collisionDat; std::vector<uint8_t> collisionDat;
if (!convert::ConvertCollision(collisionDat, tmx)) if (!convert::ConvertCollision(collisionDat, tmx)) { return 1; }
return 1;
outH.WriteCollision(collisionDat); outH.WriteCollision(collisionDat);
outS.WriteArray("Collision", collisionDat, 32); outS.WriteArray("Collision", collisionDat, 32);
@@ -247,8 +239,7 @@ int main(int argc, char** argv)
if (tmx.HasObjects()) if (tmx.HasObjects())
{ {
std::vector<uint32_t> objDat; std::vector<uint32_t> objDat;
if (!convert::ConvertObjects(objDat, tmx)) if (!convert::ConvertObjects(objDat, tmx)) { return 1; }
return 1;
outH.WriteObjects(objDat); outH.WriteObjects(objDat);
outS.WriteArray("Objdat", objDat); outS.WriteArray("Objdat", objDat);