summaryrefslogtreecommitdiffstatshomepage
path: root/src/frontend/mame/ui
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2021-11-09 04:22:28 +1100
committer Vas Crabb <vas@vastheman.com>2021-11-09 04:22:28 +1100
commit5c64a1771aa14601457cd5e0544124f93ec7f9bc (patch)
tree6849ed93a7f9371f41380caaf6b13bfbb087a429 /src/frontend/mame/ui
parent524d40adbc9aa00448ca7bee5540196d9ac2cf09 (diff)
frontend: Added input provider module options to menu, worked around machine options not showing modules.
Diffstat (limited to 'src/frontend/mame/ui')
-rw-r--r--src/frontend/mame/ui/submenu.cpp46
-rw-r--r--src/frontend/mame/ui/submenu.h8
2 files changed, 34 insertions, 20 deletions
diff --git a/src/frontend/mame/ui/submenu.cpp b/src/frontend/mame/ui/submenu.cpp
index 1b55556f564..c36f837ce5c 100644
--- a/src/frontend/mame/ui/submenu.cpp
+++ b/src/frontend/mame/ui/submenu.cpp
@@ -9,16 +9,18 @@
***************************************************************************/
#include "emu.h"
-#include "ui/ui.h"
#include "ui/submenu.h"
-#include "ui/utils.h"
+
#include "ui/menuitem.h"
+#include "ui/ui.h"
+#include "ui/utils.h"
#if defined(UI_WINDOWS) && !defined(UI_SDL)
#include "../osd/windows/winmain.h"
#else
#include "../osd/modules/lib/osdobj_common.h"
#endif
+#include "../osd/modules/input/input_module.h"
#include <limits>
@@ -97,7 +99,7 @@ std::vector<submenu::option> submenu::advanced_options()
std::vector<submenu::option> submenu::control_options()
{
return std::vector<option>{
- { option_type::HEAD, N_("Device Mapping") },
+ { option_type::HEAD, N_("Input Device Options") },
{ option_type::EMU, N_("Lightgun Device Assignment"), OPTION_LIGHTGUN_DEVICE },
{ option_type::EMU, N_("Trackball Device Assignment"), OPTION_TRACKBALL_DEVICE },
{ option_type::EMU, N_("Pedal Device Assignment"), OPTION_PEDAL_DEVICE },
@@ -105,7 +107,12 @@ std::vector<submenu::option> submenu::control_options()
{ option_type::EMU, N_("Paddle Device Assignment"), OPTION_PADDLE_DEVICE },
{ option_type::EMU, N_("Dial Device Assignment"), OPTION_DIAL_DEVICE },
{ option_type::EMU, N_("Positional Device Assignment"), OPTION_POSITIONAL_DEVICE },
- { option_type::EMU, N_("Mouse Device Assignment"), OPTION_MOUSE_DEVICE } };
+ { option_type::EMU, N_("Mouse Device Assignment"), OPTION_MOUSE_DEVICE },
+ { option_type::SEP },
+ { option_type::OSD, N_("Keyboard Input Provider"), OSD_KEYBOARDINPUT_PROVIDER },
+ { option_type::OSD, N_("Mouse Input Provider"), OSD_MOUSEINPUT_PROVIDER },
+ { option_type::OSD, N_("Lightgun Input Provider"), OSD_LIGHTGUNINPUT_PROVIDER },
+ { option_type::OSD, N_("Joystick Input Provider"), OSD_JOYSTICKINPUT_PROVIDER } };
}
std::vector<submenu::option> submenu::video_options()
@@ -158,7 +165,7 @@ submenu::submenu(mame_ui_manager &mui, render_container &container, std::vector<
else
opts = dynamic_cast<core_options *>(options);
- for (option & sm_option : m_options)
+ for (option &sm_option : m_options)
{
switch (sm_option.type)
{
@@ -192,7 +199,7 @@ submenu::submenu(mame_ui_manager &mui, render_container &container, std::vector<
if (sm_option.entry->type() == OPTION_STRING)
{
sm_option.value.clear();
- std::string descr(sm_option.entry->description()), delim(", ");
+ std::string descr(machine().options().get_entry(sm_option.name)->description()), delim(", ");
descr.erase(0, descr.find(":") + 2);
std::string default_value(sm_option.entry->default_value());
@@ -348,7 +355,7 @@ void submenu::populate(float &customtop, float &custombottom)
item_append(menu_item_type::SEPARATOR);
break;
case option_type::CMD:
- item_append(_(sm_option->description), 0, static_cast<void*>(&(*sm_option)));
+ item_append(_(sm_option->description), 0, reinterpret_cast<void *>(&*sm_option));
break;
case option_type::EMU:
case option_type::UI:
@@ -356,7 +363,8 @@ void submenu::populate(float &customtop, float &custombottom)
switch (sm_option->entry->type())
{
case OPTION_BOOLEAN:
- item_append_on_off(_(sm_option->description),
+ item_append_on_off(
+ _(sm_option->description),
sm_option->options->bool_value(sm_option->name),
0,
static_cast<void*>(&(*sm_option)));
@@ -376,10 +384,11 @@ void submenu::populate(float &customtop, float &custombottom)
i_max = std::numeric_limits<int>::max();
}
arrow_flags = get_arrow_flags(i_min, i_max, i_cur);
- item_append(_(sm_option->description),
+ item_append(
+ _(sm_option->description),
sm_option->entry->value(),
arrow_flags,
- static_cast<void*>(&(*sm_option)));
+ reinterpret_cast<void *>(&*sm_option));
}
break;
case OPTION_FLOAT:
@@ -398,10 +407,11 @@ void submenu::populate(float &customtop, float &custombottom)
}
arrow_flags = get_arrow_flags(f_min, f_max, f_cur);
std::string tmptxt = string_format("%g", f_cur);
- item_append(_(sm_option->description),
+ item_append(
+ _(sm_option->description),
tmptxt,
arrow_flags,
- static_cast<void*>(&(*sm_option)));
+ reinterpret_cast<void *>(&*sm_option));
}
break;
case OPTION_STRING:
@@ -409,16 +419,20 @@ void submenu::populate(float &customtop, float &custombottom)
std::string v_cur(sm_option->entry->value());
int const cur_value = std::distance(sm_option->value.begin(), std::find(sm_option->value.begin(), sm_option->value.end(), v_cur));
arrow_flags = get_arrow_flags(0, int(unsigned(sm_option->value.size() - 1)), cur_value);
- item_append(_(sm_option->description),
+ item_append(
+ _(sm_option->description),
sm_option->options->value(sm_option->name),
- arrow_flags, static_cast<void*>(&(*sm_option)));
+ arrow_flags,
+ reinterpret_cast<void *>(&*sm_option));
}
break;
default:
arrow_flags = FLAG_RIGHT_ARROW;
- item_append(_(sm_option->description),
+ item_append(
+ _(sm_option->description),
sm_option->options->value(sm_option->name),
- arrow_flags, static_cast<void*>(&(*sm_option)));
+ arrow_flags,
+ reinterpret_cast<void *>(&*sm_option));
break;
}
break;
diff --git a/src/frontend/mame/ui/submenu.h b/src/frontend/mame/ui/submenu.h
index 4f2a5352715..fdcbfa2c7c2 100644
--- a/src/frontend/mame/ui/submenu.h
+++ b/src/frontend/mame/ui/submenu.h
@@ -42,10 +42,10 @@ public:
struct option
{
option_type type;
- const char *description;
- const char *name;
+ const char *description = nullptr;
+ const char *name = nullptr;
core_options::entry::shared_ptr entry;
- core_options *options;
+ core_options *options = nullptr;
std::vector<std::string> value;
};
@@ -67,7 +67,7 @@ private:
virtual void handle(event const *ev) override;
std::vector<option> m_options;
- game_driver const *m_driver;
+ game_driver const *const m_driver;
};
} // namespace ui