summaryrefslogtreecommitdiff
path: root/tools/dungeonjson/dungeonjson.cpp
diff options
context:
space:
mode:
authorCheng Hann Gan <chenghanngan.us@gmail.com>2021-10-05 20:09:53 -0400
committerGitHub <noreply@github.com>2021-10-05 17:09:53 -0700
commit78632822c35c5c8f6f9fb03547bb608ec5e5d223 (patch)
tree5bc11d5e3a4c0f92f09d4144a03b208162372a65 /tools/dungeonjson/dungeonjson.cpp
parentc15bd01b90215610a2f38c4ca2e8e3b0a68b8476 (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.cpp45
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");
}
}