diff --git a/plugins/proto/RemoteFortressReader.proto b/plugins/proto/RemoteFortressReader.proto index 08d804262..786ee6bc9 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 volume = 16; } message MapBlock diff --git a/plugins/remotefortressreader/remotefortressreader.cpp b/plugins/remotefortressreader/remotefortressreader.cpp index b13e56289..3e850d20b 100644 --- a/plugins/remotefortressreader/remotefortressreader.cpp +++ b/plugins/remotefortressreader/remotefortressreader.cpp @@ -922,213 +922,33 @@ static command_result GetItemList(color_ostream &stream, const EmptyMessage *in, mat_def->set_id(ENUM_KEY_STR(item_type, it)); switch (it) { - case df::enums::item_type::NONE: - break; - case df::enums::item_type::BAR: - break; - case df::enums::item_type::GEM: - case df::enums::item_type::SMALLGEM: - { - for (int i = 0; i < world->raws.language.shapes.size(); i++) + case df::enums::item_type::GEM: + case df::enums::item_type::SMALLGEM: + { + for (int i = 0; i < world->raws.language.shapes.size(); i++) + { + auto shape = world->raws.language.shapes[i]; + if (shape->gems_use.whole == 0) + continue; + mat_def = out->add_material_list(); + mat_def->mutable_mat_pair()->set_mat_type((int)it); + mat_def->mutable_mat_pair()->set_mat_index(i); + mat_def->set_id(ENUM_KEY_STR(item_type, it) + "/" + shape->id); + } + break; + } + case df::enums::item_type::BOX: { - auto shape = world->raws.language.shapes[i]; - if (shape->gems_use.whole == 0) - continue; mat_def = out->add_material_list(); mat_def->mutable_mat_pair()->set_mat_type((int)it); - mat_def->mutable_mat_pair()->set_mat_index(i); - mat_def->set_id(ENUM_KEY_STR(item_type, it) + "/" + shape->id); + mat_def->mutable_mat_pair()->set_mat_index(0); + mat_def->set_id("BOX_CHEST"); + mat_def = out->add_material_list(); + mat_def->mutable_mat_pair()->set_mat_type((int)it); + mat_def->mutable_mat_pair()->set_mat_index(1); + mat_def->set_id("BOX_BAG"); + break; } - break; - } - case df::enums::item_type::BLOCKS: - break; - case df::enums::item_type::ROUGH: - break; - case df::enums::item_type::BOULDER: - break; - case df::enums::item_type::WOOD: - break; - case df::enums::item_type::DOOR: - break; - case df::enums::item_type::FLOODGATE: - break; - case df::enums::item_type::BED: - break; - case df::enums::item_type::CHAIR: - break; - case df::enums::item_type::CHAIN: - break; - case df::enums::item_type::FLASK: - break; - case df::enums::item_type::GOBLET: - break; - case df::enums::item_type::INSTRUMENT: - break; - case df::enums::item_type::TOY: - break; - case df::enums::item_type::WINDOW: - break; - case df::enums::item_type::CAGE: - break; - case df::enums::item_type::BARREL: - break; - case df::enums::item_type::BUCKET: - break; - case df::enums::item_type::ANIMALTRAP: - break; - case df::enums::item_type::TABLE: - break; - case df::enums::item_type::COFFIN: - break; - case df::enums::item_type::STATUE: - break; - case df::enums::item_type::CORPSE: - break; - case df::enums::item_type::WEAPON: - break; - case df::enums::item_type::ARMOR: - break; - case df::enums::item_type::SHOES: - break; - case df::enums::item_type::SHIELD: - break; - case df::enums::item_type::HELM: - break; - case df::enums::item_type::GLOVES: - break; - case df::enums::item_type::BOX: - { - mat_def = out->add_material_list(); - mat_def->mutable_mat_pair()->set_mat_type((int)it); - mat_def->mutable_mat_pair()->set_mat_index(0); - mat_def->set_id("BOX_CHEST"); - mat_def = out->add_material_list(); - mat_def->mutable_mat_pair()->set_mat_type((int)it); - mat_def->mutable_mat_pair()->set_mat_index(1); - mat_def->set_id("BOX_BAG"); - break; - } - case df::enums::item_type::BIN: - break; - case df::enums::item_type::ARMORSTAND: - break; - case df::enums::item_type::WEAPONRACK: - break; - case df::enums::item_type::CABINET: - break; - case df::enums::item_type::FIGURINE: - break; - case df::enums::item_type::AMULET: - break; - case df::enums::item_type::SCEPTER: - break; - case df::enums::item_type::AMMO: - break; - case df::enums::item_type::CROWN: - break; - case df::enums::item_type::RING: - break; - case df::enums::item_type::EARRING: - break; - case df::enums::item_type::BRACELET: - break; - case df::enums::item_type::ANVIL: - break; - case df::enums::item_type::CORPSEPIECE: - break; - case df::enums::item_type::REMAINS: - break; - case df::enums::item_type::MEAT: - break; - case df::enums::item_type::FISH: - break; - case df::enums::item_type::FISH_RAW: - break; - case df::enums::item_type::VERMIN: - break; - case df::enums::item_type::PET: - break; - case df::enums::item_type::SEEDS: - break; - case df::enums::item_type::PLANT: - break; - case df::enums::item_type::SKIN_TANNED: - break; - case df::enums::item_type::PLANT_GROWTH: - break; - case df::enums::item_type::THREAD: - break; - case df::enums::item_type::CLOTH: - break; - case df::enums::item_type::TOTEM: - break; - case df::enums::item_type::PANTS: - break; - case df::enums::item_type::BACKPACK: - break; - case df::enums::item_type::QUIVER: - break; - case df::enums::item_type::CATAPULTPARTS: - break; - case df::enums::item_type::BALLISTAPARTS: - break; - case df::enums::item_type::SIEGEAMMO: - break; - case df::enums::item_type::BALLISTAARROWHEAD: - break; - case df::enums::item_type::TRAPPARTS: - break; - case df::enums::item_type::TRAPCOMP: - break; - case df::enums::item_type::DRINK: - break; - case df::enums::item_type::POWDER_MISC: - break; - case df::enums::item_type::CHEESE: - break; - case df::enums::item_type::FOOD: - break; - case df::enums::item_type::LIQUID_MISC: - break; - case df::enums::item_type::COIN: - break; - case df::enums::item_type::GLOB: - break; - case df::enums::item_type::ROCK: - break; - case df::enums::item_type::PIPE_SECTION: - break; - case df::enums::item_type::HATCH_COVER: - break; - case df::enums::item_type::GRATE: - break; - case df::enums::item_type::QUERN: - break; - case df::enums::item_type::MILLSTONE: - break; - case df::enums::item_type::SPLINT: - break; - case df::enums::item_type::CRUTCH: - break; - case df::enums::item_type::TRACTION_BENCH: - break; - case df::enums::item_type::ORTHOPEDIC_CAST: - break; - case df::enums::item_type::TOOL: - break; - case df::enums::item_type::SLAB: - break; - case df::enums::item_type::EGG: - break; - case df::enums::item_type::BOOK: - break; - case df::enums::item_type::SHEET: - break; - case df::enums::item_type::BRANCH: - break; - default: - break; } int subtypes = Items::getSubtypeCount(it); if (subtypes >= 0) @@ -1665,6 +1485,8 @@ void CopyItem(RemoteFortressReader::Item * NetItem, df::item * DfItem) ConvertDFColorDescriptor(info.material->powder_dye, NetItem->mutable_dye()); } } + + NetItem->set_volume(DfItem->getVolume()); } void CopyItems(df::map_block * DfBlock, RemoteFortressReader::MapBlock * NetBlock, MapExtras::MapCache * MC, DFCoord pos)