52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef MENUS_H__
 | |
| #define MENUS_H__
 | |
| namespace SBF {
 | |
|     struct MenuStyle;
 | |
|     struct MenuItem;
 | |
| }
 | |
| // End forward declarations
 | |
| #include <string>
 | |
| #include <cstdint>
 | |
| 
 | |
| namespace SBF {
 | |
|     using std::string;
 | |
| 
 | |
|     struct MenuStyle {
 | |
|         int idWidth;
 | |
|         int labelWidth;
 | |
|         int valueWidth;
 | |
|         int screenWidth;
 | |
|         string randomItemName;
 | |
|         int randomItemId;
 | |
|         string idLabelSeparator;
 | |
|         string labelValueSeparator;
 | |
|         string menuItemSpacer;
 | |
|         bool showRandom;
 | |
|         bool useColors;
 | |
|     };
 | |
| 
 | |
|     struct MenuItem {
 | |
|         string label;
 | |
|         int id;
 | |
|         int value;
 | |
|         int color;
 | |
|         bool isVisible;
 | |
|     };
 | |
| 
 | |
|     int GetRandomMenuItemId (std::vector<MenuItem> items);
 | |
|     void BuildMenu(std::vector<MenuItem> items, std::vector<string> labels);
 | |
|     void BuildMenuWithValues(std::vector<MenuItem> items, std::vector<string> labels, std::vector<int> values);
 | |
|     void BuildMenuWithColors(std::vector<MenuItem> items, std::vector<string> labels, std::vector<uint8_t> colors);
 | |
|     void AdjustMenuStyle(MenuStyle& style, std::vector<MenuItem> items, bool ignoreValue);
 | |
|     void PrintMenu(std::vector<MenuItem> items, MenuStyle style);
 | |
|     string GetTitle(MenuItem item, MenuStyle style);
 | |
|     string GetTitleWithoutValue(MenuItem item, MenuStyle style);
 | |
|     void NewMenuStyle(MenuStyle& style);
 | |
|     void NewMenuItem(MenuItem& item, string label, int id);
 | |
|     void NewMenuItemWithValue(MenuItem& item, string label, int id, int value);
 | |
|     void NewMenuItemWithColor(MenuItem& item, string label, int id, uint8_t color);
 | |
| 
 | |
| } // End namespace SBF
 | |
| 
 | |
| #endif // !defined MENUS_H__
 |