Ignore vermin in animals screen search

develop
Anuradha Dissanayake 2013-01-06 18:14:25 +13:00
parent 0fa27d6c34
commit 140f78c8a0
1 changed files with 38 additions and 25 deletions

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