mirror of
https://github.com/holub/mame
synced 2025-07-05 01:48:29 +03:00
Merge pull request #5370 from npwoods/lua_ui_input_manager_pressed_enabled
Added ui_input_manager::[set_]presses_enabled() and exposed to LUA
This commit is contained in:
commit
ffa4f706d9
@ -34,6 +34,7 @@ enum
|
|||||||
|
|
||||||
ui_input_manager::ui_input_manager(running_machine &machine)
|
ui_input_manager::ui_input_manager(running_machine &machine)
|
||||||
: m_machine(machine)
|
: m_machine(machine)
|
||||||
|
, m_presses_enabled(true)
|
||||||
, m_current_mouse_target(nullptr)
|
, m_current_mouse_target(nullptr)
|
||||||
, m_current_mouse_down(false)
|
, m_current_mouse_down(false)
|
||||||
, m_current_mouse_field(nullptr)
|
, m_current_mouse_field(nullptr)
|
||||||
@ -62,13 +63,21 @@ ui_input_manager::ui_input_manager(running_machine &machine)
|
|||||||
|
|
||||||
void ui_input_manager::frame_update()
|
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)
|
for (ioport_type code = ioport_type(IPT_UI_FIRST + 1); code < IPT_UI_LAST; ++code)
|
||||||
|
{
|
||||||
|
if (m_presses_enabled)
|
||||||
{
|
{
|
||||||
bool pressed = machine().ioport().type_pressed(code);
|
bool pressed = machine().ioport().type_pressed(code);
|
||||||
if (!pressed || m_seqpressed[code] != SEQ_PRESSED_RESET)
|
if (!pressed || m_seqpressed[code] != SEQ_PRESSED_RESET)
|
||||||
m_seqpressed[code] = pressed;
|
m_seqpressed[code] = pressed;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// UI key presses are disabled
|
||||||
|
m_seqpressed[code] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// perform mouse hit testing
|
// perform mouse hit testing
|
||||||
ioport_field *mouse_field = m_current_mouse_down ? find_mouse_field() : nullptr;
|
ioport_field *mouse_field = m_current_mouse_down ? find_mouse_field() : nullptr;
|
||||||
|
@ -78,6 +78,10 @@ public:
|
|||||||
/* return true if a key down for the given user interface sequence is detected */
|
/* return true if a key down for the given user interface sequence is detected */
|
||||||
bool pressed(int code);
|
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
|
/* return true if a key down for the given user interface sequence is detected, or if
|
||||||
autorepeat at the given speed is triggered */
|
autorepeat at the given speed is triggered */
|
||||||
bool pressed_repeat(int code, int speed);
|
bool pressed_repeat(int code, int speed);
|
||||||
@ -104,6 +108,7 @@ private:
|
|||||||
running_machine & m_machine; // reference to our machine
|
running_machine & m_machine; // reference to our machine
|
||||||
|
|
||||||
/* pressed states; retrieved with ui_input_pressed() */
|
/* pressed states; retrieved with ui_input_pressed() */
|
||||||
|
bool m_presses_enabled;
|
||||||
osd_ticks_t m_next_repeat[IPT_COUNT];
|
osd_ticks_t m_next_repeat[IPT_COUNT];
|
||||||
u8 m_seqpressed[IPT_COUNT];
|
u8 m_seqpressed[IPT_COUNT];
|
||||||
|
|
||||||
|
@ -2004,6 +2004,7 @@ void lua_engine::initialize()
|
|||||||
*
|
*
|
||||||
* uiinput:find_mouse() - return x, y, button state, ui render target
|
* uiinput:find_mouse() - return x, y, button state, ui render target
|
||||||
* uiinput:pressed(key) - get pressed state for ui key
|
* 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,
|
sol().registry().new_usertype<ui_input_manager>("uiinput", "new", sol::no_constructor,
|
||||||
@ -2013,7 +2014,8 @@ void lua_engine::initialize()
|
|||||||
render_target *rt = ui.find_mouse(&x, &y, &button);
|
render_target *rt = ui.find_mouse(&x, &y, &button);
|
||||||
return std::tuple<int32_t, int32_t, bool, render_target *>(x, y, button, rt);
|
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
|
/* render_target library
|
||||||
|
Loading…
Reference in New Issue
Block a user