diff options
| author | 2026-05-01 04:09:54 +1000 | |
|---|---|---|
| committer | 2026-05-01 04:09:54 +1000 | |
| commit | 91faf17b0d95d0cfab2f7d6aabf451900afee69b (patch) | |
| tree | 31919691cea8ec141b001d92b06288080d019441 /src/frontend | |
| parent | 1e5263494af307699e72b463ce8ee180684c1c5c (diff) | |
-dynax/ddenlovr.cpp: Added proper inputs for Royal Selection.
-frontend/mame/luaengine.cpp: Removed some deprecated stuff.
-itech/itech32.cpp: BloodStorm doesn't have a space in most uses.
-shared/mahjong.cpp: Exposed base mahjong matrix panel class to simplify
creating devices that are essentially mahjong panels with weird labels.
-ui.ui.cpp, ui/menu.cpp: Started untangling some stuff.
Diffstat (limited to 'src/frontend')
| -rw-r--r-- | src/frontend/mame/luaengine.cpp | 10 | ||||
| -rw-r--r-- | src/frontend/mame/ui/menu.cpp | 12 | ||||
| -rw-r--r-- | src/frontend/mame/ui/menu.h | 7 | ||||
| -rw-r--r-- | src/frontend/mame/ui/ui.cpp | 17 | ||||
| -rw-r--r-- | src/frontend/mame/ui/ui.h | 4 |
5 files changed, 20 insertions, 30 deletions
diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp index 3e3e848ecc2..dd54a3f56b7 100644 --- a/src/frontend/mame/luaengine.cpp +++ b/src/frontend/mame/luaengine.cpp @@ -811,11 +811,6 @@ void lua_engine::initialize() * emu.keypost(keys) - post keys to natural keyboard * * emu.register_prestart(callback) - register callback before reset - * emu.register_start(callback) - register callback after reset - * emu.register_stop(callback) - register callback after stopping - * emu.register_pause(callback) - register callback at pause - * emu.register_resume(callback) - register callback at resume - * emu.register_frame(callback) - register callback at end of frame * emu.register_frame_done(callback) - register callback after frame is drawn to screen (for overlays) * emu.register_sound_update(callback) - register callback after sound update has generated new samples * emu.register_periodic(callback) - register periodic callback while program is running @@ -933,11 +928,6 @@ void lua_engine::initialize() machine().resume(); }; emu["register_prestart"] = [this] (sol::function func) { register_function(func, "LUA_ON_PRESTART"); }; - emu["register_start"] = [this] (sol::function func) { osd_printf_warning("[LUA] emu.register_start is deprecated - please use emu.add_machine_reset_notifier\n"); register_function(func, "LUA_ON_START"); }; - emu["register_stop"] = [this] (sol::function func) { osd_printf_warning("[LUA] emu.register_stop is deprecated - please use emu.add_machine_stop_notifier\n"); register_function(func, "LUA_ON_STOP"); }; - emu["register_pause"] = [this] (sol::function func) { osd_printf_warning("[LUA] emu.register_pause is deprecated - please use emu.add_machine_pause_notifier\n"); register_function(func, "LUA_ON_PAUSE"); }; - emu["register_resume"] = [this] (sol::function func) { osd_printf_warning("[LUA] emu.register_resume is deprecated - please use emu.add_machine_resume_notifier\n"); register_function(func, "LUA_ON_RESUME"); }; - emu["register_frame"] = [this] (sol::function func) { osd_printf_warning("[LUA] emu.register_frame is deprecated - please use emu.add_machine_frame_notifier\n"); register_function(func, "LUA_ON_FRAME"); }; emu["register_frame_done"] = [this] (sol::function func) { register_function(func, "LUA_ON_FRAME_DONE"); }; emu["register_sound_update"] = [this] (sol::function func) { register_function(func, "LUA_ON_SOUND_UPDATE"); }; emu["register_periodic"] = [this] (sol::function func) { register_function(func, "LUA_ON_PERIODIC"); }; diff --git a/src/frontend/mame/ui/menu.cpp b/src/frontend/mame/ui/menu.cpp index 241b0ab52d1..3037e9a4872 100644 --- a/src/frontend/mame/ui/menu.cpp +++ b/src/frontend/mame/ui/menu.cpp @@ -12,8 +12,6 @@ #include "ui/menu.h" #include "ui/ui.h" -#include "ui/mainmenu.h" -#include "ui/miscmenu.h" #include "cheat.h" #include "mame.h" @@ -217,12 +215,8 @@ bool menu::global_state::stack_has_special_main_menu() const } -uint32_t menu::global_state::ui_handler(render_container &container) +uint32_t menu::global_state::ui_handler() { - // if we have no menus stacked up, start with the main menu - if (!m_stack) - stack_push(std::make_unique<menu_main>(m_ui, container)); - while (true) { // ensure topmost menu is active - need a loop because it could push another menu @@ -2097,10 +2091,10 @@ bool menu::do_handle() // and calls the menu handler //------------------------------------------------- -delegate<uint32_t (render_container &)> menu::get_ui_handler(mame_ui_manager &mui) +delegate<uint32_t ()> menu::get_ui_handler(mame_ui_manager &mui) { global_state &state(get_global_state(mui)); - return delegate<uint32_t (render_container &)>(&global_state::ui_handler, &state); + return delegate<uint32_t ()>(&global_state::ui_handler, &state); } /*************************************************************************** diff --git a/src/frontend/mame/ui/menu.h b/src/frontend/mame/ui/menu.h index 56340280237..4a975098354 100644 --- a/src/frontend/mame/ui/menu.h +++ b/src/frontend/mame/ui/menu.h @@ -106,11 +106,14 @@ public: // pop a menu from the stack static void stack_pop(mame_ui_manager &ui) { get_global_state(ui).stack_pop(); } + // test whether there are any menus in the stack + static bool stack_empty(mame_ui_manager &ui) { return !get_global_state(ui).topmost_menu<menu>(); } + // test if one of the menus in the stack requires hide disable static bool stack_has_special_main_menu(mame_ui_manager &ui) { return get_global_state(ui).stack_has_special_main_menu(); } // master handler - static delegate<uint32_t (render_container &)> get_ui_handler(mame_ui_manager &mui); + static delegate<uint32_t ()> get_ui_handler(mame_ui_manager &mui); // Used by sliders void validate_selection(int scandir); @@ -440,7 +443,7 @@ private: void hide_menu() { m_hide = true; } - uint32_t ui_handler(render_container &container); + uint32_t ui_handler(); bool have_pointer() const noexcept { diff --git a/src/frontend/mame/ui/ui.cpp b/src/frontend/mame/ui/ui.cpp index 892e4501315..bfcc5e465e9 100644 --- a/src/frontend/mame/ui/ui.cpp +++ b/src/frontend/mame/ui/ui.cpp @@ -302,7 +302,7 @@ void mame_ui_manager::init() set_handler( ui_callback_type::NOINPUT, handler_callback_func( - [this] (render_container &container) -> uint32_t + [this, &container = machine().render().ui_container()] () -> uint32_t { draw_text_box(container, messagebox_text, ui::text_layout::text_justify::LEFT, 0.5f, 0.5f, colors().background_color()); return 0; @@ -652,7 +652,7 @@ void mame_ui_manager::display_startup_screens(bool first_time) rgb_t warning_color; bool config_menu = false; auto handler_messagebox_anykey = - [this, &poller, &warning_text, &warning_color, &config_menu] (render_container &container) -> uint32_t + [this, &poller, &warning_text, &warning_color, &config_menu, &container = machine().render().ui_container()] () -> uint32_t { // draw a standard message window draw_text_box(container, warning_text, ui::text_layout::text_justify::LEFT, 0.5f, 0.5f, warning_color); @@ -862,6 +862,7 @@ void mame_ui_manager::display_startup_screens(bool first_time) } else if (config_menu) { + ui::menu::stack_push<ui::menu_main>(*this, machine().render().ui_container()); show_menu(); // loop while we have a handler @@ -929,7 +930,7 @@ bool mame_ui_manager::update_and_render(render_container &container) // call the current UI handler machine().ui_input().check_ui_inputs(); - uint32_t const handler_result = m_handler_callback(container); + uint32_t const handler_result = m_handler_callback(); // display any popup messages if (osd_ticks() < m_popup_text_end) @@ -1538,7 +1539,7 @@ void mame_ui_manager::image_handler_ingame() // of the standard keypresses //------------------------------------------------- -uint32_t mame_ui_manager::handler_ingame(render_container &container) +uint32_t mame_ui_manager::handler_ingame() { // let the OSD do its thing first machine().osd().check_osd_inputs(); @@ -1547,7 +1548,7 @@ uint32_t mame_ui_manager::handler_ingame(render_container &container) // draw the profiler if visible if (show_profiler()) - draw_profiler(container); + draw_profiler(machine().render().ui_container()); // if we're single-stepping, pause now if (single_step()) @@ -1625,6 +1626,8 @@ uint32_t mame_ui_manager::handler_ingame(render_container &container) // turn on menus if requested if (machine().ui_input().pressed(IPT_UI_MENU)) { + if (ui::menu::stack_empty(*this)) + ui::menu::stack_push<ui::menu_main>(*this, machine().render().ui_container()); show_menu(); return 0; } @@ -1658,7 +1661,7 @@ uint32_t mame_ui_manager::handler_ingame(render_container &container) set_handler( ui_callback_type::MENU, handler_callback_func( - [this, is_paused] (render_container &container) -> uint32_t + [this, is_paused, &container = machine().render().ui_container()] () -> uint32_t { return ui_gfx_ui_handler(container, *this, is_paused); })); @@ -2704,7 +2707,7 @@ bool mame_ui_manager::set_ui_event_handler(std::function<bool ()> &&handler) set_handler( ui_callback_type::CUSTOM, handler_callback_func( - [cb = std::move(handler)] (render_container &container) -> uint32_t + [cb = std::move(handler)] () -> uint32_t { return !cb() ? HANDLER_CANCEL : 0; })); diff --git a/src/frontend/mame/ui/ui.h b/src/frontend/mame/ui/ui.h index cb856f9139c..fd877437558 100644 --- a/src/frontend/mame/ui/ui.h +++ b/src/frontend/mame/ui/ui.h @@ -284,7 +284,7 @@ private: struct active_pointer; class pointer_options; - using handler_callback_func = delegate<uint32_t (render_container &)>; + using handler_callback_func = delegate<uint32_t ()>; using device_feature_set = std::set<std::pair<std::string, std::string> >; using session_data_map = std::unordered_map<std::type_index, std::any>; using active_pointer_vector = std::vector<active_pointer>; @@ -332,7 +332,7 @@ private: static std::vector<ui::menu_item> slider_list; // UI handlers - uint32_t handler_ingame(render_container &container); + uint32_t handler_ingame(); // private methods void set_handler(ui_callback_type callback_type, handler_callback_func &&callback); |
