From 89428bb34396fe3de4963f6bbba477b2ba2d27e4 Mon Sep 17 00:00:00 2001 From: Robob27 Date: Mon, 6 Nov 2023 22:48:21 -0500 Subject: [PATCH 1/6] Add trap type to focus string --- docs/changelog.txt | 1 + library/modules/Gui.cpp | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 6f2e0d8f7..2dc0bc520 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -83,6 +83,7 @@ Template for new versions: - ``Units::getReadableName``: now returns the *untranslated* name - ``Burrows::setAssignedUnit``: now properly handles inactive burrows - ``Gui::getMousePos``: now takes an optional ``allow_out_of_bounds`` parameter so coordinates can be returned for mouse positions outside of the game map (i.e. in the blank space around the map) +- Gui focus strings will now include the trap type for traps (e.g. dwarfmode/ViewSheets/BUILDING/Trap/StoneFallTrap) ## Lua - ``dfhack.gui.revealInDwarfmodeMap``: gained ``highlight`` parameter to control setting the tile highlight on the zoom target diff --git a/library/modules/Gui.cpp b/library/modules/Gui.cpp index 475ac5728..992913e10 100644 --- a/library/modules/Gui.cpp +++ b/library/modules/Gui.cpp @@ -380,8 +380,14 @@ DEFINE_GET_FOCUS_STRING_HANDLER(dwarfmode) case df::view_sheet_type::BUILDING: if (game->main_interface.view_sheets.linking_lever) newFocusString = baseFocus + "/LinkingLever"; - else if (auto bld = df::building::find(game->main_interface.view_sheets.viewing_bldid)) - newFocusString += '/' + enum_item_key(bld->getType()); + else if (auto bld = df::building::find(game->main_interface.view_sheets.viewing_bldid)) { + std::string buildingType = enum_item_key(bld->getType()); + newFocusString += '/' + buildingType; + if (buildingType == "Trap") { + df::building_trapst* trap = strict_virtual_cast(bld); + newFocusString += '/' + enum_item_key(trap->trap_type); + } + } break; default: break; From c3b3dda80b9b6de5bc0fde5f07c3c34c09a66597 Mon Sep 17 00:00:00 2001 From: Robob27 Date: Mon, 6 Nov 2023 23:13:50 -0500 Subject: [PATCH 2/6] Feedback --- library/modules/Gui.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/library/modules/Gui.cpp b/library/modules/Gui.cpp index 992913e10..c718bf46e 100644 --- a/library/modules/Gui.cpp +++ b/library/modules/Gui.cpp @@ -381,9 +381,8 @@ DEFINE_GET_FOCUS_STRING_HANDLER(dwarfmode) if (game->main_interface.view_sheets.linking_lever) newFocusString = baseFocus + "/LinkingLever"; else if (auto bld = df::building::find(game->main_interface.view_sheets.viewing_bldid)) { - std::string buildingType = enum_item_key(bld->getType()); - newFocusString += '/' + buildingType; - if (buildingType == "Trap") { + newFocusString += '/' + enum_item_key(bld->getType()); + if (bld->getType() == df::enums::building_type::Trap) { df::building_trapst* trap = strict_virtual_cast(bld); newFocusString += '/' + enum_item_key(trap->trap_type); } From f1ed469ca39536c2505c51be3d168f63eb873ac4 Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Mon, 16 Oct 2023 14:05:33 -0500 Subject: [PATCH 3/6] implement `Buildings::completebuild` function export from DF to be used by `build-now` --- docs/changelog.txt | 3 ++- library/LuaApi.cpp | 1 + library/include/modules/Buildings.h | 5 +++++ library/modules/Buildings.cpp | 12 ++++++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 6f2e0d8f7..e134426ab 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -130,11 +130,12 @@ Template for new versions: - unavailable tools are no longer listed in the tag indices in the online docs ## API +- added ``Buildings::completebuild``, used to link a newly created building into the world - added ``Items::getCapacity``, returns the capacity of an item as a container (reverse-engineered), needed for `combine` ## Lua - added ``GRAY`` color aliases for ``GREY`` colors -- added ``dfhack.items.getCapacity`` to expose the new module API +- added ``dfhack.items.completebuild`` and ``dfhack.items.getCapacity`` to expose new module APIs - ``utils.search_text``: text search routine (generalized from internal ``widgets.FilteredList`` logic) ## Removed diff --git a/library/LuaApi.cpp b/library/LuaApi.cpp index a8e901a6d..93291592d 100644 --- a/library/LuaApi.cpp +++ b/library/LuaApi.cpp @@ -2440,6 +2440,7 @@ static const LuaWrapper::FunctionReg dfhack_buildings_module[] = { WRAPM(Buildings, isPenPasture), WRAPM(Buildings, isPitPond), WRAPM(Buildings, isActive), + WRAPM(Buildings, completebuild), { NULL, NULL } }; diff --git a/library/include/modules/Buildings.h b/library/include/modules/Buildings.h index 22dbb0370..6fbe0d6e1 100644 --- a/library/include/modules/Buildings.h +++ b/library/include/modules/Buildings.h @@ -289,5 +289,10 @@ DFHACK_EXPORT df::building* findPenPitAt(df::coord coord); * Returns the units currently in the given cage */ DFHACK_EXPORT bool getCageOccupants(df::building_cagest *cage, std::vector &units); + +/** + * Finalizes a new building into the world + */ +DFHACK_EXPORT void completebuild(df::building* bld, char in_play); } } diff --git a/library/modules/Buildings.cpp b/library/modules/Buildings.cpp index 78c7b00ed..8418e8c55 100644 --- a/library/modules/Buildings.cpp +++ b/library/modules/Buildings.cpp @@ -1707,3 +1707,15 @@ bool Buildings::getCageOccupants(df::building_cagest *cage, vector &u return true; } + +void Buildings::completebuild(df::building* bld, char in_play) +{ + CHECK_NULL_POINTER(bld); + + auto fp = df::global::buildingst_completebuild; + CHECK_NULL_POINTER(fp); + + typedef std::function FT; + auto f = reinterpret_cast(fp); + (*f)(bld, in_play); +} From c9996d6e4583d8962f4a8b4f5e83fb99ff159a3a Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Thu, 26 Oct 2023 11:48:49 -0500 Subject: [PATCH 4/6] stylistic change recommended to me by a colleague --- library/modules/Buildings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/modules/Buildings.cpp b/library/modules/Buildings.cpp index 8418e8c55..5bb1a55c1 100644 --- a/library/modules/Buildings.cpp +++ b/library/modules/Buildings.cpp @@ -1715,7 +1715,7 @@ void Buildings::completebuild(df::building* bld, char in_play) auto fp = df::global::buildingst_completebuild; CHECK_NULL_POINTER(fp); - typedef std::function FT; + using FT = std::function; auto f = reinterpret_cast(fp); (*f)(bld, in_play); } From 20a7d8e59dd0e5c6c4c584558fd572669011bc5c Mon Sep 17 00:00:00 2001 From: Myk Date: Mon, 6 Nov 2023 22:42:42 -0800 Subject: [PATCH 5/6] move changelog items to current release --- docs/changelog.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index e134426ab..c1c309b37 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -83,12 +83,14 @@ Template for new versions: - ``Units::getReadableName``: now returns the *untranslated* name - ``Burrows::setAssignedUnit``: now properly handles inactive burrows - ``Gui::getMousePos``: now takes an optional ``allow_out_of_bounds`` parameter so coordinates can be returned for mouse positions outside of the game map (i.e. in the blank space around the map) +- ``Buildings::completebuild``: used to link a newly created building into the world ## Lua - ``dfhack.gui.revealInDwarfmodeMap``: gained ``highlight`` parameter to control setting the tile highlight on the zoom target - ``dfhack.maps.getWalkableGroup``: get the walkability group of a tile - ``dfhack.gui.getMousePos``: support new optional ``allow_out_of_bounds`` parameter - ``gui.FRAME_THIN``: a panel frame suitable for floating tooltips +- ``dfhack.buildings.completebuild``: expose new module API ## Removed @@ -130,12 +132,11 @@ Template for new versions: - unavailable tools are no longer listed in the tag indices in the online docs ## API -- added ``Buildings::completebuild``, used to link a newly created building into the world - added ``Items::getCapacity``, returns the capacity of an item as a container (reverse-engineered), needed for `combine` ## Lua - added ``GRAY`` color aliases for ``GREY`` colors -- added ``dfhack.items.completebuild`` and ``dfhack.items.getCapacity`` to expose new module APIs +- added ``dfhack.items.getCapacity`` to expose the new module API - ``utils.search_text``: text search routine (generalized from internal ``widgets.FilteredList`` logic) ## Removed From 8a2416629c56ee1873039dc95cbb99aed20e2bf8 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Tue, 7 Nov 2023 07:40:44 +0000 Subject: [PATCH 6/6] Auto-update submodules scripts: master --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 0ab280651..87e6f1ae3 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 0ab280651ead18b8678ea081f4ab1b0edc044847 +Subproject commit 87e6f1ae310ab81545198542cb07fea7016529c9