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

Merge branch 'master' into argparse

# Conflicts:
#	CMakeLists.txt
#	src/tmx2gba.cpp
This commit is contained in:
2024-03-21 04:50:30 +11:00
3 changed files with 15 additions and 4 deletions

View File

@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.12 FATAL_ERROR)
project(tmx2gba)
cmake_minimum_required(VERSION "3.12" FATAL_ERROR)
project(tmx2gba VERSION "0.3")
# Options
option(TMX2GBA_DKP_INSTALL "Install into DEVKITPRO prefix" OFF)

View File

@@ -20,6 +20,7 @@ tmx2gba [-h] [-r offset] [-lyc name] [-p 0-15] <-i inpath> <-o outpath>
| Command | Required | Notes |
|--------------|----------|-----------------------------------------------------------------------|
| -h | N/A | Display help & command info. |
| -v | No | Display version & quit. |
| -l (name) | No | Name of layer to use (default first layer in TMX). |
| -y (name) | No | Layer for palette mappings. |
| -c (name) | No | Output a separate 8bit collision map of the specified layer. |

View File

@@ -11,9 +11,11 @@
#include <algorithm>
const std::string versionStr = "tmx2gba version 0.3, (c) 2015-2022 a dinosaur";
struct Arguments
{
bool help = false;
bool help = false, showVersion = false;
std::string inPath, outPath;
std::string layer, collisionlay, paletteLay;
std::string flagFile;
@@ -27,6 +29,7 @@ using ArgParse::Option;
static const ArgParse::Options options =
{
Option::Optional('h', nullptr, "Display this help & command info"),
Option::Optional('v', nullptr, "Display version & quit"),
Option::Optional('l', "name", "Name of layer to use (default first layer in TMX)"),
Option::Optional('y', "name", "Layer for palette mappings"),
Option::Optional('c', "name", "Output a separate 8bit collision map of the specified layer"),
@@ -50,6 +53,7 @@ bool ParseArgs(int argc, char** argv, Arguments& params)
switch (opt)
{
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 'c': params.collisionlay = arg; return ParseCtrl::CONTINUE;
case 'y': params.paletteLay = arg; return ParseCtrl::CONTINUE;
@@ -70,7 +74,7 @@ bool ParseArgs(int argc, char** argv, Arguments& params)
if (!parser.Parse(std::span(argv + 1, argc - 1)))
return false;
if (params.help)
if (params.help || params.showVersion)
return true;
if (!params.flagFile.empty())
@@ -113,6 +117,7 @@ bool ParseArgs(int argc, char** argv, Arguments& params)
return true;
}
template <typename T> constexpr const char* DatType();
template <> constexpr const char* DatType<uint8_t>() { return ".byte"; }
template <> constexpr const char* DatType<uint16_t>() { return ".hword"; }
@@ -161,6 +166,11 @@ int main(int argc, char** argv)
options.ShowHelpUsage(argv[0], std::cout);
return 0;
}
if (p.showVersion)
{
std::cout << versionStr << std::endl;
return 0;
}
// Object mappings
std::map<std::string, uint32_t> objMapping;