pokeheartgold/tools/msgenc/Options.cpp
2021-12-21 10:51:53 -05:00

46 lines
1.4 KiB
C++

#include "Options.h"
Options::Options(int argc, char **argv) {
for (int i = 1; i < argc; i++) {
string arg(argv[i]);
if (arg == "-d") {
mode = CONV_DECODE;
} else if (arg == "-e") {
mode = CONV_ENCODE;
} else if (arg == "-h") {
printUsage = true;
return;
} else if (arg == "-H") {
gmm_header = argv[++i];
} else if (arg == "-v") {
printVersion = true;
return;
} else if (arg == "-k") {
key = stoi(argv[++i], nullptr, 0);
// If the key is 0, ensure that it is not overridden by the CRC.
key &= 0xFFFF;
key |= 0x10000;
} else if (arg == "-c") {
charmap = argv[++i];
} else if (arg == "-D") {
dumpBinary = argv[++i];
} else if (arg == "--gmm") {
textFormat = GamefreakGMM;
} else if (arg[0] != '-') {
posargs.push_back(arg);
} else {
failReason = "unrecognized option: " + arg;
break;
}
}
if (posargs.size() < 2) {
failReason = "missing required positional argument: " + (string[]){"INFILE", "OUTFILE"}[posargs.size()];
}
if (mode == CONV_INVALID) {
failReason = "missing mode flag: -d or -e is required";
}
if (charmap.empty()) {
failReason = "missing charmap file: -c CHARMAP is required";
}
}