summaryrefslogtreecommitdiffstatshomepage
path: root/src/frontend/mame/ui/selgame.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/mame/ui/selgame.h')
-rw-r--r--src/frontend/mame/ui/selgame.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/src/frontend/mame/ui/selgame.h b/src/frontend/mame/ui/selgame.h
new file mode 100644
index 00000000000..225e9c2cf3a
--- /dev/null
+++ b/src/frontend/mame/ui/selgame.h
@@ -0,0 +1,85 @@
+// license:BSD-3-Clause
+// copyright-holders:Maurizio Petrarota
+/***************************************************************************
+
+ ui/selgame.h
+
+ Main UI menu.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_MAIN_H__
+#define __UI_MAIN_H__
+
+#include "ui/menu.h"
+
+class ui_menu_select_game : public ui_menu
+{
+public:
+ ui_menu_select_game(running_machine &machine, render_container *container, const char *gamename);
+ virtual ~ui_menu_select_game();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+ // force game select menu
+ static void force_game_select(running_machine &machine, render_container *container);
+
+ virtual bool menu_has_search_active() override { return (m_search[0] != 0); }
+
+ // draw left panel
+ virtual float draw_left_panel(float x1, float y1, float x2, float y2) override;
+
+ // draw right panel
+ virtual void draw_right_panel(void *selectedref, float origx1, float origy1, float origx2, float origy2) override;
+
+private:
+ enum
+ {
+ CONF_OPTS = 1,
+ CONF_MACHINE,
+ CONF_PLUGINS,
+ };
+
+ enum { VISIBLE_GAMES_IN_SEARCH = 200 };
+ char m_search[40];
+ static int m_isabios;
+ int highlight;
+
+ static std::vector<const game_driver *> m_sortedlist;
+ std::vector<const game_driver *> m_availsortedlist;
+ std::vector<const game_driver *> m_unavailsortedlist;
+ std::vector<const game_driver *> m_displaylist;
+
+ const game_driver *m_searchlist[VISIBLE_GAMES_IN_SEARCH + 1];
+
+ // internal methods
+ void build_custom();
+ void build_category();
+ void build_available_list();
+ void build_list(const char *filter_text = nullptr, int filter = 0, bool bioscheck = false, std::vector<const game_driver *> vec = {});
+
+ bool isfavorite();
+ void populate_search();
+ void init_sorted_list();
+ bool load_available_machines();
+ void load_custom_filters();
+
+ // General info
+ void general_info(const game_driver *driver, std::string &buffer);
+
+ void arts_render(void *selectedref, float x1, float y1, float x2, float y2);
+ void infos_render(void *selectedref, float x1, float y1, float x2, float y2);
+
+ // handlers
+ void inkey_select(const ui_menu_event *menu_event);
+ void inkey_select_favorite(const ui_menu_event *menu_event);
+ void inkey_special(const ui_menu_event *menu_event);
+ void inkey_export();
+ void inkey_configure(const ui_menu_event *menu_event);
+};
+
+
+#endif /* __UI_MAIN_H__ */