From d0a924a2073da307630c7aa60c8b364908beffb8 Mon Sep 17 00:00:00 2001 From: Japa Date: Sat, 6 Jan 2018 23:48:06 +0530 Subject: [PATCH] Send shape ids through RFR --- plugins/proto/RemoteFortressReader.proto | 11 +++++++++ .../remotefortressreader.cpp | 23 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/plugins/proto/RemoteFortressReader.proto b/plugins/proto/RemoteFortressReader.proto index 623ab7f53..92c3cee42 100644 --- a/plugins/proto/RemoteFortressReader.proto +++ b/plugins/proto/RemoteFortressReader.proto @@ -275,6 +275,7 @@ message Item optional float velocity_x = 13; optional float velocity_y = 14; optional float velocity_z = 15; + optional int32 shape = 16; } message MapBlock @@ -875,3 +876,13 @@ message Status { repeated Report reports = 1; } + +message ShapeDescriptior +{ + optional string id = 1; +} + +message Language +{ + repeated ShapeDescriptior shapes = 1; +} \ No newline at end of file diff --git a/plugins/remotefortressreader/remotefortressreader.cpp b/plugins/remotefortressreader/remotefortressreader.cpp index 4e4b5f14b..cafd4a4e5 100644 --- a/plugins/remotefortressreader/remotefortressreader.cpp +++ b/plugins/remotefortressreader/remotefortressreader.cpp @@ -37,6 +37,7 @@ #include "df/block_square_event_item_spatterst.h" #include "df/block_square_event_grassst.h" #endif +#include "df/art_image_element_shapest.h" #include "df/block_square_event_material_spatterst.h" #include "df/body_appearance_modifier.h" #include "df/body_part_layer_raw.h" @@ -61,6 +62,7 @@ #include "df/historical_figure.h" #include "df/item.h" #include "df/item_constructed.h" +#include "df/item_gemst.h" #include "df/item_threadst.h" #include "df/item_toolst.h" #include "df/itemimprovement.h" @@ -168,6 +170,7 @@ static command_result GetPauseState(color_ostream & stream, const EmptyMessage * static command_result GetVersionInfo(color_ostream & stream, const EmptyMessage * in, RemoteFortressReader::VersionInfo * out); void CopyItem(RemoteFortressReader::Item * NetItem, df::item * DfItem); static command_result GetReports(color_ostream & stream, const EmptyMessage * in, RemoteFortressReader::Status * out); +static command_result GetLanguage(color_ostream & stream, const EmptyMessage * in, RemoteFortressReader::Language * out); void CopyBlock(df::map_block * DfBlock, RemoteFortressReader::MapBlock * NetBlock, MapExtras::MapCache * MC, DFCoord pos); @@ -299,6 +302,7 @@ DFhackCExport RPCService *plugin_rpcconnect(color_ostream &) svc->addFunction("MenuQuery", MenuQuery, SF_ALLOW_REMOTE); svc->addFunction("MovementSelectCommand", MovementSelectCommand, SF_ALLOW_REMOTE); svc->addFunction("MiscMoveCommand", MiscMoveCommand, SF_ALLOW_REMOTE); + svc->addFunction("GetLanguage", GetLanguage, SF_ALLOW_REMOTE); return svc; } @@ -1420,6 +1424,11 @@ void CopyItem(RemoteFortressReader::Item * NetItem, df::item * DfItem) if (actual_item) { NetItem->set_stack_size(actual_item->stack_size); + } + VIRTUAL_CAST_VAR(gem_item, df::item_gemst, DfItem); + if (gem_item) + { + } VIRTUAL_CAST_VAR(constructed_item, df::item_constructed, DfItem); if (constructed_item) @@ -2998,4 +3007,18 @@ static command_result GetReports(color_ostream & stream, const EmptyMessage * in lastSentReportID = local_rep->id; } return CR_OK; +} + +static command_result GetLanguage(color_ostream & stream, const EmptyMessage * in, RemoteFortressReader::Language * out) +{ + if (!world) + return CR_FAILURE; + + for (int i = 0; i < world->raws.language.shapes.size(); i++) + { + auto shape = world->raws.language.shapes[i]; + auto netShape = out->add_shapes(); + netShape->set_id(shape->id); + } + return CR_OK; } \ No newline at end of file