diff options
Diffstat (limited to 'src/emu/ui/cheatopt.cpp')
-rw-r--r-- | src/emu/ui/cheatopt.cpp | 224 |
1 files changed, 15 insertions, 209 deletions
diff --git a/src/emu/ui/cheatopt.cpp b/src/emu/ui/cheatopt.cpp index 1d13f8e8c94..015ccba6908 100644 --- a/src/emu/ui/cheatopt.cpp +++ b/src/emu/ui/cheatopt.cpp @@ -24,7 +24,6 @@ void ui_menu_cheat::handle() /* process the menu */ const ui_menu_event *menu_event = process(UI_MENU_PROCESS_LR_REPEAT); - /* handle events */ if (menu_event != nullptr && menu_event->itemref != nullptr) { @@ -34,7 +33,7 @@ void ui_menu_cheat::handle() machine().popmessage(nullptr); /* handle reset all + reset all cheats for reload all option */ - if (menu_event->itemref < ITEMREF_CHEATS_FIRST_ITEM && menu_event->iptkey == IPT_UI_SELECT) + if ((FPTR)menu_event->itemref < 3 && menu_event->iptkey == IPT_UI_SELECT) { for (cheat_entry *curcheat = machine().cheat().first(); curcheat != nullptr; curcheat = curcheat->next()) if (curcheat->select_default_state()) @@ -43,7 +42,7 @@ void ui_menu_cheat::handle() /* handle individual cheats */ - else if (menu_event->itemref > ITEMREF_CHEATS_FIRST_ITEM) + else if ((FPTR)menu_event->itemref > 2) { cheat_entry *curcheat = reinterpret_cast<cheat_entry *>(menu_event->itemref); const char *string; @@ -75,26 +74,20 @@ void ui_menu_cheat::handle() case IPT_UI_DOWN: string = curcheat->comment(); if (string != nullptr && string[0] != 0) - machine().popmessage(_("Cheat Comment:\n%s"), string); + machine().popmessage("Cheat Comment:\n%s", string); break; } } /* handle reload all */ - if (menu_event->itemref == ITEMREF_CHEATS_RELOAD_ALL && menu_event->iptkey == IPT_UI_SELECT) + if ((FPTR)menu_event->itemref == 2 && menu_event->iptkey == IPT_UI_SELECT) { /* re-init cheat engine and thus reload cheats/cheats have already been turned off by here */ machine().cheat().reload(); /* display the reloaded cheats */ reset(UI_MENU_RESET_REMEMBER_REF); - machine().popmessage(_("All cheats reloaded")); - } - - /* handle autofire menu */ - if (menu_event->itemref == ITEMREF_CHEATS_AUTOFIRE_SETTINGS && menu_event->iptkey == IPT_UI_SELECT) - { - ui_menu::stack_push(global_alloc_clear<ui_menu_autofire>(machine(), container)); + machine().popmessage("All cheats reloaded"); } /* if things changed, update */ @@ -117,210 +110,23 @@ void ui_menu_cheat::populate() /* iterate over cheats */ std::string text; std::string subtext; - - // add the autofire menu - item_append(_("Autofire Settings"), nullptr, 0, (void *)ITEMREF_CHEATS_AUTOFIRE_SETTINGS); + for (cheat_entry *curcheat = machine().cheat().first(); curcheat != nullptr; curcheat = curcheat->next()) + { + UINT32 flags; + curcheat->menu_text(text, subtext, flags); + item_append(text.c_str(), subtext.c_str(), flags, curcheat); + } /* add a separator */ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr); - // add other cheats - if (machine().cheat().first() != nullptr) { - for (cheat_entry *curcheat = machine().cheat().first(); curcheat != nullptr; curcheat = curcheat->next()) - { - UINT32 flags; - curcheat->menu_text(text, subtext, flags); - item_append(text.c_str(), subtext.c_str(), flags, curcheat); - } - - /* add a separator */ - item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr); - - /* add a reset all option */ - item_append(_("Reset All"), nullptr, 0, (void *)ITEMREF_CHEATS_RESET_ALL); + /* add a reset all option */ + item_append("Reset All", nullptr, 0, (void *)1); - /* add a reload all cheats option */ - item_append(_("Reload All"), nullptr, 0, (void *)ITEMREF_CHEATS_RELOAD_ALL); - } + /* add a reload all cheats option */ + item_append("Reload All", nullptr, 0, (void *)2); } ui_menu_cheat::~ui_menu_cheat() { } - - - - - -/*------------------------------------------------- - menu_autofire - handle the autofire settings - menu --------------------------------------------------*/ - -ui_menu_autofire::ui_menu_autofire(running_machine &machine, render_container *container) : ui_menu(machine, container) -{ - screen_device_iterator iter(machine.root_device()); - const screen_device *screen = iter.first(); - - if (screen == nullptr) - { - refresh = 60.0; - } - else - { - refresh = ATTOSECONDS_TO_HZ(screen->refresh_attoseconds()); - } -} - -ui_menu_autofire::~ui_menu_autofire() -{ -} - -void ui_menu_autofire::handle() -{ - ioport_field *field; - bool changed = false; - - /* process the menu */ - const ui_menu_event *menu_event = process(0); - - /* handle events */ - if (menu_event != nullptr && menu_event->itemref != nullptr) - { - // menu item is changed using left/right keys only - if (menu_event->iptkey == IPT_UI_LEFT || menu_event->iptkey == IPT_UI_RIGHT) - { - if (menu_event->itemref == ITEMREF_AUTOFIRE_STATUS) - { - // toggle autofire status - bool autofire_toggle = machine().ioport().get_autofire_toggle(); // (menu_event->iptkey == IPT_UI_LEFT); - machine().ioport().set_autofire_toggle(!autofire_toggle); - changed = true; - } - else if (menu_event->itemref == ITEMREF_AUTOFIRE_DELAY) - { - // change autofire frequency - int autofire_delay = machine().ioport().get_autofire_delay(); - if (menu_event->iptkey == IPT_UI_LEFT) - { - autofire_delay--; - if (autofire_delay < 1) - autofire_delay = 1; - } - else - { - autofire_delay++; - if (autofire_delay > 30) - autofire_delay = 30; - } - machine().ioport().set_autofire_delay(autofire_delay); - changed = true; - } - else - { - // enable autofire on specific button - field = (ioport_field *)menu_event->itemref; - ioport_field::user_settings settings; - field->get_user_settings(settings); - settings.autofire = (menu_event->iptkey == IPT_UI_RIGHT); - field->set_user_settings(settings); - changed = true; - } - } - } - - // if toggle settings changed, redraw menu to reflect new options - if (!changed) - { - changed = (last_toggle != machine().ioport().get_autofire_toggle()); - } - - /* if something changed, rebuild the menu */ - if (changed) - { - reset(UI_MENU_RESET_REMEMBER_REF); - } -} - - -/*------------------------------------------------- - menu_autofire_populate - populate the autofire - menu --------------------------------------------------*/ - -void ui_menu_autofire::populate() -{ - ioport_field *field; - ioport_port *port; - char temp_text[64]; - - /* add autofire toggle item */ - bool autofire_toggle = machine().ioport().get_autofire_toggle(); - item_append(_("Autofire Status"), (autofire_toggle ? _("Disabled") : _("Enabled")), - (autofire_toggle ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW), (void *)ITEMREF_AUTOFIRE_STATUS); - - /* iterate over the input ports and add autofire toggle items */ - int menu_items = 0; - for (port = machine().ioport().first_port(); port != nullptr; port = port->next()) - { - bool is_first_button = true; - for (field = port->first_field(); field != nullptr; field = field->next()) - { - if ((field->name()) && ((field->type() >= IPT_BUTTON1 && field->type() <= IPT_BUTTON16))) // IPT_BUTTON1 + 15))) - { - menu_items++; - ioport_field::user_settings settings; - field->get_user_settings(settings); - - if (is_first_button) - { - /* add a separator for each player */ - item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr); - is_first_button = false; - } - /* add an autofire item */ - if (!autofire_toggle) - { - // item is enabled and can be switched to values on/off - item_append(field->name(), (settings.autofire ? _("On") : _("Off")), - (settings.autofire ? MENU_FLAG_LEFT_ARROW : MENU_FLAG_RIGHT_ARROW), (void *)field); - } - else - { - // item is disabled - item_append(field->name(), (settings.autofire ? _("On") : _("Off")), - MENU_FLAG_DISABLE | MENU_FLAG_INVERT, nullptr); - } - } - } - } - - /* add text item if no buttons found */ - if (menu_items==0) - { - item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr); - item_append(_("No buttons found on this machine!"), nullptr, MENU_FLAG_DISABLE, nullptr); - } - - /* add a separator */ - item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr); - - /* add autofire delay item */ - int value = machine().ioport().get_autofire_delay(); - snprintf(temp_text, ARRAY_LENGTH(temp_text), "%d = %.2f Hz", value, (float)refresh/value); - if (!autofire_toggle) - { - item_append(_("Autofire Delay"), temp_text, MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW, (void *)ITEMREF_AUTOFIRE_DELAY); - } - else - { - item_append(_("Autofire Delay"), temp_text, MENU_FLAG_DISABLE | MENU_FLAG_INVERT, nullptr); - } - - /* add a separator */ - item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr); - - last_toggle = autofire_toggle; -} - - |