@ -13,6 +13,7 @@
# include "df/viewscreen_titlest.h"
# include "df/viewscreen_titlest.h"
# include "df/viewscreen_update_regionst.h"
# include "df/viewscreen_update_regionst.h"
# include "df/viewscreen_worldst.h"
# include "df/viewscreen_worldst.h"
# include "df/world.h"
# include "Debug.h"
# include "Debug.h"
# include "LuaTools.h"
# include "LuaTools.h"
@ -27,6 +28,8 @@ using namespace DFHack;
DFHACK_PLUGIN ( " overlay " ) ;
DFHACK_PLUGIN ( " overlay " ) ;
DFHACK_PLUGIN_IS_ENABLED ( is_enabled ) ;
DFHACK_PLUGIN_IS_ENABLED ( is_enabled ) ;
REQUIRE_GLOBAL ( world ) ;
namespace DFHack {
namespace DFHack {
DBG_DECLARE ( overlay , control , DebugCategory : : LINFO ) ;
DBG_DECLARE ( overlay , control , DebugCategory : : LINFO ) ;
DBG_DECLARE ( overlay , event , DebugCategory : : LINFO ) ;
DBG_DECLARE ( overlay , event , DebugCategory : : LINFO ) ;
@ -67,13 +70,15 @@ struct viewscreen_overlay : T {
}
}
DEFINE_VMETHOD_INTERPOSE ( void , feed , ( std : : set < df : : interface_key > * input ) ) {
DEFINE_VMETHOD_INTERPOSE ( void , feed , ( std : : set < df : : interface_key > * input ) ) {
bool input_is_handled = false ;
bool input_is_handled = false ;
call_overlay_lua ( NULL , " feed_viewscreen_widgets " , 2 , 1 ,
// don't send input to the overlays if there is a modal dialog up
[ & ] ( lua_State * L ) {
if ( ! world - > status . popups . size ( ) )
Lua : : Push ( L , T : : _identity . getName ( ) ) ;
call_overlay_lua ( NULL , " feed_viewscreen_widgets " , 2 , 1 ,
Lua : : PushInterfaceKeys ( L , * input ) ;
[ & ] ( lua_State * L ) {
} , [ & ] ( lua_State * L ) {
Lua : : Push ( L , T : : _identity . getName ( ) ) ;
input_is_handled = lua_toboolean ( L , - 1 ) ;
Lua : : PushInterfaceKeys ( L , * input ) ;
} ) ;
} , [ & ] ( lua_State * L ) {
input_is_handled = lua_toboolean ( L , - 1 ) ;
} ) ;
if ( ! input_is_handled )
if ( ! input_is_handled )
INTERPOSE_NEXT ( feed ) ( input ) ;
INTERPOSE_NEXT ( feed ) ( input ) ;
}
}