#include "df/viewscreen_setupdwarfgamest.h" using namespace DFHack; struct embark_profile_name_hook : df::viewscreen_setupdwarfgamest { typedef df::viewscreen_setupdwarfgamest interpose_base; DEFINE_VMETHOD_INTERPOSE(void, feed, (std::set *input)) { int ch = -1; for (auto it = input->begin(); ch == -1 && it != input->end(); ++it) ch = Screen::keyToChar(*it); if (in_save_profile && ch >= 32 && ch <= 126) { profile_name.push_back((char)ch); } else { if (input->count(df::interface_key::LEAVESCREEN)) input->insert(df::interface_key::SETUPGAME_SAVE_PROFILE_ABORT); INTERPOSE_NEXT(feed)(input); } } }; IMPLEMENT_VMETHOD_INTERPOSE(embark_profile_name_hook, feed);