|
|
@ -25,6 +25,7 @@
|
|
|
|
#include "df/viewscreen_buildinglistst.h"
|
|
|
|
#include "df/viewscreen_buildinglistst.h"
|
|
|
|
#include "df/viewscreen_dwarfmodest.h"
|
|
|
|
#include "df/viewscreen_dwarfmodest.h"
|
|
|
|
#include "df/viewscreen_joblistst.h"
|
|
|
|
#include "df/viewscreen_joblistst.h"
|
|
|
|
|
|
|
|
#include "df/viewscreen_kitchenprefst.h"
|
|
|
|
#include "df/viewscreen_layer_militaryst.h"
|
|
|
|
#include "df/viewscreen_layer_militaryst.h"
|
|
|
|
#include "df/viewscreen_layer_noblelistst.h"
|
|
|
|
#include "df/viewscreen_layer_noblelistst.h"
|
|
|
|
#include "df/viewscreen_layer_stockpilest.h"
|
|
|
|
#include "df/viewscreen_layer_stockpilest.h"
|
|
|
@ -2118,6 +2119,128 @@ IMPLEMENT_HOOKS(df::viewscreen_locationsst, location_assign_occupation_search);
|
|
|
|
// END: Location occupation assignment search
|
|
|
|
// END: Location occupation assignment search
|
|
|
|
//
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// START: Kitchen preferences search
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef search_multicolumn_modifiable<df::viewscreen_kitchenprefst, std::string*> kitchen_pref_search_base;
|
|
|
|
|
|
|
|
class kitchen_pref_search : public kitchen_pref_search_base
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
string get_element_description(string *s) const override
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return s ? *s : "";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void render() const override
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
print_search_option(2, gps->dimy - 2);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int32_t *get_viewscreen_cursor() override
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return &viewscreen->cursor;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vector<string*> *get_primary_list() override
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return &viewscreen->item_str[viewscreen->page];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool should_check_input(set<df::interface_key> *input) override
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (input->count(interface_key::CHANGETAB) || input->count(interface_key::SEC_CHANGETAB))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Restore original list
|
|
|
|
|
|
|
|
clear_search();
|
|
|
|
|
|
|
|
reset_all();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define KITCHEN_VECTORS \
|
|
|
|
|
|
|
|
KVEC(df::item_type, item_type); \
|
|
|
|
|
|
|
|
KVEC(int16_t, item_subtype); \
|
|
|
|
|
|
|
|
KVEC(int16_t, mat_type); \
|
|
|
|
|
|
|
|
KVEC(int32_t, mat_index); \
|
|
|
|
|
|
|
|
KVEC(int32_t, count); \
|
|
|
|
|
|
|
|
KVEC(uint8_t, forbidden); \
|
|
|
|
|
|
|
|
KVEC(uint8_t, possible)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
virtual void do_post_init()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
kitchen_pref_search_base::do_post_init();
|
|
|
|
|
|
|
|
#define KVEC(type, name) name = &viewscreen->name[viewscreen->page]
|
|
|
|
|
|
|
|
KITCHEN_VECTORS;
|
|
|
|
|
|
|
|
#undef KVEC
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void save_secondary_values()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
#define KVEC(type, name) name##_s = *name
|
|
|
|
|
|
|
|
KITCHEN_VECTORS;
|
|
|
|
|
|
|
|
#undef KVEC
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void reset_secondary_viewscreen_vectors()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
#define KVEC(type, name) name = nullptr
|
|
|
|
|
|
|
|
KITCHEN_VECTORS;
|
|
|
|
|
|
|
|
#undef KVEC
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
virtual void update_saved_secondary_list_item(size_t i, size_t j)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
#define KVEC(type, name) name##_s[i] = (*name)[j];
|
|
|
|
|
|
|
|
KITCHEN_VECTORS;
|
|
|
|
|
|
|
|
#undef KVEC
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void clear_secondary_viewscreen_vectors()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
#define KVEC(type, name) name->clear()
|
|
|
|
|
|
|
|
KITCHEN_VECTORS;
|
|
|
|
|
|
|
|
#undef KVEC
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void add_to_filtered_secondary_lists(size_t i)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
#define KVEC(type, name) name->push_back(name##_s[i])
|
|
|
|
|
|
|
|
KITCHEN_VECTORS;
|
|
|
|
|
|
|
|
#undef KVEC
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void clear_secondary_saved_lists()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
#define KVEC(type, name) name##_s.clear()
|
|
|
|
|
|
|
|
KITCHEN_VECTORS;
|
|
|
|
|
|
|
|
#undef KVEC
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void restore_secondary_values()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
#define KVEC(type, name) *name = name##_s
|
|
|
|
|
|
|
|
KITCHEN_VECTORS;
|
|
|
|
|
|
|
|
#undef KVEC
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define KVEC(type, name) vector<type> *name, name##_s
|
|
|
|
|
|
|
|
KITCHEN_VECTORS;
|
|
|
|
|
|
|
|
#undef KVEC
|
|
|
|
|
|
|
|
#undef KITCHEN_VECTORS
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_HOOKS(df::viewscreen_kitchenprefst, kitchen_pref_search);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// END: Kitchen preferences search
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// START: Stone status screen search
|
|
|
|
// START: Stone status screen search
|
|
|
|
//
|
|
|
|
//
|
|
|
@ -2226,6 +2349,7 @@ IMPLEMENT_HOOKS(df::viewscreen_layer_stone_restrictionst, stone_search);
|
|
|
|
HOOK_ACTION(room_assign_search_hook) \
|
|
|
|
HOOK_ACTION(room_assign_search_hook) \
|
|
|
|
HOOK_ACTION(noble_suggest_search_hook) \
|
|
|
|
HOOK_ACTION(noble_suggest_search_hook) \
|
|
|
|
HOOK_ACTION(location_assign_occupation_search_hook) \
|
|
|
|
HOOK_ACTION(location_assign_occupation_search_hook) \
|
|
|
|
|
|
|
|
HOOK_ACTION(kitchen_pref_search_hook) \
|
|
|
|
HOOK_ACTION(stone_search_hook) \
|
|
|
|
HOOK_ACTION(stone_search_hook) \
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|