diff options
author | 2019-07-21 12:44:58 -0400 | |
---|---|---|
committer | 2019-07-21 15:22:19 -0400 | |
commit | d580d86073c1d68f9abef809ff25a25487270cb5 (patch) | |
tree | a601439d207275d3554e0c3a7cd620b8ee4c3465 | |
parent | 5733eb5488409aaf9967b39c7c23468679496d9e (diff) |
Added ui_input_manager::[set_]presses_enabled() and exposed to LUA
-rw-r--r-- | src/emu/uiinput.cpp | 17 | ||||
-rw-r--r-- | src/emu/uiinput.h | 5 | ||||
-rw-r--r-- | src/frontend/mame/luaengine.cpp | 4 |
3 files changed, 21 insertions, 5 deletions
diff --git a/src/emu/uiinput.cpp b/src/emu/uiinput.cpp index 78cc662022a..e6b0920e926 100644 --- a/src/emu/uiinput.cpp +++ b/src/emu/uiinput.cpp @@ -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 diff --git a/src/emu/uiinput.h b/src/emu/uiinput.h index 2a7aeeff084..1504133b13d 100644 --- a/src/emu/uiinput.h +++ b/src/emu/uiinput.h @@ -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]; diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp index 9e3af7de31a..a04cc35cdd5 100644 --- a/src/frontend/mame/luaengine.cpp +++ b/src/frontend/mame/luaengine.cpp @@ -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 |