summaryrefslogtreecommitdiff
path: root/library/RemoteTools.cpp
diff options
context:
space:
mode:
authorAlexander Gavrilov2012-03-18 15:35:38 +0400
committerAlexander Gavrilov2012-03-18 15:35:38 +0400
commitd4626f9751be95e392cf1a0862648bae1e2d0e43 (patch)
tree91a8f0bc890e97b5dbeb0c60fd56dbece854949f /library/RemoteTools.cpp
parente33414fa6923d0eb917046dcc24f55135622d80b (diff)
downloaddfhack-d4626f9751be95e392cf1a0862648bae1e2d0e43.tar.gz
dfhack-d4626f9751be95e392cf1a0862648bae1e2d0e43.tar.bz2
dfhack-d4626f9751be95e392cf1a0862648bae1e2d0e43.tar.xz
Add unit professions and filtering on status.
Diffstat (limited to 'library/RemoteTools.cpp')
-rw-r--r--library/RemoteTools.cpp28
1 files changed, 23 insertions, 5 deletions
diff --git a/library/RemoteTools.cpp b/library/RemoteTools.cpp
index 9323c936..68f29e4f 100644
--- a/library/RemoteTools.cpp
+++ b/library/RemoteTools.cpp
@@ -273,6 +273,7 @@ void DFHack::describeUnit(BasicUnitInfo *info, df::unit *unit,
info->set_civ_id(unit->civ_id);
if (unit->hist_figure_id >= 0)
info->set_histfig_id(unit->hist_figure_id);
+
if (unit->counters.death_id >= 0)
{
info->set_death_id(unit->counters.death_id);
@@ -280,10 +281,18 @@ void DFHack::describeUnit(BasicUnitInfo *info, df::unit *unit,
info->set_death_flags(death->flags.whole);
}
- if (unit->military.squad_index >= 0)
+ if (mask && mask->profession())
{
- info->set_squad_id(unit->military.squad_index);
- info->set_squad_position(unit->military.squad_position);
+ if (unit->profession >= 0)
+ info->set_profession(unit->profession);
+ if (!unit->custom_profession.empty())
+ info->set_custom_profession(unit->custom_profession);
+
+ if (unit->military.squad_index >= 0)
+ {
+ info->set_squad_id(unit->military.squad_index);
+ info->set_squad_position(unit->military.squad_position);
+ }
}
if (mask && mask->labors())
@@ -429,6 +438,8 @@ static command_result ListEnums(color_ostream &stream,
describe_bitfield<df::death_info::T_flags>(out->mutable_death_info_flags());
+ ENUM(profession);
+
#undef ENUM
#undef BITFIELD
}
@@ -505,7 +516,8 @@ static command_result ListUnits(color_ostream &stream,
describeUnit(out->add_value(), unit, mask);
}
}
- else
+
+ if (in->scan_all())
{
auto &vec = df::unit::get_vector();
@@ -515,7 +527,13 @@ static command_result ListUnits(color_ostream &stream,
if (in->has_race() && unit->race != in->race())
continue;
- if (in->civ_id() && unit->civ_id != in->civ_id())
+ if (in->has_civ_id() && unit->civ_id != in->civ_id())
+ continue;
+ if (in->has_dead() && Units::isDead(unit) != in->dead())
+ continue;
+ if (in->has_alive() && Units::isAlive(unit) != in->alive())
+ continue;
+ if (in->has_sane() && Units::isSane(unit) != in->sane())
continue;
describeUnit(out->add_value(), unit, mask);