diff --git a/plugins/devel/rawdump.cpp b/plugins/devel/rawdump.cpp index b1f6f4848..ba1edde22 100644 --- a/plugins/devel/rawdump.cpp +++ b/plugins/devel/rawdump.cpp @@ -16,7 +16,8 @@ bool final_flag = true; bool timering = false; uint64_t timeLast = 0; -DFhackCExport command_result rawdump (Core * c, vector & parameters); +DFhackCExport command_result rawdump_i (Core * c, vector & parameters); +DFhackCExport command_result rawdump_p (Core * c, vector & parameters); DFhackCExport const char * plugin_name ( void ) { @@ -26,7 +27,8 @@ DFhackCExport const char * plugin_name ( void ) DFhackCExport command_result plugin_init ( Core * c, std::vector &commands) { commands.clear(); - commands.push_back(PluginCommand("rawdump","Dump them raws.",rawdump)); + commands.push_back(PluginCommand("dump_inorganic","Dump inorganic raws.",rawdump_i)); + commands.push_back(PluginCommand("dump_plants","Dump plant raws.",rawdump_p)); return CR_OK; } @@ -35,7 +37,7 @@ DFhackCExport command_result plugin_shutdown ( Core * c ) return CR_OK; } -DFhackCExport command_result rawdump (Core * c, vector & parameters) +DFhackCExport command_result rawdump_i (Core * c, vector & parameters) { int index = -1; Console & con = c->con; @@ -78,3 +80,60 @@ DFhackCExport command_result rawdump (Core * c, vector & parameters) c->Resume(); return CR_OK; } + +DFhackCExport command_result rawdump_p (Core * c, vector & parameters) +{ + int index = -1; + Console & con = c->con; + if(parameters.size()) + { + index = atoi(parameters[0].c_str()); + } + c->Suspend(); + Materials * mats = c->getMaterials(); + if(!mats->df_plants) + { + con.printerr("No inorganic materials :(\n"); + return CR_FAILURE; + } + if(index >= 0) + { + if( index < mats->df_plants->size()) + { + df_plant_type * mat = mats->df_plants->at(index); + // dump single material + con.print("%-3d : [%s] %s %s %s\n", + index, + mat->ID.c_str(), + mat->material_str_leaves[0].c_str(), + mat->material_str_leaves[1].c_str(), + mat->material_str_leaves[2].c_str() + ); + con.print("DEPTH: %d-%d\n",mat->underground_depth[0], mat->underground_depth[1]); + } + else + { + con.printerr("Index out of range: %d of %d\n",index, mats->df_plants->size()); + } + } + else + { + // dump all materials + for(int i = 0; i < mats->df_plants->size();i++) + { + df_plant_type * mat = mats->df_plants->at(i); + // dump single material + con.print("%-3d : [%s] %s %s %s\n", + i, + mat->ID.c_str(), + mat->material_str_leaves[0].c_str(), + mat->material_str_leaves[1].c_str(), + mat->material_str_leaves[2].c_str() + ); + con.print("DEPTH: %d-%d\n",mat->underground_depth[0], mat->underground_depth[1]); + } + } + c->Resume(); + return CR_OK; +} +