New tweak: kitchen-prefs-all
Options to toggle brew/cook for all listed items Also fixed kitchen lua docs and moved kitchen search optiondevelop
parent
d502dce2db
commit
759ba5c420
@ -0,0 +1,69 @@
|
||||
#include "modules/Kitchen.h"
|
||||
|
||||
#include "df/interface_key.h"
|
||||
#include "df/layer_object_listst.h"
|
||||
#include "df/viewscreen_kitchenprefst.h"
|
||||
|
||||
using namespace DFHack;
|
||||
|
||||
struct kitchen_prefs_all_hook : df::viewscreen_kitchenprefst {
|
||||
typedef df::viewscreen_kitchenprefst interpose_base;
|
||||
|
||||
DEFINE_VMETHOD_INTERPOSE(void, feed, (std::set<df::interface_key> *input))
|
||||
{
|
||||
df::kitchen_pref_flag flag;
|
||||
df::kitchen_exc_type exc_type;
|
||||
if (input->count(interface_key::CUSTOM_SHIFT_C))
|
||||
{
|
||||
flag.bits.Cook = true;
|
||||
exc_type = df::kitchen_exc_type::Cook;
|
||||
}
|
||||
else if (input->count(interface_key::CUSTOM_SHIFT_B))
|
||||
{
|
||||
flag.bits.Brew = true;
|
||||
exc_type = df::kitchen_exc_type::Brew;
|
||||
}
|
||||
|
||||
if (flag.whole && cursor < forbidden[page].size())
|
||||
{
|
||||
bool was_forbidden = forbidden[page][cursor].whole & flag.whole;
|
||||
for (size_t i = 0; i < forbidden[page].size(); i++)
|
||||
{
|
||||
if (possible[page][i].whole & flag.whole)
|
||||
{
|
||||
if (was_forbidden)
|
||||
{
|
||||
// unset flag
|
||||
forbidden[page][i].whole &= ~flag.whole;
|
||||
Kitchen::removeExclusion(exc_type,
|
||||
item_type[page][i], item_subtype[page][i],
|
||||
mat_type[page][i], mat_index[page][i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
// set flag
|
||||
forbidden[page][i].whole |= flag.whole;
|
||||
Kitchen::addExclusion(exc_type,
|
||||
item_type[page][i], item_subtype[page][i],
|
||||
mat_type[page][i], mat_index[page][i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
INTERPOSE_NEXT(feed)(input);
|
||||
}
|
||||
|
||||
DEFINE_VMETHOD_INTERPOSE(void, render, ())
|
||||
{
|
||||
INTERPOSE_NEXT(render)();
|
||||
int x = 2, y = gps->dimy - 2;
|
||||
OutputHotkeyString(x, y, "Cook all", interface_key::CUSTOM_SHIFT_C,
|
||||
false, 0, COLOR_WHITE, COLOR_LIGHTRED);
|
||||
x = 20;
|
||||
OutputHotkeyString(x, y, "Brew all", interface_key::CUSTOM_SHIFT_B,
|
||||
false, 0, COLOR_WHITE, COLOR_LIGHTRED);
|
||||
}
|
||||
};
|
||||
|
||||
IMPLEMENT_VMETHOD_INTERPOSE(kitchen_prefs_all_hook, render);
|
||||
IMPLEMENT_VMETHOD_INTERPOSE(kitchen_prefs_all_hook, feed);
|
Loading…
Reference in New Issue