|
|
|
@ -26,7 +26,7 @@
|
|
|
|
|
#include "modules/Gui.h"
|
|
|
|
|
#include "df/unit.h"
|
|
|
|
|
#include "df/misc_trait_type.h"
|
|
|
|
|
#include "df/unit_misc_trait.h"
|
|
|
|
|
#include "df/unit_misc_trait.h"
|
|
|
|
|
|
|
|
|
|
using std::set;
|
|
|
|
|
using std::vector;
|
|
|
|
@ -291,6 +291,11 @@ protected:
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
virtual bool is_valid_for_search(size_t index)
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// The actual sort
|
|
|
|
|
virtual void do_search()
|
|
|
|
|
{
|
|
|
|
@ -311,6 +316,9 @@ protected:
|
|
|
|
|
string search_string_l = toLower(search_string);
|
|
|
|
|
for (size_t i = 0; i < saved_list1.size(); i++ )
|
|
|
|
|
{
|
|
|
|
|
if (!is_valid_for_search(i))
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
T element = saved_list1[i];
|
|
|
|
|
string desc = toLower(get_element_description(element));
|
|
|
|
|
if (desc.find(search_string_l) != string::npos)
|
|
|
|
@ -697,6 +705,11 @@ private:
|
|
|
|
|
return viewscreen->mode == T_mode::List;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool is_valid_for_search(size_t i)
|
|
|
|
|
{
|
|
|
|
|
return is_vermin_s[i] == 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void save_secondary_values()
|
|
|
|
|
{
|
|
|
|
|
is_vermin_s = *is_vermin;
|
|
|
|
@ -887,24 +900,24 @@ private:
|
|
|
|
|
|
|
|
|
|
static string get_non_work_description(df::unit *unit)
|
|
|
|
|
{
|
|
|
|
|
for (auto p = unit->status.misc_traits.begin(); p < unit->status.misc_traits.end(); p++)
|
|
|
|
|
{
|
|
|
|
|
if ((*p)->id == misc_trait_type::Migrant || (*p)->id == misc_trait_type::OnBreak)
|
|
|
|
|
{
|
|
|
|
|
int i = (*p)->value;
|
|
|
|
|
return ".on break";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (unit->profession == profession::BABY ||
|
|
|
|
|
unit->profession == profession::CHILD ||
|
|
|
|
|
unit->profession == profession::DRUNK)
|
|
|
|
|
{
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ENUM_ATTR(profession, military, unit->profession))
|
|
|
|
|
return ".military";
|
|
|
|
|
for (auto p = unit->status.misc_traits.begin(); p < unit->status.misc_traits.end(); p++)
|
|
|
|
|
{
|
|
|
|
|
if ((*p)->id == misc_trait_type::Migrant || (*p)->id == misc_trait_type::OnBreak)
|
|
|
|
|
{
|
|
|
|
|
int i = (*p)->value;
|
|
|
|
|
return ".on break";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (unit->profession == profession::BABY ||
|
|
|
|
|
unit->profession == profession::CHILD ||
|
|
|
|
|
unit->profession == profession::DRUNK)
|
|
|
|
|
{
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ENUM_ATTR(profession, military, unit->profession))
|
|
|
|
|
return ".military";
|
|
|
|
|
|
|
|
|
|
return ".idle.no job";
|
|
|
|
|
}
|
|
|
|
@ -1490,12 +1503,12 @@ public:
|
|
|
|
|
|
|
|
|
|
void render() const
|
|
|
|
|
{
|
|
|
|
|
auto dims = Gui::getDwarfmodeViewDims();
|
|
|
|
|
int left_margin = dims.menu_x1 + 1;
|
|
|
|
|
int x = left_margin;
|
|
|
|
|
int y = 23;
|
|
|
|
|
|
|
|
|
|
print_search_option(x, y);
|
|
|
|
|
auto dims = Gui::getDwarfmodeViewDims();
|
|
|
|
|
int left_margin = dims.menu_x1 + 1;
|
|
|
|
|
int x = left_margin;
|
|
|
|
|
int y = 23;
|
|
|
|
|
|
|
|
|
|
print_search_option(x, y);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
vector<df::unit *> *get_primary_list()
|
|
|
|
|