00001 #ifndef DEF_MENU_H 00002 #define DEF_MENU_H 1 00003 00004 #define WFONT 4 00005 #define DFONT 10 00006 #define BORDERSIZE 2 00007 #define LINESIZE 1 00008 00016 class Menu { 00017 friend class GraphicsEngine; 00018 public: 00019 Menu(); 00020 virtual ~Menu(); 00022 string title; 00024 virtual void act() = 0; 00025 void setLast(Menu* lastmenu) { 00026 last=lastmenu; 00027 } 00028 Menu* getLast() { 00029 return last; 00030 } 00031 Uint8 getSize() { 00032 return entries.size(); 00033 } 00034 void increaseEntry(bool forward=true); 00035 protected: 00037 Menu* last; 00039 Uint8 currententry; 00041 std::vector<string> entries; 00043 Font* font; 00045 Font* font_title; 00047 Font* font_high; 00048 }; 00049 00050 class StartMenu : public Menu { 00051 public: 00052 StartMenu(); 00053 virtual void act(); 00054 private: 00056 void update(); 00057 }; 00058 00059 class GameMenu : public Menu { 00060 public: 00061 GameMenu(); 00062 virtual void act(); 00063 private: 00065 void update(); 00066 }; 00067 00068 class EditMenu : public Menu { 00069 public: 00070 EditMenu(); 00071 virtual void act(); 00072 private: 00074 void update(); 00075 }; 00076 00077 class MapMenu : public Menu { 00078 public: 00079 MapMenu(); 00080 virtual void act(); 00081 private: 00083 void update(); 00084 }; 00085 00086 class ConfigMenu : public Menu { 00087 public: 00088 ConfigMenu(); 00089 virtual void act(); 00090 private: 00092 void update(); 00093 }; 00094 00095 class GraphicConfigMenu : public Menu { 00096 public: 00097 GraphicConfigMenu(); 00098 virtual void act(); 00099 private: 00101 void update(); 00102 }; 00103 00104 class KeyConfigMenu : public Menu { 00105 public: 00106 KeyConfigMenu(); 00107 virtual void act(); 00108 private: 00110 void update(); 00111 }; 00112 00113 #endif