diff --git a/docs/changelog.txt b/docs/changelog.txt index 2dc0bc520..c1c309b37 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -83,13 +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) -- Gui focus strings will now include the trap type for traps (e.g. dwarfmode/ViewSheets/BUILDING/Trap/StoneFallTrap) +- ``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 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..5bb1a55c1 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); + + using FT = std::function; + auto f = reinterpret_cast(fp); + (*f)(bld, in_play); +}