add quest script compiler

This commit is contained in:
Martin Michelsen
2023-12-10 14:24:30 -08:00
parent b53bde9046
commit 16cddd28b2
10 changed files with 945 additions and 21 deletions
+17 -2
View File
@@ -1040,8 +1040,7 @@ Action a_disassemble_quest_map(
"disassemble-quest-map", "\
disassemble-quest-map [INPUT-FILENAME [OUTPUT-FILENAME]]\n\
Disassemble the input quest map (.dat file) into a text representation of\n\
the data it contains. Specify the quest\'s game version with one of the\n\
--dc-nte, --dc-v1, --dc-v2, --pc, --gc-nte, --gc, --xb, or --bb options.\n",
the data it contains.\n",
+[](Arguments& args) {
string data = read_input_data(args);
if (!args.get<bool>("decompressed")) {
@@ -1051,6 +1050,22 @@ Action a_disassemble_quest_map(
write_output_data(args, result.data(), result.size(), "txt");
});
Action a_assemble_quest_script(
"assemble-quest-script", "\
assemble-quest-script [INPUT-FILENAME [OUTPUT-FILENAME]]\n\
Assemble the input quest script (.txt file) into a compressed .bin file\n\
usable as an online quest script. If --decompressed is given, produces an\n\
uncompressed .bind file instead.\n",
+[](Arguments& args) {
string text = read_input_data(args);
string result = assemble_quest_script(text);
bool compress = !args.get<bool>("decompressed");
if (compress) {
result = prs_compress_optimal(result);
}
write_output_data(args, result.data(), result.size(), compress ? "bin" : "bind");
});
void a_extract_archive_fn(Arguments& args) {
string output_prefix = args.get<string>(2, false);
if (output_prefix == "-") {