Update embark-profile-name tweak

develop
ymber 2020-04-02 17:52:12 +01:00
parent 06201a4c6a
commit 6b603bc644
No known key found for this signature in database
GPG Key ID: 67C1F45D80C15567
1 changed files with 13 additions and 14 deletions

@ -1,22 +1,21 @@
#include "df/viewscreen_setupdwarfgamest.h" #include "df/viewscreen_setupdwarfgamest.h"
using namespace DFHack;
struct embark_profile_name_hook : df::viewscreen_setupdwarfgamest { struct embark_profile_name_hook : df::viewscreen_setupdwarfgamest {
typedef df::viewscreen_setupdwarfgamest interpose_base; typedef df::viewscreen_setupdwarfgamest interpose_base;
DEFINE_VMETHOD_INTERPOSE(void, feed, (std::set<df::interface_key> *input))
{ DEFINE_VMETHOD_INTERPOSE( void, feed, ( std::set<df::interface_key> *input ) ) {
int ch = -1; int ch = -1;
for (auto it = input->begin(); ch == -1 && it != input->end(); ++it) for( auto it = input->begin(); ch == -1 && it != input->end(); ++it ) {
ch = Screen::keyToChar(*it); ch = Screen::keyToChar( *it );
if (in_save_profile && ch >= 32 && ch <= 126)
{
profile_name.push_back((char)ch);
} }
else // Intercept all printable characters except space.
{ // If space is intercepted the shift-space abort key will not work.
if (input->count(df::interface_key::LEAVESCREEN)) if( in_save_profile && ch >= 33 && ch <= 126 ) {
input->insert(df::interface_key::SETUPGAME_SAVE_PROFILE_ABORT); profile_name.push_back( ( char )ch );
INTERPOSE_NEXT(feed)(input); } else {
INTERPOSE_NEXT( feed )( input );
} }
} }
}; };
IMPLEMENT_VMETHOD_INTERPOSE(embark_profile_name_hook, feed);
IMPLEMENT_VMETHOD_INTERPOSE( embark_profile_name_hook, feed );