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 "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()