From f8728a438893d7a6b608b27cfab9bd7991832a6e Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 9 Jan 2023 01:39:48 -0800 Subject: [PATCH] get rudimentary getAny(Unit|Item|Building) working --- library/modules/Gui.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/library/modules/Gui.cpp b/library/modules/Gui.cpp index 8a009c1dc..0fb455fc9 100644 --- a/library/modules/Gui.cpp +++ b/library/modules/Gui.cpp @@ -832,6 +832,15 @@ df::job *Gui::getSelectedJob(color_ostream &out, bool quiet) df::unit *Gui::getAnyUnit(df::viewscreen *top) { + using df::global::game; + + if (auto dfscreen = dfhack_viewscreen::try_cast(top)) + return dfscreen->getSelectedUnit(); + + if (game->main_interface.view_sheets.open + && game->main_interface.view_sheets.active_sheet == view_sheet_type::UNIT) + return df::unit::find(game->main_interface.view_sheets.active_id); + /* TODO: understand how this changes for v50 using namespace ui_sidebar_mode; using df::global::ui_look_cursor; @@ -1114,6 +1123,15 @@ df::unit *Gui::getSelectedUnit(color_ostream &out, bool quiet) df::item *Gui::getAnyItem(df::viewscreen *top) { + using df::global::game; + + if (auto dfscreen = dfhack_viewscreen::try_cast(top)) + return dfscreen->getSelectedItem(); + + if (game->main_interface.view_sheets.open + && game->main_interface.view_sheets.active_sheet == view_sheet_type::ITEM) + return df::item::find(game->main_interface.view_sheets.active_id); + /* TODO: understand how this changes for v50 using namespace ui_sidebar_mode; using df::global::ui_look_cursor; @@ -1254,6 +1272,15 @@ df::item *Gui::getSelectedItem(color_ostream &out, bool quiet) df::building *Gui::getAnyBuilding(df::viewscreen *top) { + using df::global::game; + + if (auto dfscreen = dfhack_viewscreen::try_cast(top)) + return dfscreen->getSelectedBuilding(); + + if (game->main_interface.view_sheets.open + && game->main_interface.view_sheets.active_sheet == view_sheet_type::BUILDING) + return df::building::find(game->main_interface.view_sheets.active_id); + /* TODO: understand how this changes for v50 using namespace ui_sidebar_mode; using df::global::ui_look_list;