summaryrefslogblamecommitdiffstatshomepage
path: root/src/frontend/mame/ui/miscmenu.h
blob: acff544dee681c2857ce8c4e9e9e9d75e007d846 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                       
                                                                                   

                                                                            
                 


                                               

                                                                            

                                   
 

            

                    
                     
                    
 

                  
 
 
              
 

                                      
       
                                                                              
                                      

        
                                                                              
                                       

  

                                        
       
                                                                                
                                        

        
                                                                              
                                       

  

                                    
       
                                                                            
                                    

        
                                                                              
                                       
 


                          

                                  
       
                                                                          
                                  








                                               

                                  







                                                      
          
 
                                                                              
                                       


                                                

  

                                  
       
                                                                          
                                  

        
                                                                              
                                       

  

                                       
       
                                                                               
                                       

        
                                                                              
                                       
  
 
 



                                                   
                               

       
                                                                                                               
                               

        
                                                                              

                                       

                                               




                                                   
                                          

       





                                                                             
                                          

          


                                                                                                                              

                                                                







                           

                               
          
 
                                                                              

                                       



                                                         
                           

                         
                      
                              

                                  

  



                                                   
                                          

       
                                                                                  
                                          

          
                                                                              
                                       
 

                                                                                                                              
 

                 
                                     
// license:BSD-3-Clause
// copyright-holders:Nicola Salmoria, Aaron Giles, Nathan Woods, Maurizio Petrarota
/***************************************************************************

    ui/miscmenu.h

    Internal MAME menus for the user interface.

***************************************************************************/

#ifndef MAME_FRONTEND_UI_MISCMENU_H
#define MAME_FRONTEND_UI_MISCMENU_H

#pragma once

#include "ui/menu.h"

#include "crsshair.h"
#include "emuopts.h"

#include <utility>
#include <vector>


namespace ui {

class menu_keyboard_mode : public menu
{
public:
	menu_keyboard_mode(mame_ui_manager &mui, render_container &container);
	virtual ~menu_keyboard_mode();

private:
	virtual void populate(float &customtop, float &custombottom) override;
	virtual void handle() override;
};

class menu_network_devices : public menu
{
public:
	menu_network_devices(mame_ui_manager &mui, render_container &container);
	virtual ~menu_network_devices();

private:
	virtual void populate(float &customtop, float &custombottom) override;
	virtual void handle() override;
};

class menu_bookkeeping : public menu
{
public:
	menu_bookkeeping(mame_ui_manager &mui, render_container &container);
	virtual ~menu_bookkeeping();

private:
	virtual void populate(float &customtop, float &custombottom) override;
	virtual void handle() override;

	attotime prevtime;
};

class menu_crosshair : public menu
{
public:
	menu_crosshair(mame_ui_manager &mui, render_container &container);
	virtual ~menu_crosshair();

private:
	enum {
		CROSSHAIR_ITEM_VIS = 0,
		CROSSHAIR_ITEM_PIC,
		CROSSHAIR_ITEM_AUTO_TIME
	};

	/* internal crosshair menu item data */
	struct crosshair_item_data
	{
		render_crosshair *crosshair = nullptr;
		uint8_t     type = 0U;
		uint8_t     player = 0U;
		uint8_t     min = 0U, max = 0U;
		uint32_t    cur = 0U;
		uint8_t     defvalue = 0U;
		std::string last_name;
		std::string next_name;
	};

	virtual void populate(float &customtop, float &custombottom) override;
	virtual void handle() override;

	std::vector<crosshair_item_data> m_data;
	std::vector<std::string> m_pics;
};

class menu_quit_game : public menu
{
public:
	menu_quit_game(mame_ui_manager &mui, render_container &container);
	virtual ~menu_quit_game();

private:
	virtual void populate(float &customtop, float &custombottom) override;
	virtual void handle() override;
};

class menu_bios_selection : public menu
{
public:
	menu_bios_selection(mame_ui_manager &mui, render_container &container);
	virtual ~menu_bios_selection();

private:
	virtual void populate(float &customtop, float &custombottom) override;
	virtual void handle() override;
};


//-------------------------------------------------
//  export menu
//-------------------------------------------------

class menu_export : public menu
{
public:
	menu_export(mame_ui_manager &mui, render_container &container, std::vector<const game_driver*> &&list);
	virtual ~menu_export();

private:
	virtual void populate(float &customtop, float &custombottom) override;
	virtual void handle() override;

	std::vector<const game_driver*> m_list;
};

//-------------------------------------------------
//  machine configure menu
//-------------------------------------------------

class menu_machine_configure : public menu
{
public:
	menu_machine_configure(
			mame_ui_manager &mui,
			render_container &container,
			game_driver const &drv,
			std::function<void (bool, bool)> &&handler = nullptr,
			float x0 = 0.0f, float y0 = 0.0f);
	virtual ~menu_machine_configure();

protected:
	virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;

private:
	using s_bios = std::vector<std::pair<std::string, int>>;

	enum
	{
		ADDFAV = 1,
		DELFAV,
		SAVE,
		CONTROLLER,
		VIDEO,
		BIOS,
		ADVANCED,
		LAST = ADVANCED
	};

	virtual void populate(float &customtop, float &custombottom) override;
	virtual void handle() override;

	void setup_bios();

	std::function<void (bool, bool)> const m_handler;
	game_driver const &m_drv;
	emu_options m_opts;
	float const m_x0;
	float const m_y0;
	s_bios m_bios;
	std::size_t m_curbios;
	bool const m_was_favorite;
	bool m_want_favorite;
};

//-------------------------------------------------
//  plugins configure menu
//-------------------------------------------------

class menu_plugins_configure : public menu
{
public:
	menu_plugins_configure(mame_ui_manager &mui, render_container &container);
	virtual ~menu_plugins_configure();

protected:
	virtual void populate(float &customtop, float &custombottom) override;
	virtual void handle() override;

	virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
};

} // namespace ui

#endif // MAME_FRONTEND_UI_MISCMENU_H