From eac6dc62eeb4bb636f4306d5335d1b2a4feb37ef Mon Sep 17 00:00:00 2001 From: Rose Date: Sat, 17 Dec 2022 11:24:31 -0800 Subject: [PATCH 01/10] Update windows build scripts --- build/.gitignore | 2 ++ build/win64/build-debug.bat | 4 ++-- build/win64/build-release.bat | 4 ++-- build/win64/generate-MSVC-all.bat | 6 +++--- build/win64/generate-MSVC-gui.bat | 6 +++--- build/win64/generate-MSVC-minimal.bat | 6 +++--- build/win64/generate-MSVC-release.bat | 6 +++--- build/win64/install-debug.bat | 4 ++-- build/win64/install-release.bat | 4 ++-- build/win64/package-debug.bat | 4 ++-- build/win64/package-release.bat | 4 ++-- 11 files changed, 26 insertions(+), 24 deletions(-) diff --git a/build/.gitignore b/build/.gitignore index 47745bc1e..256e18872 100644 --- a/build/.gitignore +++ b/build/.gitignore @@ -1,6 +1,8 @@ VC2010 VC2015 VC2015_32 +VC2022 +VC2022_32 DF_PATH.txt _CPack_Packages *.tar.* diff --git a/build/win64/build-debug.bat b/build/win64/build-debug.bat index 08ef6d3a9..a04cb9984 100644 --- a/build/win64/build-debug.bat +++ b/build/win64/build-debug.bat @@ -1,4 +1,4 @@ -call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -cd VC2015 +call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 +cd VC2022 msbuild /m /p:Platform=x64 /p:Configuration=RelWithDebInfo ALL_BUILD.vcxproj cd .. diff --git a/build/win64/build-release.bat b/build/win64/build-release.bat index dfeb108b3..8068e5074 100644 --- a/build/win64/build-release.bat +++ b/build/win64/build-release.bat @@ -1,5 +1,5 @@ -call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -cd VC2015 +call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 +cd VC2022 msbuild /m /p:Platform=x64 /p:Configuration=Release ALL_BUILD.vcxproj cd .. pause diff --git a/build/win64/generate-MSVC-all.bat b/build/win64/generate-MSVC-all.bat index d3261fa77..ea8db34c0 100644 --- a/build/win64/generate-MSVC-all.bat +++ b/build/win64/generate-MSVC-all.bat @@ -1,6 +1,6 @@ IF EXIST DF_PATH.txt SET /P _DF_PATH= Date: Mon, 26 Dec 2022 16:57:19 -0800 Subject: [PATCH 02/10] Comment out all adventure mode stuff. The game doesn't support it anymore anyway, and it will sureley change when it does. --- .../adventure_control.cpp | 490 +++++++++--------- 1 file changed, 245 insertions(+), 245 deletions(-) diff --git a/plugins/remotefortressreader/adventure_control.cpp b/plugins/remotefortressreader/adventure_control.cpp index 6fb592d62..ff964454b 100644 --- a/plugins/remotefortressreader/adventure_control.cpp +++ b/plugins/remotefortressreader/adventure_control.cpp @@ -39,279 +39,279 @@ void SetCoord(df::coord in, RemoteFortressReader::Coord *out) command_result MoveCommand(DFHack::color_ostream &stream, const MoveCommandParams *in) { - auto viewScreen = getCurViewscreen(); - if (!in->has_direction()) - return CR_WRONG_USAGE; - if (!df::global::ui_advmode->menu == ui_advmode_menu::Default) - return CR_OK; - auto dir = in->direction(); - switch (dir.x()) - { - case -1: - switch (dir.y()) - { - case -1: - switch (dir.z()) - { - case -1: - viewScreen->feed_key(interface_key::A_MOVE_NW_DOWN); - break; - case 0: - viewScreen->feed_key(interface_key::A_MOVE_NW); - break; - case 1: - viewScreen->feed_key(interface_key::A_MOVE_NW_UP); - break; - } - break; - case 0: - switch (dir.z()) - { - case -1: - viewScreen->feed_key(interface_key::A_MOVE_W_DOWN); - break; - case 0: - viewScreen->feed_key(interface_key::A_MOVE_W); - break; - case 1: - viewScreen->feed_key(interface_key::A_MOVE_W_UP); - break; - } - break; - case 1: - switch (dir.z()) - { - case -1: - viewScreen->feed_key(interface_key::A_MOVE_SW_DOWN); - break; - case 0: - viewScreen->feed_key(interface_key::A_MOVE_SW); - break; - case 1: - viewScreen->feed_key(interface_key::A_MOVE_SW_UP); - break; - } - break; - } - break; - case 0: - switch (dir.y()) - { - case -1: - switch (dir.z()) - { - case -1: - viewScreen->feed_key(interface_key::A_MOVE_N_DOWN); - break; - case 0: - viewScreen->feed_key(interface_key::A_MOVE_N); - break; - case 1: - viewScreen->feed_key(interface_key::A_MOVE_N_UP); - break; - } - break; - case 0: - switch (dir.z()) - { - case -1: - viewScreen->feed_key(interface_key::A_MOVE_DOWN); - break; - case 1: - viewScreen->feed_key(interface_key::A_MOVE_UP); - break; - } - break; - case 1: - switch (dir.z()) - { - case -1: - viewScreen->feed_key(interface_key::A_MOVE_S_DOWN); - break; - case 0: - viewScreen->feed_key(interface_key::A_MOVE_S); - break; - case 1: - viewScreen->feed_key(interface_key::A_MOVE_S_UP); - break; - } - break; - } - break; - case 1: - switch (dir.y()) - { - case -1: - switch (dir.z()) - { - case -1: - viewScreen->feed_key(interface_key::A_MOVE_NE_DOWN); - break; - case 0: - viewScreen->feed_key(interface_key::A_MOVE_NE); - break; - case 1: - viewScreen->feed_key(interface_key::A_MOVE_NE_UP); - break; - } - break; - case 0: - switch (dir.z()) - { - case -1: - viewScreen->feed_key(interface_key::A_MOVE_E_DOWN); - break; - case 0: - viewScreen->feed_key(interface_key::A_MOVE_E); - break; - case 1: - viewScreen->feed_key(interface_key::A_MOVE_E_UP); - break; - } - break; - case 1: - switch (dir.z()) - { - case -1: - viewScreen->feed_key(interface_key::A_MOVE_SE_DOWN); - break; - case 0: - viewScreen->feed_key(interface_key::A_MOVE_SE); - break; - case 1: - viewScreen->feed_key(interface_key::A_MOVE_SE_UP); - break; - } - break; - } - break; - } + //auto viewScreen = getCurViewscreen(); + //if (!in->has_direction()) + // return CR_WRONG_USAGE; + //if (!df::global::ui_advmode->menu == ui_advmode_menu::Default) + // return CR_OK; + //auto dir = in->direction(); + //switch (dir.x()) + //{ + //case -1: + // switch (dir.y()) + // { + // case -1: + // switch (dir.z()) + // { + // case -1: + // viewScreen->feed_key(interface_key::A_MOVE_NW_DOWN); + // break; + // case 0: + // viewScreen->feed_key(interface_key::A_MOVE_NW); + // break; + // case 1: + // viewScreen->feed_key(interface_key::A_MOVE_NW_UP); + // break; + // } + // break; + // case 0: + // switch (dir.z()) + // { + // case -1: + // viewScreen->feed_key(interface_key::A_MOVE_W_DOWN); + // break; + // case 0: + // viewScreen->feed_key(interface_key::A_MOVE_W); + // break; + // case 1: + // viewScreen->feed_key(interface_key::A_MOVE_W_UP); + // break; + // } + // break; + // case 1: + // switch (dir.z()) + // { + // case -1: + // viewScreen->feed_key(interface_key::A_MOVE_SW_DOWN); + // break; + // case 0: + // viewScreen->feed_key(interface_key::A_MOVE_SW); + // break; + // case 1: + // viewScreen->feed_key(interface_key::A_MOVE_SW_UP); + // break; + // } + // break; + // } + // break; + //case 0: + // switch (dir.y()) + // { + // case -1: + // switch (dir.z()) + // { + // case -1: + // viewScreen->feed_key(interface_key::A_MOVE_N_DOWN); + // break; + // case 0: + // viewScreen->feed_key(interface_key::A_MOVE_N); + // break; + // case 1: + // viewScreen->feed_key(interface_key::A_MOVE_N_UP); + // break; + // } + // break; + // case 0: + // switch (dir.z()) + // { + // case -1: + // viewScreen->feed_key(interface_key::A_MOVE_DOWN); + // break; + // case 1: + // viewScreen->feed_key(interface_key::A_MOVE_UP); + // break; + // } + // break; + // case 1: + // switch (dir.z()) + // { + // case -1: + // viewScreen->feed_key(interface_key::A_MOVE_S_DOWN); + // break; + // case 0: + // viewScreen->feed_key(interface_key::A_MOVE_S); + // break; + // case 1: + // viewScreen->feed_key(interface_key::A_MOVE_S_UP); + // break; + // } + // break; + // } + // break; + //case 1: + // switch (dir.y()) + // { + // case -1: + // switch (dir.z()) + // { + // case -1: + // viewScreen->feed_key(interface_key::A_MOVE_NE_DOWN); + // break; + // case 0: + // viewScreen->feed_key(interface_key::A_MOVE_NE); + // break; + // case 1: + // viewScreen->feed_key(interface_key::A_MOVE_NE_UP); + // break; + // } + // break; + // case 0: + // switch (dir.z()) + // { + // case -1: + // viewScreen->feed_key(interface_key::A_MOVE_E_DOWN); + // break; + // case 0: + // viewScreen->feed_key(interface_key::A_MOVE_E); + // break; + // case 1: + // viewScreen->feed_key(interface_key::A_MOVE_E_UP); + // break; + // } + // break; + // case 1: + // switch (dir.z()) + // { + // case -1: + // viewScreen->feed_key(interface_key::A_MOVE_SE_DOWN); + // break; + // case 0: + // viewScreen->feed_key(interface_key::A_MOVE_SE); + // break; + // case 1: + // viewScreen->feed_key(interface_key::A_MOVE_SE_UP); + // break; + // } + // break; + // } + // break; + //} return CR_OK; } command_result JumpCommand(DFHack::color_ostream &stream, const MoveCommandParams *in) { - if (!in->has_direction()) - return CR_WRONG_USAGE; - if (!df::global::ui_advmode->menu == ui_advmode_menu::Default) - return CR_OK; - auto dir = in->direction(); - keyQueue.push(interface_key::A_JUMP); - int x = dir.x(); - int y = dir.y(); - if (x > 0) - { - for (int i = 0; i < x; i++) - { - keyQueue.push(interface_key::CURSOR_RIGHT); - } - } - if (x < 0) - { - for (int i = 0; i > x; i--) - { - keyQueue.push(interface_key::CURSOR_LEFT); - } - } - if (y > 0) - { - for (int i = 0; i < y; i++) - { - keyQueue.push(interface_key::CURSOR_DOWN); - } - } - if (y < 0) - { - for (int i = 0; i > y; i--) - { - keyQueue.push(interface_key::CURSOR_UP); - } - } - keyQueue.push(interface_key::SELECT); + //if (!in->has_direction()) + // return CR_WRONG_USAGE; + //if (!df::global::ui_advmode->menu == ui_advmode_menu::Default) + // return CR_OK; + //auto dir = in->direction(); + //keyQueue.push(interface_key::A_JUMP); + //int x = dir.x(); + //int y = dir.y(); + //if (x > 0) + //{ + // for (int i = 0; i < x; i++) + // { + // keyQueue.push(interface_key::CURSOR_RIGHT); + // } + //} + //if (x < 0) + //{ + // for (int i = 0; i > x; i--) + // { + // keyQueue.push(interface_key::CURSOR_LEFT); + // } + //} + //if (y > 0) + //{ + // for (int i = 0; i < y; i++) + // { + // keyQueue.push(interface_key::CURSOR_DOWN); + // } + //} + //if (y < 0) + //{ + // for (int i = 0; i > y; i--) + // { + // keyQueue.push(interface_key::CURSOR_UP); + // } + //} + //keyQueue.push(interface_key::SELECT); return CR_OK; } command_result MenuQuery(DFHack::color_ostream &stream, const EmptyMessage *in, MenuContents *out) { - auto advUi = df::global::ui_advmode; + //auto advUi = df::global::ui_advmode; - if (advUi == NULL) - return CR_FAILURE; + //if (advUi == NULL) + // return CR_FAILURE; - out->set_current_menu((AdvmodeMenu)advUi->menu); + //out->set_current_menu((AdvmodeMenu)advUi->menu); - //Fixme: Needs a proper way to control it, but for now, this is the only way to allow Armok Vision to keep going without the user needing to switch to DF. - if (advUi->menu == ui_advmode_menu::FallAction) - { - getCurViewscreen()->feed_key(interface_key::OPTION1); - } + ////Fixme: Needs a proper way to control it, but for now, this is the only way to allow Armok Vision to keep going without the user needing to switch to DF. + //if (advUi->menu == ui_advmode_menu::FallAction) + //{ + // getCurViewscreen()->feed_key(interface_key::OPTION1); + //} - switch (advUi->menu) - { - case ui_advmode_menu::MoveCarefully: - for (size_t i = 0; i < advUi->movements.size(); i++) - { - auto movement = advUi->movements[i]; - auto send_movement = out->add_movements(); - SetCoord(movement->source, send_movement->mutable_source()); - SetCoord(movement->dest, send_movement->mutable_dest()); + //switch (advUi->menu) + //{ + //case ui_advmode_menu::MoveCarefully: + // for (size_t i = 0; i < advUi->movements.size(); i++) + // { + // auto movement = advUi->movements[i]; + // auto send_movement = out->add_movements(); + // SetCoord(movement->source, send_movement->mutable_source()); + // SetCoord(movement->dest, send_movement->mutable_dest()); - STRICT_VIRTUAL_CAST_VAR(climbMovement, df::adventure_movement_climbst, movement); - if (climbMovement) - { - SetCoord(climbMovement->grab, send_movement->mutable_grab()); - send_movement->set_movement_type(CarefulMovementType::CLIMB); - } - STRICT_VIRTUAL_CAST_VAR(holdTileMovement, df::adventure_movement_hold_tilest, movement); - if (holdTileMovement) - { - SetCoord(holdTileMovement->grab, send_movement->mutable_grab()); - send_movement->set_movement_type(CarefulMovementType::HOLD_TILE); - } - } - default: - break; - } + // STRICT_VIRTUAL_CAST_VAR(climbMovement, df::adventure_movement_climbst, movement); + // if (climbMovement) + // { + // SetCoord(climbMovement->grab, send_movement->mutable_grab()); + // send_movement->set_movement_type(CarefulMovementType::CLIMB); + // } + // STRICT_VIRTUAL_CAST_VAR(holdTileMovement, df::adventure_movement_hold_tilest, movement); + // if (holdTileMovement) + // { + // SetCoord(holdTileMovement->grab, send_movement->mutable_grab()); + // send_movement->set_movement_type(CarefulMovementType::HOLD_TILE); + // } + // } + //default: + // break; + //} return CR_OK; } command_result MovementSelectCommand(DFHack::color_ostream &stream, const dfproto::IntMessage *in) { - if (!(df::global::ui_advmode->menu == ui_advmode_menu::MoveCarefully)) - return CR_OK; - int choice = in->value(); - int page = choice / 5; - int select = choice % 5; - for (int i = 0; i < page; i++) - { - keyQueue.push(interface_key::SECONDSCROLL_PAGEDOWN); - } - keyQueue.push((interface_key::interface_key)(interface_key::OPTION1 + select)); + //if (!(df::global::ui_advmode->menu == ui_advmode_menu::MoveCarefully)) + // return CR_OK; + //int choice = in->value(); + //int page = choice / 5; + //int select = choice % 5; + //for (int i = 0; i < page; i++) + //{ + // keyQueue.push(interface_key::SECONDSCROLL_PAGEDOWN); + //} + //keyQueue.push((interface_key::interface_key)(interface_key::OPTION1 + select)); return CR_OK; } command_result MiscMoveCommand(DFHack::color_ostream &stream, const MiscMoveParams *in) { - if (!df::global::ui_advmode->menu == ui_advmode_menu::Default) - return CR_OK; + //if (!df::global::ui_advmode->menu == ui_advmode_menu::Default) + // return CR_OK; - auto type = in->type(); + //auto type = in->type(); - switch (type) - { - case AdventureControl::SET_CLIMB: - getCurViewscreen()->feed_key(interface_key::A_HOLD); - break; - case AdventureControl::SET_STAND: - getCurViewscreen()->feed_key(interface_key::A_STANCE); - break; - case AdventureControl::SET_CANCEL: - getCurViewscreen()->feed_key(interface_key::LEAVESCREEN); - break; - default: - break; - } + //switch (type) + //{ + //case AdventureControl::SET_CLIMB: + // getCurViewscreen()->feed_key(interface_key::A_HOLD); + // break; + //case AdventureControl::SET_STAND: + // getCurViewscreen()->feed_key(interface_key::A_STANCE); + // break; + //case AdventureControl::SET_CANCEL: + // getCurViewscreen()->feed_key(interface_key::LEAVESCREEN); + // break; + //default: + // break; + //} return CR_OK; } From b1ea3e8f02abdaf5cae5dc3d8fccf13206c96b85 Mon Sep 17 00:00:00 2001 From: Rose Date: Mon, 26 Dec 2022 17:05:06 -0800 Subject: [PATCH 03/10] Remove a few things from building_reader that haven't been updated yet. --- .../remotefortressreader/building_reader.cpp | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/plugins/remotefortressreader/building_reader.cpp b/plugins/remotefortressreader/building_reader.cpp index a4300159e..5a0595eef 100644 --- a/plugins/remotefortressreader/building_reader.cpp +++ b/plugins/remotefortressreader/building_reader.cpp @@ -316,7 +316,8 @@ void CopyBuilding(int buildingIndex, RemoteFortressReader::BuildingInstance * re material->set_mat_index(local_build->mat_index); remote_build->set_building_flags(local_build->flags.whole); - remote_build->set_is_room(local_build->is_room); + //FIXME: Figure out what to replace this with. + //remote_build->set_is_room(local_build->is_room); if (local_build->room.width > 0 && local_build->room.height > 0 && local_build->room.extents != nullptr) { auto room = remote_build->mutable_room(); @@ -607,28 +608,29 @@ void CopyBuilding(int buildingIndex, RemoteFortressReader::BuildingInstance * re } case df::enums::building_type::ArcheryTarget: { - auto actual = strict_virtual_cast(local_build); - if (actual) - { - auto facing = actual->archery_direction; - switch (facing) - { - case df::building_archerytargetst::TopToBottom: - remote_build->set_direction(NORTH); - break; - case df::building_archerytargetst::BottomToTop: - remote_build->set_direction(SOUTH); - break; - case df::building_archerytargetst::LeftToRight: - remote_build->set_direction(WEST); - break; - case df::building_archerytargetst::RightToLeft: - remote_build->set_direction(EAST); - break; - default: - break; - } - } + //FIXME: Need to decode archery targets again. + //auto actual = strict_virtual_cast(local_build); + //if (actual) + //{ + // auto facing = actual->archery_direction; + // switch (facing) + // { + // case df::building_archerytargetst::TopToBottom: + // remote_build->set_direction(NORTH); + // break; + // case df::building_archerytargetst::BottomToTop: + // remote_build->set_direction(SOUTH); + // break; + // case df::building_archerytargetst::LeftToRight: + // remote_build->set_direction(WEST); + // break; + // case df::building_archerytargetst::RightToLeft: + // remote_build->set_direction(EAST); + // break; + // default: + // break; + // } + //} break; } case df::enums::building_type::Chain: From 5f70a268037ca36f4086c88ba84922bf80b9358c Mon Sep 17 00:00:00 2001 From: Rose Date: Mon, 26 Dec 2022 17:15:12 -0800 Subject: [PATCH 04/10] Comment out the dwarf mode UI for now. (Forever?) --- .../remotefortressreader/dwarf_control.cpp | 492 +++++++++--------- 1 file changed, 246 insertions(+), 246 deletions(-) diff --git a/plugins/remotefortressreader/dwarf_control.cpp b/plugins/remotefortressreader/dwarf_control.cpp index 3a5933464..f10d228ca 100644 --- a/plugins/remotefortressreader/dwarf_control.cpp +++ b/plugins/remotefortressreader/dwarf_control.cpp @@ -233,261 +233,261 @@ command_result SetPauseState(color_ostream &stream, const SingleBool *in) void CopyBuildMenu(DwarfControl::SidebarState * out) { - auto menus = df::global::ui_sidebar_menus; - auto build_selector = df::global::ui_build_selector; - if (build_selector->building_type == -1) - for (size_t i = 0; i < menus->building.choices_visible.size(); i++) - { - auto menu_item = menus->building.choices_visible[i]; - auto send_item = out->add_menu_items(); - STRICT_VIRTUAL_CAST_VAR(building, df::interface_button_construction_building_selectorst, menu_item); - if (building) - { - auto send_bld = send_item->mutable_building_type(); - send_bld->set_building_type(building->building_type); - send_bld->set_building_subtype(building->building_subtype); - send_bld->set_building_custom(building->custom_type); - send_item->set_existing_count(building->existing_count); - } - STRICT_VIRTUAL_CAST_VAR(sub_category, df::interface_button_construction_category_selectorst, menu_item); - if (sub_category) - { - send_item->set_build_category((DwarfControl::BuildCategory)sub_category->category_id); - } - } - else - { - auto send_selector = out->mutable_build_selector(); - auto send_bld = send_selector->mutable_building_type(); - send_bld->set_building_type(build_selector->building_type); - send_bld->set_building_subtype(build_selector->building_subtype); - send_bld->set_building_custom(build_selector->custom_type); - send_selector->set_stage((DwarfControl::BuildSelectorStage)build_selector->stage); - for (size_t i = 0; i < build_selector->errors.size(); i++) - { - if (build_selector->errors[i]) - send_selector->add_errors(*build_selector->errors[i]); - } - for (size_t i = 0; i < build_selector->choices.size(); i++) - { - auto choice = build_selector->choices[i]; - auto send_choice = send_selector->add_choices(); - send_choice->set_distance(choice->distance); - std::string name; - choice->getName(&name); - send_choice->set_name(name); - send_choice->set_num_candidates(choice->getNumCandidates()); - send_choice->set_used_count(choice->getUsedCount()); - } - int16_t x_low, y_low, x_high, y_high; - GetBuildingSize(build_selector->building_type, build_selector->building_subtype, build_selector->custom_type, x_low, y_low, x_high, y_high); - send_selector->set_radius_x_low(x_low); - send_selector->set_radius_y_low(y_low); - send_selector->set_radius_x_high(x_high); - send_selector->set_radius_y_high(y_high); - if (build_selector->stage >= 1) - { - auto send_cursor = send_selector->mutable_cursor(); - send_cursor->set_x(cursor->x); - send_cursor->set_y(cursor->y); - send_cursor->set_z(cursor->z); - } + //auto menus = df::global::ui_sidebar_menus; + //auto build_selector = df::global::ui_build_selector; + //if (build_selector->building_type == -1) + // for (size_t i = 0; i < menus->building.choices_visible.size(); i++) + // { + // auto menu_item = menus->building.choices_visible[i]; + // auto send_item = out->add_menu_items(); + // STRICT_VIRTUAL_CAST_VAR(building, df::interface_button_construction_building_selectorst, menu_item); + // if (building) + // { + // auto send_bld = send_item->mutable_building_type(); + // send_bld->set_building_type(building->building_type); + // send_bld->set_building_subtype(building->building_subtype); + // send_bld->set_building_custom(building->custom_type); + // send_item->set_existing_count(building->existing_count); + // } + // STRICT_VIRTUAL_CAST_VAR(sub_category, df::interface_button_construction_category_selectorst, menu_item); + // if (sub_category) + // { + // send_item->set_build_category((DwarfControl::BuildCategory)sub_category->category_id); + // } + // } + //else + //{ + // auto send_selector = out->mutable_build_selector(); + // auto send_bld = send_selector->mutable_building_type(); + // send_bld->set_building_type(build_selector->building_type); + // send_bld->set_building_subtype(build_selector->building_subtype); + // send_bld->set_building_custom(build_selector->custom_type); + // send_selector->set_stage((DwarfControl::BuildSelectorStage)build_selector->stage); + // for (size_t i = 0; i < build_selector->errors.size(); i++) + // { + // if (build_selector->errors[i]) + // send_selector->add_errors(*build_selector->errors[i]); + // } + // for (size_t i = 0; i < build_selector->choices.size(); i++) + // { + // auto choice = build_selector->choices[i]; + // auto send_choice = send_selector->add_choices(); + // send_choice->set_distance(choice->distance); + // std::string name; + // choice->getName(&name); + // send_choice->set_name(name); + // send_choice->set_num_candidates(choice->getNumCandidates()); + // send_choice->set_used_count(choice->getUsedCount()); + // } + // int16_t x_low, y_low, x_high, y_high; + // GetBuildingSize(build_selector->building_type, build_selector->building_subtype, build_selector->custom_type, x_low, y_low, x_high, y_high); + // send_selector->set_radius_x_low(x_low); + // send_selector->set_radius_y_low(y_low); + // send_selector->set_radius_x_high(x_high); + // send_selector->set_radius_y_high(y_high); + // if (build_selector->stage >= 1) + // { + // auto send_cursor = send_selector->mutable_cursor(); + // send_cursor->set_x(cursor->x); + // send_cursor->set_y(cursor->y); + // send_cursor->set_z(cursor->z); + // } - for (int y = 0; y < (y_low + y_high + 1); y++) - for (int x = 0; x < (x_low + x_high + 1); x++) - { - send_selector->add_tiles(build_selector->tiles[x][y]); - } - } + // for (int y = 0; y < (y_low + y_high + 1); y++) + // for (int x = 0; x < (x_low + x_high + 1); x++) + // { + // send_selector->add_tiles(build_selector->tiles[x][y]); + // } + //} } command_result GetSideMenu(DFHack::color_ostream &stream, const dfproto::EmptyMessage *in, DwarfControl::SidebarState *out) { - auto ui = df::global::ui; - out->set_mode((proto::enums::ui_sidebar_mode::ui_sidebar_mode)ui->main.mode); - auto mode = ui->main.mode; - switch (mode) - { - case ui_sidebar_mode::Default: - break; - case ui_sidebar_mode::Squads: - break; - case ui_sidebar_mode::DesignateMine: - break; - case ui_sidebar_mode::DesignateRemoveRamps: - break; - case ui_sidebar_mode::DesignateUpStair: - break; - case ui_sidebar_mode::DesignateDownStair: - break; - case ui_sidebar_mode::DesignateUpDownStair: - break; - case ui_sidebar_mode::DesignateUpRamp: - break; - case ui_sidebar_mode::DesignateChannel: - break; - case ui_sidebar_mode::DesignateGatherPlants: - break; - case ui_sidebar_mode::DesignateRemoveDesignation: - break; - case ui_sidebar_mode::DesignateSmooth: - break; - case ui_sidebar_mode::DesignateCarveTrack: - break; - case ui_sidebar_mode::DesignateEngrave: - break; - case ui_sidebar_mode::DesignateCarveFortification: - break; - case ui_sidebar_mode::Stockpiles: - break; - case ui_sidebar_mode::Build: - CopyBuildMenu(out); - break; - case ui_sidebar_mode::QueryBuilding: - break; - case ui_sidebar_mode::Orders: - break; - case ui_sidebar_mode::OrdersForbid: - break; - case ui_sidebar_mode::OrdersRefuse: - break; - case ui_sidebar_mode::OrdersWorkshop: - break; - case ui_sidebar_mode::OrdersZone: - break; - case ui_sidebar_mode::BuildingItems: - break; - case ui_sidebar_mode::ViewUnits: - break; - case ui_sidebar_mode::LookAround: - break; - case ui_sidebar_mode::DesignateItemsClaim: - break; - case ui_sidebar_mode::DesignateItemsForbid: - break; - case ui_sidebar_mode::DesignateItemsMelt: - break; - case ui_sidebar_mode::DesignateItemsUnmelt: - break; - case ui_sidebar_mode::DesignateItemsDump: - break; - case ui_sidebar_mode::DesignateItemsUndump: - break; - case ui_sidebar_mode::DesignateItemsHide: - break; - case ui_sidebar_mode::DesignateItemsUnhide: - break; - case ui_sidebar_mode::DesignateChopTrees: - break; - case ui_sidebar_mode::DesignateToggleEngravings: - break; - case ui_sidebar_mode::DesignateToggleMarker: - break; - case ui_sidebar_mode::Hotkeys: - break; - case ui_sidebar_mode::DesignateTrafficHigh: - break; - case ui_sidebar_mode::DesignateTrafficNormal: - break; - case ui_sidebar_mode::DesignateTrafficLow: - break; - case ui_sidebar_mode::DesignateTrafficRestricted: - break; - case ui_sidebar_mode::Zones: - break; - case ui_sidebar_mode::ZonesPenInfo: - break; - case ui_sidebar_mode::ZonesPitInfo: - break; - case ui_sidebar_mode::ZonesHospitalInfo: - break; - case ui_sidebar_mode::ZonesGatherInfo: - break; - case ui_sidebar_mode::DesignateRemoveConstruction: - break; - case ui_sidebar_mode::DepotAccess: - break; - case ui_sidebar_mode::NotesPoints: - break; - case ui_sidebar_mode::NotesRoutes: - break; - case ui_sidebar_mode::Burrows: - break; - case ui_sidebar_mode::Hauling: - break; - case ui_sidebar_mode::ArenaWeather: - break; - case ui_sidebar_mode::ArenaTrees: - break; - default: - break; - } + //auto ui = df::global::ui; + //out->set_mode((proto::enums::ui_sidebar_mode::ui_sidebar_mode)ui->main.mode); + //auto mode = ui->main.mode; + //switch (mode) + //{ + //case ui_sidebar_mode::Default: + // break; + //case ui_sidebar_mode::Squads: + // break; + //case ui_sidebar_mode::DesignateMine: + // break; + //case ui_sidebar_mode::DesignateRemoveRamps: + // break; + //case ui_sidebar_mode::DesignateUpStair: + // break; + //case ui_sidebar_mode::DesignateDownStair: + // break; + //case ui_sidebar_mode::DesignateUpDownStair: + // break; + //case ui_sidebar_mode::DesignateUpRamp: + // break; + //case ui_sidebar_mode::DesignateChannel: + // break; + //case ui_sidebar_mode::DesignateGatherPlants: + // break; + //case ui_sidebar_mode::DesignateRemoveDesignation: + // break; + //case ui_sidebar_mode::DesignateSmooth: + // break; + //case ui_sidebar_mode::DesignateCarveTrack: + // break; + //case ui_sidebar_mode::DesignateEngrave: + // break; + //case ui_sidebar_mode::DesignateCarveFortification: + // break; + //case ui_sidebar_mode::Stockpiles: + // break; + //case ui_sidebar_mode::Build: + // CopyBuildMenu(out); + // break; + //case ui_sidebar_mode::QueryBuilding: + // break; + //case ui_sidebar_mode::Orders: + // break; + //case ui_sidebar_mode::OrdersForbid: + // break; + //case ui_sidebar_mode::OrdersRefuse: + // break; + //case ui_sidebar_mode::OrdersWorkshop: + // break; + //case ui_sidebar_mode::OrdersZone: + // break; + //case ui_sidebar_mode::BuildingItems: + // break; + //case ui_sidebar_mode::ViewUnits: + // break; + //case ui_sidebar_mode::LookAround: + // break; + //case ui_sidebar_mode::DesignateItemsClaim: + // break; + //case ui_sidebar_mode::DesignateItemsForbid: + // break; + //case ui_sidebar_mode::DesignateItemsMelt: + // break; + //case ui_sidebar_mode::DesignateItemsUnmelt: + // break; + //case ui_sidebar_mode::DesignateItemsDump: + // break; + //case ui_sidebar_mode::DesignateItemsUndump: + // break; + //case ui_sidebar_mode::DesignateItemsHide: + // break; + //case ui_sidebar_mode::DesignateItemsUnhide: + // break; + //case ui_sidebar_mode::DesignateChopTrees: + // break; + //case ui_sidebar_mode::DesignateToggleEngravings: + // break; + //case ui_sidebar_mode::DesignateToggleMarker: + // break; + //case ui_sidebar_mode::Hotkeys: + // break; + //case ui_sidebar_mode::DesignateTrafficHigh: + // break; + //case ui_sidebar_mode::DesignateTrafficNormal: + // break; + //case ui_sidebar_mode::DesignateTrafficLow: + // break; + //case ui_sidebar_mode::DesignateTrafficRestricted: + // break; + //case ui_sidebar_mode::Zones: + // break; + //case ui_sidebar_mode::ZonesPenInfo: + // break; + //case ui_sidebar_mode::ZonesPitInfo: + // break; + //case ui_sidebar_mode::ZonesHospitalInfo: + // break; + //case ui_sidebar_mode::ZonesGatherInfo: + // break; + //case ui_sidebar_mode::DesignateRemoveConstruction: + // break; + //case ui_sidebar_mode::DepotAccess: + // break; + //case ui_sidebar_mode::NotesPoints: + // break; + //case ui_sidebar_mode::NotesRoutes: + // break; + //case ui_sidebar_mode::Burrows: + // break; + //case ui_sidebar_mode::Hauling: + // break; + //case ui_sidebar_mode::ArenaWeather: + // break; + //case ui_sidebar_mode::ArenaTrees: + // break; + //default: + // break; + //} return CR_OK; } command_result SetSideMenu(DFHack::color_ostream &stream, const DwarfControl::SidebarCommand *in) { - auto ui = df::global::ui; - if (in->has_mode()) - { - ui_sidebar_mode::ui_sidebar_mode set_mode = (ui_sidebar_mode::ui_sidebar_mode)in->mode(); - if (ui->main.mode != set_mode) - { - ui->main.mode = ui_sidebar_mode::Default; - switch (set_mode) - { - case ui_sidebar_mode::Build: - keyQueue.push(interface_key::D_BUILDING); - break; - default: - ui->main.mode = set_mode; - break; - } - } - } - switch (ui->main.mode) - { - case ui_sidebar_mode::Build: - if (in->has_action()) - { - int index = 0; - if (in->has_menu_index()) - index = in->menu_index(); - if(ui_build_selector->building_type == -1) - df::global::ui_sidebar_menus->building.cursor = index; - if (ui_build_selector->stage == 2) - { - ui_build_selector->sel_index = index; - } - } - if (ui_build_selector->stage == 1) - { - if (in->has_selection_coord()) - { - df::global::cursor->x = in->selection_coord().x(); - df::global::cursor->y = in->selection_coord().y(); - df::global::cursor->z = in->selection_coord().z(); - getCurViewscreen()->feed_key(interface_key::CURSOR_LEFT); - getCurViewscreen()->feed_key(interface_key::CURSOR_RIGHT); - } - } - break; - default: - break; - } - if (in->has_action()) - { - switch (in->action()) - { - case DwarfControl::MenuSelect: - keyQueue.push(interface_key::SELECT); - break; - case DwarfControl::MenuCancel: - keyQueue.push(interface_key::LEAVESCREEN); - break; - default: - break; - } - } + //auto ui = df::global::ui; + //if (in->has_mode()) + //{ + // ui_sidebar_mode::ui_sidebar_mode set_mode = (ui_sidebar_mode::ui_sidebar_mode)in->mode(); + // if (ui->main.mode != set_mode) + // { + // ui->main.mode = ui_sidebar_mode::Default; + // switch (set_mode) + // { + // case ui_sidebar_mode::Build: + // keyQueue.push(interface_key::D_BUILDING); + // break; + // default: + // ui->main.mode = set_mode; + // break; + // } + // } + //} + //switch (ui->main.mode) + //{ + //case ui_sidebar_mode::Build: + // if (in->has_action()) + // { + // int index = 0; + // if (in->has_menu_index()) + // index = in->menu_index(); + // if(ui_build_selector->building_type == -1) + // df::global::ui_sidebar_menus->building.cursor = index; + // if (ui_build_selector->stage == 2) + // { + // ui_build_selector->sel_index = index; + // } + // } + // if (ui_build_selector->stage == 1) + // { + // if (in->has_selection_coord()) + // { + // df::global::cursor->x = in->selection_coord().x(); + // df::global::cursor->y = in->selection_coord().y(); + // df::global::cursor->z = in->selection_coord().z(); + // getCurViewscreen()->feed_key(interface_key::CURSOR_LEFT); + // getCurViewscreen()->feed_key(interface_key::CURSOR_RIGHT); + // } + // } + // break; + //default: + // break; + //} + //if (in->has_action()) + //{ + // switch (in->action()) + // { + // case DwarfControl::MenuSelect: + // keyQueue.push(interface_key::SELECT); + // break; + // case DwarfControl::MenuCancel: + // keyQueue.push(interface_key::LEAVESCREEN); + // break; + // default: + // break; + // } + //} return CR_OK; } From 6783075ff294ce45060b4c956ed8a432e259880c Mon Sep 17 00:00:00 2001 From: Rose Date: Tue, 27 Dec 2022 00:46:04 -0800 Subject: [PATCH 05/10] Get RFR to actually compile. Many structure changes so it doesn't work yet. --- plugins/remotefortressreader/item_reader.cpp | 3 +- .../remotefortressreader.cpp | 68 ++++++++++--------- 2 files changed, 37 insertions(+), 34 deletions(-) diff --git a/plugins/remotefortressreader/item_reader.cpp b/plugins/remotefortressreader/item_reader.cpp index 56ec9019b..c791852f3 100644 --- a/plugins/remotefortressreader/item_reader.cpp +++ b/plugins/remotefortressreader/item_reader.cpp @@ -271,7 +271,8 @@ void CopyItem(RemoteFortressReader::Item * NetItem, df::item * DfItem) case df::enums::item_type::GLOVES: break; case df::enums::item_type::BOX: - type->set_mat_index(DfItem->isBag()); + //FIXME: Figure out how things change with this. Possibly make sure the item types are mutable. + //type->set_mat_index(DfItem->isBag()); break; case df::enums::item_type::BIN: break; diff --git a/plugins/remotefortressreader/remotefortressreader.cpp b/plugins/remotefortressreader/remotefortressreader.cpp index 643e92b21..acf7f27ad 100644 --- a/plugins/remotefortressreader/remotefortressreader.cpp +++ b/plugins/remotefortressreader/remotefortressreader.cpp @@ -319,14 +319,14 @@ uint16_t fletcher16(uint8_t const *data, size_t bytes) void ConvertDfColor(int16_t index, RemoteFortressReader::ColorDefinition * out) { - if (!df::global::enabler) + if (!df::global::gps) return; - auto enabler = df::global::enabler; + auto gps = df::global::gps; - out->set_red((int)(enabler->ccolor[index][0] * 255)); - out->set_green((int)(enabler->ccolor[index][1] * 255)); - out->set_blue((int)(enabler->ccolor[index][2] * 255)); + out->set_red(gps->uccolor[index][0]); + out->set_green(gps->uccolor[index][1]); + out->set_blue(gps->uccolor[index][2]); } void ConvertDfColor(int16_t in[3], RemoteFortressReader::ColorDefinition * out) @@ -1854,18 +1854,19 @@ static command_result GetViewInfo(color_ostream &stream, const EmptyMessage *in, Gui::getViewCoords(x, y, z); Gui::getCursorCoords(cx, cy, cz); -#if DF_VERSION_INT > 34011 - auto embark = Gui::getViewscreenByType(0); - if (embark) - { - df::embark_location location = embark->location; - df::world_data * data = df::global::world->world_data; - if (data && data->region_map) - { - z = data->region_map[location.region_pos.x][location.region_pos.y].elevation; - } - } -#endif + //FIXME: Get get this info from the new embark screen. +//#if DF_VERSION_INT > 34011 +// auto embark = Gui::getViewscreenByType(0); +// if (embark) +// { +// df::embark_location location = embark->location; +// df::world_data * data = df::global::world->world_data; +// if (data && data->region_map) +// { +// z = data->region_map[location.region_pos.x][location.region_pos.y].elevation; +// } +// } +//#endif auto dims = Gui::getDwarfmodeViewDims(); @@ -1915,22 +1916,23 @@ static command_result GetMapInfo(color_ostream &stream, const EmptyMessage *in, DFCoord GetMapCenter() { DFCoord output; -#if DF_VERSION_INT > 34011 - auto embark = Gui::getViewscreenByType(0); - if (embark) - { - df::embark_location location = embark->location; - output.x = (location.region_pos.x * 16) + 8; - output.y = (location.region_pos.y * 16) + 8; - output.z = 100; - df::world_data * data = df::global::world->world_data; - if (data && data->region_map) - { - output.z = data->region_map[location.region_pos.x][location.region_pos.y].elevation; - } - } - else -#endif +//FIXME: Does this even still exist? +//#if DF_VERSION_INT > 34011 +// auto embark = Gui::getViewscreenByType(0); +// if (embark) +// { +// df::embark_location location = embark->location; +// output.x = (location.region_pos.x * 16) + 8; +// output.y = (location.region_pos.y * 16) + 8; +// output.z = 100; +// df::world_data * data = df::global::world->world_data; +// if (data && data->region_map) +// { +// output.z = data->region_map[location.region_pos.x][location.region_pos.y].elevation; +// } +// } +// else +//#endif if (Maps::IsValid()) { int x, y, z; From 1b359bddf24737e76b5d6ea5caa2a0c0b63feb75 Mon Sep 17 00:00:00 2001 From: Rose Date: Wed, 28 Dec 2022 11:13:07 -0800 Subject: [PATCH 06/10] update xmls --- library/xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/xml b/library/xml index c4d78c229..23663bc10 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit c4d78c229aa0edd68a69cd5b19d5ad35a5b71098 +Subproject commit 23663bc10ed7794d3f5bb1ce99b2a84130dbe166 From fb99ef5d46985f419326593d671c785edd75dc5e Mon Sep 17 00:00:00 2001 From: Rose Date: Wed, 28 Dec 2022 16:08:36 -0800 Subject: [PATCH 07/10] update xml --- library/xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/xml b/library/xml index 23663bc10..7debb9411 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit 23663bc10ed7794d3f5bb1ce99b2a84130dbe166 +Subproject commit 7debb9411b6df0709b295a8bb85b8dbada14b45d From 67b95bf35f3a3405f93f4f1f237a4df27bf11196 Mon Sep 17 00:00:00 2001 From: Rose Date: Wed, 4 Jan 2023 15:01:46 -0800 Subject: [PATCH 08/10] Compile Remote Fortress Reader --- plugins/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index dd5000ab5..19c73698b 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -148,7 +148,7 @@ dfhack_plugin(overlay overlay.cpp LINK_LIBRARIES lua) #dfhack_plugin(prospector prospector.cpp LINK_LIBRARIES lua) #dfhack_plugin(power-meter power-meter.cpp LINK_LIBRARIES lua) #dfhack_plugin(regrass regrass.cpp) -#add_subdirectory(remotefortressreader) +add_subdirectory(remotefortressreader) #dfhack_plugin(rename rename.cpp LINK_LIBRARIES lua PROTOBUFS rename) #add_subdirectory(rendermax) #dfhack_plugin(reveal reveal.cpp LINK_LIBRARIES lua) From cc4a42a901ebf5b7b30128e00b241fc15cef9f44 Mon Sep 17 00:00:00 2001 From: Rose Date: Fri, 6 Jan 2023 19:43:54 -0800 Subject: [PATCH 09/10] Re-comment out the UI stuff. --- .../adventure_control.cpp | 19 +++++++++++++------ .../remotefortressreader/dwarf_control.cpp | 6 ++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/plugins/remotefortressreader/adventure_control.cpp b/plugins/remotefortressreader/adventure_control.cpp index 2dbf2abc1..0d2e97f68 100644 --- a/plugins/remotefortressreader/adventure_control.cpp +++ b/plugins/remotefortressreader/adventure_control.cpp @@ -39,6 +39,7 @@ void SetCoord(df::coord in, RemoteFortressReader::Coord *out) command_result MoveCommand(DFHack::color_ostream &stream, const MoveCommandParams *in) { +/* Removed for v50 which has no adventure mode. auto viewScreen = getCurViewscreen(); if (!in->has_direction()) return CR_WRONG_USAGE; @@ -186,12 +187,13 @@ command_result MoveCommand(DFHack::color_ostream &stream, const MoveCommandParam } break; } - return CR_OK; +*/ return CR_OK; } command_result JumpCommand(DFHack::color_ostream &stream, const MoveCommandParams *in) { - if (!in->has_direction()) +/* Removed for v50 which has no adventure mode. + if (!in->has_direction()) return CR_WRONG_USAGE; if (!df::global::adventure->menu == ui_advmode_menu::Default) return CR_OK; @@ -228,12 +230,14 @@ command_result JumpCommand(DFHack::color_ostream &stream, const MoveCommandParam } } keyQueue.push(interface_key::SELECT); +*/ return CR_OK; } command_result MenuQuery(DFHack::color_ostream &stream, const EmptyMessage *in, MenuContents *out) { - auto advUi = df::global::adventure; +/* Removed for v50 which has no adventure mode. + auto advUi = df::global::adventure; if (advUi == NULL) return CR_FAILURE; @@ -272,12 +276,13 @@ command_result MenuQuery(DFHack::color_ostream &stream, const EmptyMessage *in, default: break; } - +*/ return CR_OK; } command_result MovementSelectCommand(DFHack::color_ostream &stream, const dfproto::IntMessage *in) { + /* Removed for v50 which has no adventure mode. if (!(df::global::adventure->menu == ui_advmode_menu::MoveCarefully)) return CR_OK; int choice = in->value(); @@ -288,12 +293,14 @@ command_result MovementSelectCommand(DFHack::color_ostream &stream, const dfprot keyQueue.push(interface_key::SECONDSCROLL_PAGEDOWN); } keyQueue.push((interface_key::interface_key)(interface_key::OPTION1 + select)); +*/ return CR_OK; } command_result MiscMoveCommand(DFHack::color_ostream &stream, const MiscMoveParams *in) { - if (!df::global::adventure->menu == ui_advmode_menu::Default) + /* Removed for v50 which has no adventure mode. + if (!df::global::adventure->menu == ui_advmode_menu::Default) return CR_OK; auto type = in->type(); @@ -312,6 +319,6 @@ command_result MiscMoveCommand(DFHack::color_ostream &stream, const MiscMovePara default: break; } - +*/ return CR_OK; } diff --git a/plugins/remotefortressreader/dwarf_control.cpp b/plugins/remotefortressreader/dwarf_control.cpp index f0147670f..5b8f2b282 100644 --- a/plugins/remotefortressreader/dwarf_control.cpp +++ b/plugins/remotefortressreader/dwarf_control.cpp @@ -233,6 +233,7 @@ command_result SetPauseState(color_ostream &stream, const SingleBool *in) void CopyBuildMenu(DwarfControl::SidebarState * out) { + /* Removed in v50 because the new menu is completely changed and we may not even want to do it the same way anymore. auto menus = df::global::game; auto build_selector = df::global::ui_build_selector; if (build_selector->building_type == -1) @@ -299,10 +300,12 @@ void CopyBuildMenu(DwarfControl::SidebarState * out) send_selector->add_tiles(build_selector->tiles[x][y]); } } + */ } command_result GetSideMenu(DFHack::color_ostream &stream, const dfproto::EmptyMessage *in, DwarfControl::SidebarState *out) { + /* Removed in v50 because the new menu is completely changed and we may not even want to do it the same way anymore. auto plotinfo = df::global::plotinfo; out->set_mode((proto::enums::ui_sidebar_mode::ui_sidebar_mode)plotinfo->main.mode); auto mode = plotinfo->main.mode; @@ -422,11 +425,13 @@ command_result GetSideMenu(DFHack::color_ostream &stream, const dfproto::EmptyMe default: break; } + */ return CR_OK; } command_result SetSideMenu(DFHack::color_ostream &stream, const DwarfControl::SidebarCommand *in) { + /* Removed in v50 because the new menu is completely changed and we may not even want to do it the same way anymore. auto plotinfo = df::global::plotinfo; if (in->has_mode()) { @@ -489,5 +494,6 @@ command_result SetSideMenu(DFHack::color_ostream &stream, const DwarfControl::Si break; } } + */ return CR_OK; } From 95223d819761c09b8290be1cb61fc65a015aec6d Mon Sep 17 00:00:00 2001 From: Rose Date: Sat, 7 Jan 2023 14:37:44 -0800 Subject: [PATCH 10/10] Got archery target direction back, and cleaned up a few things. --- library/xml | 2 +- .../remotefortressreader/building_reader.cpp | 49 +++++++++---------- .../remotefortressreader.cpp | 25 ---------- 3 files changed, 24 insertions(+), 52 deletions(-) diff --git a/library/xml b/library/xml index d026f34ed..d7de31978 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit d026f34ed1f7ab79aebb1c5bc8a36ee9b30bd13d +Subproject commit d7de31978634d6bd165069e5fcaffc64a0d4a91c diff --git a/plugins/remotefortressreader/building_reader.cpp b/plugins/remotefortressreader/building_reader.cpp index 5a0595eef..e1f29e358 100644 --- a/plugins/remotefortressreader/building_reader.cpp +++ b/plugins/remotefortressreader/building_reader.cpp @@ -316,8 +316,6 @@ void CopyBuilding(int buildingIndex, RemoteFortressReader::BuildingInstance * re material->set_mat_index(local_build->mat_index); remote_build->set_building_flags(local_build->flags.whole); - //FIXME: Figure out what to replace this with. - //remote_build->set_is_room(local_build->is_room); if (local_build->room.width > 0 && local_build->room.height > 0 && local_build->room.extents != nullptr) { auto room = remote_build->mutable_room(); @@ -609,28 +607,29 @@ void CopyBuilding(int buildingIndex, RemoteFortressReader::BuildingInstance * re case df::enums::building_type::ArcheryTarget: { //FIXME: Need to decode archery targets again. - //auto actual = strict_virtual_cast(local_build); - //if (actual) - //{ - // auto facing = actual->archery_direction; - // switch (facing) - // { - // case df::building_archerytargetst::TopToBottom: - // remote_build->set_direction(NORTH); - // break; - // case df::building_archerytargetst::BottomToTop: - // remote_build->set_direction(SOUTH); - // break; - // case df::building_archerytargetst::LeftToRight: - // remote_build->set_direction(WEST); - // break; - // case df::building_archerytargetst::RightToLeft: - // remote_build->set_direction(EAST); - // break; - // default: - // break; - // } - //} + auto actual = strict_virtual_cast(local_build); + if (actual) + { + for (size_t i = 0; i < actual->relations.size(); i++) + { + if (actual->relations[i]->getType() != df::enums::building_type::Civzone) + continue; + auto zone = strict_virtual_cast(actual->relations[i]); + if (!zone) + continue; + if (zone->type != df::civzone_type::ArcheryRange) + continue; + if(zone->dir_x < 0) + remote_build->set_direction(EAST); + else if(zone->dir_x > 0) + remote_build->set_direction(WEST); + else if (zone->dir_y < 0) + remote_build->set_direction(SOUTH); + else if (zone->dir_y > 0) + remote_build->set_direction(NORTH); + break; + } + } break; } case df::enums::building_type::Chain: @@ -851,7 +850,6 @@ void CopyBuilding(int buildingIndex, RemoteFortressReader::BuildingInstance * re auto actual = strict_virtual_cast(local_build); if (actual) { -#if DF_VERSION_INT > 34011 if (actual->orient_x < 0) remote_build->set_direction(WEST); else if (actual->orient_x > 0) @@ -861,7 +859,6 @@ void CopyBuilding(int buildingIndex, RemoteFortressReader::BuildingInstance * re else if (actual->orient_y > 0) remote_build->set_direction(SOUTH); else -#endif remote_build->set_direction(WEST); if (actual->machine.machine_id >= 0) { diff --git a/plugins/remotefortressreader/remotefortressreader.cpp b/plugins/remotefortressreader/remotefortressreader.cpp index c4e5b99de..d1a269d52 100644 --- a/plugins/remotefortressreader/remotefortressreader.cpp +++ b/plugins/remotefortressreader/remotefortressreader.cpp @@ -859,31 +859,6 @@ static command_result GetMaterialList(color_ostream &stream, const EmptyMessage } } } - //for (size_t i = 0; i < history->figures.size(); i++) - //{ - // df::historical_figure * figure = history->figures[i]; - // if (figure->race < 0) - // continue; - // df::creature_raw * creature = raws->creatures.all[figure->race]; - // for (int j = 0; j < creature->material.size(); j++) - // { - // mat.decode(j + MaterialInfo::FIGURE_BASE, i); - // MaterialDefinition *mat_def = out->add_material_list(); - // mat_def->mutable_mat_pair()->set_mat_type(j + MaterialInfo::FIGURE_BASE); - // mat_def->mutable_mat_pair()->set_mat_index(i); - // stringstream id; - // id << "HF" << i << mat.getToken(); - // mat_def->set_id(id.str()); - // mat_def->set_name(mat.toString()); //find the name at cave temperature; - // if (creature->material[j]->state_color[GetState(creature->material[j])] < raws->descriptors.colors.size()) - // { - // df::descriptor_color *color = raws->descriptors.colors[creature->material[j]->state_color[GetState(creature->material[j])]]; - // mat_def->mutable_state_color()->set_red(color->red * 255); - // mat_def->mutable_state_color()->set_green(color->green * 255); - // mat_def->mutable_state_color()->set_blue(color->blue * 255); - // } - // } - //} for (size_t i = 0; i < raws->plants.all.size(); i++) { df::plant_raw * plant = raws->plants.all[i];