Merge branch 'develop' into remove-old-trackstop

develop
Myk 2023-11-06 23:41:00 -08:00 committed by GitHub
commit 3c5bc26513
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 27 additions and 2 deletions

@ -83,12 +83,14 @@ Template for new versions:
- ``Units::getReadableName``: now returns the *untranslated* name - ``Units::getReadableName``: now returns the *untranslated* name
- ``Burrows::setAssignedUnit``: now properly handles inactive burrows - ``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::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 ## Lua
- ``dfhack.gui.revealInDwarfmodeMap``: gained ``highlight`` parameter to control setting the tile highlight on the zoom target - ``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.maps.getWalkableGroup``: get the walkability group of a tile
- ``dfhack.gui.getMousePos``: support new optional ``allow_out_of_bounds`` parameter - ``dfhack.gui.getMousePos``: support new optional ``allow_out_of_bounds`` parameter
- ``gui.FRAME_THIN``: a panel frame suitable for floating tooltips - ``gui.FRAME_THIN``: a panel frame suitable for floating tooltips
- ``dfhack.buildings.completebuild``: expose new module API
## Removed ## Removed

@ -2440,6 +2440,7 @@ static const LuaWrapper::FunctionReg dfhack_buildings_module[] = {
WRAPM(Buildings, isPenPasture), WRAPM(Buildings, isPenPasture),
WRAPM(Buildings, isPitPond), WRAPM(Buildings, isPitPond),
WRAPM(Buildings, isActive), WRAPM(Buildings, isActive),
WRAPM(Buildings, completebuild),
{ NULL, NULL } { NULL, NULL }
}; };

@ -289,5 +289,10 @@ DFHACK_EXPORT df::building* findPenPitAt(df::coord coord);
* Returns the units currently in the given cage * Returns the units currently in the given cage
*/ */
DFHACK_EXPORT bool getCageOccupants(df::building_cagest *cage, std::vector<df::unit*> &units); DFHACK_EXPORT bool getCageOccupants(df::building_cagest *cage, std::vector<df::unit*> &units);
/**
* Finalizes a new building into the world
*/
DFHACK_EXPORT void completebuild(df::building* bld, char in_play);
} }
} }

@ -1707,3 +1707,15 @@ bool Buildings::getCageOccupants(df::building_cagest *cage, vector<df::unit*> &u
return true; 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<void(df::building* bld, char)>;
auto f = reinterpret_cast<FT*>(fp);
(*f)(bld, in_play);
}

@ -380,8 +380,13 @@ DEFINE_GET_FOCUS_STRING_HANDLER(dwarfmode)
case df::view_sheet_type::BUILDING: case df::view_sheet_type::BUILDING:
if (game->main_interface.view_sheets.linking_lever) if (game->main_interface.view_sheets.linking_lever)
newFocusString = baseFocus + "/LinkingLever"; newFocusString = baseFocus + "/LinkingLever";
else if (auto bld = df::building::find(game->main_interface.view_sheets.viewing_bldid)) else if (auto bld = df::building::find(game->main_interface.view_sheets.viewing_bldid)) {
newFocusString += '/' + enum_item_key(bld->getType()); newFocusString += '/' + enum_item_key(bld->getType());
if (bld->getType() == df::enums::building_type::Trap) {
df::building_trapst* trap = strict_virtual_cast<df::building_trapst>(bld);
newFocusString += '/' + enum_item_key(trap->trap_type);
}
}
break; break;
default: default:
break; break;

@ -1 +1 @@
Subproject commit 0ab280651ead18b8678ea081f4ab1b0edc044847 Subproject commit 87e6f1ae310ab81545198542cb07fea7016529c9