|
|
|
@ -29,7 +29,7 @@ DFhackCExport command_result plugin_init ( Core * c, std::vector <PluginCommand>
|
|
|
|
|
{
|
|
|
|
|
commands.push_back(PluginCommand(
|
|
|
|
|
"follow", "Follow the selected unit until camera control is released",
|
|
|
|
|
follow, false,
|
|
|
|
|
follow, view_unit_hotkey,
|
|
|
|
|
" Select a unit and run this plugin to make the camera follow it. Moving the camera yourself deactivates the plugin.\n"
|
|
|
|
|
));
|
|
|
|
|
followedUnit = 0;
|
|
|
|
@ -126,11 +126,11 @@ DFhackCExport command_result plugin_onupdate ( Core * c )
|
|
|
|
|
|
|
|
|
|
command_result follow (Core * c, std::vector <std::string> & parameters)
|
|
|
|
|
{
|
|
|
|
|
// HOTKEY COMMAND: CORE ALREADY SUSPENDED
|
|
|
|
|
|
|
|
|
|
if (!parameters.empty())
|
|
|
|
|
return CR_WRONG_USAGE;
|
|
|
|
|
|
|
|
|
|
CoreSuspender suspend(c);
|
|
|
|
|
|
|
|
|
|
if (followedUnit)
|
|
|
|
|
{
|
|
|
|
|
c->con.print("No longer following previously selected unit.\n");
|
|
|
|
@ -139,15 +139,11 @@ command_result follow (Core * c, std::vector <std::string> & parameters)
|
|
|
|
|
followedUnit = getSelectedUnit(c);
|
|
|
|
|
if (followedUnit)
|
|
|
|
|
{
|
|
|
|
|
c->con.print("Unpause to begin following ");
|
|
|
|
|
c->con.print(df::global::world->raws.creatures.all[followedUnit->race]->name[0].c_str());
|
|
|
|
|
if (followedUnit->name.has_name)
|
|
|
|
|
{
|
|
|
|
|
c->con.print(" %s", followedUnit->name.first_name.c_str());
|
|
|
|
|
}
|
|
|
|
|
c->con.print(". Simply manually move the view to break the following.\n");
|
|
|
|
|
prevX=prevY=prevZ = -1;
|
|
|
|
|
prevMenuWidth = 0;
|
|
|
|
|
std::ostringstream ss;
|
|
|
|
|
ss << "Unpause to begin following " << df::global::world->raws.creatures.all[followedUnit->race]->name[0];
|
|
|
|
|
if (followedUnit->name.has_name) ss << " " << followedUnit->name.first_name;
|
|
|
|
|
ss << ". Simply manually move the view to break the following.\n";
|
|
|
|
|
c->con.print(ss.str().c_str());
|
|
|
|
|
}
|
|
|
|
|
else followedUnit = 0;
|
|
|
|
|
return CR_OK;
|
|
|
|
|