diff options
author | Cheng Hann Gan <chenghanngan.us@gmail.com> | 2021-10-05 20:09:53 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-05 17:09:53 -0700 |
commit | 78632822c35c5c8f6f9fb03547bb608ec5e5d223 (patch) | |
tree | 5bc11d5e3a4c0f92f09d4144a03b208162372a65 /tools/dungeonjson/dungeonjson.cpp | |
parent | c15bd01b90215610a2f38c4ca2e8e3b0a68b8476 (diff) |
Added move data JSON (#60)
* Added move data JSON
* Fixed typo
* Fixed name of placeholder move
Diffstat (limited to 'tools/dungeonjson/dungeonjson.cpp')
-rw-r--r-- | tools/dungeonjson/dungeonjson.cpp | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/tools/dungeonjson/dungeonjson.cpp b/tools/dungeonjson/dungeonjson.cpp index cdcf0ba..546a59e 100644 --- a/tools/dungeonjson/dungeonjson.cpp +++ b/tools/dungeonjson/dungeonjson.cpp @@ -464,6 +464,43 @@ string generate_item_data_text(Json data) { return text.str(); } +string generate_move_data_text(Json data) { + ostringstream text; + + text << "@ This is auto-generated by move_data.json.\n"; + text << ".include \"include/constants/type.h\"\n"; + text << ".global gMoveData\n"; + text << "gMoveData:"; + for (Json data_entry : data.array_items()) { + text << read_json_string(data_entry["namePointer"], 4) + << read_json_int(data_entry["power"], 1) + << "\n.byte 0" + << read_json_string(data_entry["type"], 1) + << "\n.byte 0" + << read_json_int(data_entry["targetingFlags"], 2) + << read_json_int(data_entry["aiTargetingFlags"], 2) + << read_json_int(data_entry["maxPP"], 1) + << read_json_int(data_entry["weight"], 1) + << read_json_int(data_entry["accuracy1"], 1) + << read_json_int(data_entry["accuracy2"], 1) + << read_json_int(data_entry["useChance"], 1) + << read_json_int(data_entry["hitCount"], 1) + << read_json_int(data_entry["unk12"], 1) + << read_json_int(data_entry["criticalHitChance"], 1) + << read_json_bool(data_entry["affectedByMagicCoat"]) + << read_json_bool(data_entry["targetsUser"]) + << read_json_bool(data_entry["affectedByMuzzled"]) + << read_json_bool(data_entry["cannotHitFrozen"]) + << read_json_bool(data_entry["dealsDirectDamage"]) + << read_json_int(data_entry["unk19"], 1) + << "\n.2byte 0" + << read_json_string(data_entry["descriptionPointer"], 4) + << read_json_string(data_entry["useText"], 4); + } + text << TABLE_END; + return text.str(); +} + string get_directory_name(string filename) { size_t dir_pos = filename.find_last_of("/\\"); @@ -752,12 +789,14 @@ int main(int argc, char *argv[]) { process_json(filepath, "pokemon_found.inc", generate_pokemon_table_text); } else if (mode == "floor") { process_json(filepath, "floor_id.inc", generate_floorID_table_text); - } else if (mode == "species_data") { + } else if (mode == "species") { process_json(filepath, "species_data.inc", generate_species_data_text); - } else if (mode == "item_data") { + } else if (mode == "item") { process_json(filepath, "item_data.inc", generate_item_data_text); + } else if (mode == "move") { + process_json(filepath, "move_data.inc", generate_move_data_text); } else { - FATAL_ERROR("ERROR: <mode> must be 'layouts', 'map', 'groups', 'dungeon', 'floor', 'species_data', or 'item_data'.\n"); + FATAL_ERROR("ERROR: <mode> must be 'layouts', 'map', 'groups', 'dungeon', 'floor', 'species', 'item', or 'move'.\n"); } } |