-namespace Menu {
- typedef void(*MBCallback)(int id);
-
- void GUITick(Game* game);
- void clearMenu();
- void addLabel(int id,const string& label,int x,int y);
- void addButton(int id,const string& label,MBCallback cb,int x,int y,int w,int h);
- void addButton(int id,const string& label,MBCallback cb,int x,int y,int w,int h,float r,float g,float b);
- void addImage(int id,int texture,int x,int y,int w,int h);
- void addImageButton(int id,int texture,MBCallback cb,int x,int y,int w,int h);
- void addImageButton(int id,int texture,MBCallback cb,int x,int y,int w,int h,float r,float g,float b);
- void addMapLine(const XYZ& start, const XYZ& end, float startsize, float endsize, float r,float g,float b);
- void addMapMarker(int id,int texture,MBCallback cb,int x,int y,int w,int h,float r,float g,float b);
- void setMapItem(int id);
- void setButtonText(int id,const string& label);
- void setButtonText(int id,const string& label,int x,int y,int w,int h);
- int getSelected(int mousex, int mousey);
- void drawItems(Game* game);
-}
+struct MenuItem {
+ enum MenuItemType {NONE, LABEL, BUTTON, IMAGE, IMAGEBUTTON, MAPMARKER, MAPLINE, MAPLABEL} type;
+ int id;
+ string text;
+ Texture texture;
+ int x, y, w, h;
+ float r, g, b;
+ float effectfade;
+
+ float linestartsize;
+ float lineendsize;
+
+ MenuItem(MenuItemType _type, int _id, const string& _text, Texture _texture,
+ int _x, int _y, int _w, int _h, float _r, float _g, float _b,
+ float _linestartsize = 1, float _lineendsize = 1);
+};
+
+class Menu
+{
+public:
+ static void clearMenu();
+ static void addLabel(int id, const string& text, int x, int y, float r = 1, float g = 0, float b = 0);
+ static void addButton(int id, const string& text, int x, int y, float r = 1, float g = 0, float b = 0);
+ static void addImage(int id, Texture texture, int x, int y, int w, int h, float r = 1, float g = 1, float b = 1);
+ static void addButtonImage(int id, Texture texture, int x, int y, int w, int h, float r = 1, float g = 1, float b = 1);
+ static void addMapLine(int x, int y, int w, int h, float startsize, float endsize, float r, float g, float b);
+ static void addMapMarker(int id, Texture texture, int x, int y, int w, int h, float r, float g, float b);
+ static void addMapLabel(int id, const string& text, int x, int y, float r = 1, float g = 0, float b = 0);
+ static void setText(int id, const string& text);
+ static void setText(int id, const string& text, int x, int y, int w, int h);
+ static int getSelected(int mousex, int mousey);
+ static void drawItems();
+
+ static void Load();
+ static void Tick();
+ static void updateSettingsMenu();
+ static void updateStereoConfigMenu();
+ static void updateControlsMenu();
+ static void setKeySelected();
+
+private:
+ static void handleFadeEffect();
+
+ static std::vector<MenuItem> items;
+};