#include "Game.h"
-namespace Menu
+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;
+
+ void init(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) {
+ type = _type;
+ id = _id;
+ text = _text;
+ texture = _texture;
+ x = _x;
+ y = _y;
+ w = _w;
+ h = _h;
+ r = _r;
+ g = _g;
+ b = _b;
+ effectfade = 0;
+ linestartsize = _linestartsize;
+ lineendsize = _lineendsize;
+ if (type == MenuItem::BUTTON) {
+ if (w == -1)
+ w = text.length() * 10;
+ if (h == -1)
+ h = 20;
+ }
+ }
+};
+
+class Menu
{
-void clearMenu();
-void addLabel(int id, const string& text, int x, int y, float r = 1, float g = 0, float b = 0);
-void addButton(int id, const string& text, int x, int y, float r = 1, float g = 0, float b = 0);
-void addImage(int id, Texture texture, int x, int y, int w, int h, float r = 1, float g = 1, float b = 1);
-void addButtonImage(int id, Texture texture, int x, int y, int w, int h, float r = 1, float g = 1, float b = 1);
-void addMapLine(int x, int y, int w, int h, float startsize, float endsize, float r, float g, float b);
-void addMapMarker(int id, Texture texture, int x, int y, int w, int h, float r, float g, float b);
-void addMapLabel(int id, const string& text, int x, int y, float r = 1, float g = 0, float b = 0);
-void setText(int id, const string& text);
-void setText(int id, const string& text, int x, int y, int w, int h);
-int getSelected(int mousex, int mousey);
-void drawItems();
-}
+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();
+
+private:
+ static void handleFadeEffect();
+
+ static std::vector<MenuItem> items;
+};
#endif