Added ui_input_manager::[set_]presses_enabled() and exposed to LUA

This commit is contained in:
npwoods 2019-07-21 12:44:58 -04:00
parent 5733eb5488
commit d580d86073
3 changed files with 21 additions and 5 deletions

View File

@ -34,6 +34,7 @@ enum
ui_input_manager::ui_input_manager(running_machine &machine)
: m_machine(machine)
, m_presses_enabled(true)
, m_current_mouse_target(nullptr)
, m_current_mouse_down(false)
, m_current_mouse_field(nullptr)
@ -62,12 +63,20 @@ ui_input_manager::ui_input_manager(running_machine &machine)
void ui_input_manager::frame_update()
{
/* update the state of all the UI keys */
// update the state of all the UI keys
for (ioport_type code = ioport_type(IPT_UI_FIRST + 1); code < IPT_UI_LAST; ++code)
{
bool pressed = machine().ioport().type_pressed(code);
if (!pressed || m_seqpressed[code] != SEQ_PRESSED_RESET)
m_seqpressed[code] = pressed;
if (m_presses_enabled)
{
bool pressed = machine().ioport().type_pressed(code);
if (!pressed || m_seqpressed[code] != SEQ_PRESSED_RESET)
m_seqpressed[code] = pressed;
}
else
{
// UI key presses are disabled
m_seqpressed[code] = false;
}
}
// perform mouse hit testing

View File

@ -78,6 +78,10 @@ public:
/* return true if a key down for the given user interface sequence is detected */
bool pressed(int code);
// enable/disable UI key presses
bool presses_enabled() const { return m_presses_enabled; }
void set_presses_enabled(bool enabled) { m_presses_enabled = enabled; }
/* return true if a key down for the given user interface sequence is detected, or if
autorepeat at the given speed is triggered */
bool pressed_repeat(int code, int speed);
@ -104,6 +108,7 @@ private:
running_machine & m_machine; // reference to our machine
/* pressed states; retrieved with ui_input_pressed() */
bool m_presses_enabled;
osd_ticks_t m_next_repeat[IPT_COUNT];
u8 m_seqpressed[IPT_COUNT];

View File

@ -1963,6 +1963,7 @@ void lua_engine::initialize()
*
* uiinput:find_mouse() - return x, y, button state, ui render target
* uiinput:pressed(key) - get pressed state for ui key
* uiinput.presses_enabled - enable/disable ui key presses
*/
sol().registry().new_usertype<ui_input_manager>("uiinput", "new", sol::no_constructor,
@ -1972,7 +1973,8 @@ void lua_engine::initialize()
render_target *rt = ui.find_mouse(&x, &y, &button);
return std::tuple<int32_t, int32_t, bool, render_target *>(x, y, button, rt);
},
"pressed", &ui_input_manager::pressed);
"pressed", &ui_input_manager::pressed,
"presses_enabled", sol::property(&ui_input_manager::presses_enabled, &ui_input_manager::set_presses_enabled));
/* render_target library