home *** CD-ROM | disk | FTP | other *** search
- #ifndef __Menu_h__
- #define __Menu_h__
-
- #include "DisplayInfo.h"
- #include "Input.h"
- #include "Sound.h"
-
- #define MENU_MAX_MENU_ITEMS 32
- #define MENU_MAX_SUBMENUS 8
-
- class MenuItem{
- public:
- int x, y, width, height;
- bool highlighted;
- bool hasKeyboardFocus;
-
- MenuItem(int x, int y, int width, int height);
- virtual ~MenuItem()=0;
-
- void deactivate();
- void activate();
- bool isActive();
-
- virtual void draw();
- virtual void clicked();
- virtual void clickedRight();
- virtual void receiveKey(SDL_keysym* keysym);
- protected:
- bool active;
- };
-
- class TextButton:public MenuItem{
- public:
- const char* label;
-
- TextButton(int x, int y, int width, int height, const char* label);
- TextButton(int x, int y, const char* label);
- ~TextButton();
-
- void draw();
- void clicked();
- void clickedRight();
-
- void setCallbackFunction(void (*func)(void));
- protected:
- void (*callback)(void);
- };
-
-
- class ToggleButton:public MenuItem{
- public:
- const char* label;
-
- ToggleButton(int x, int y, const char** items, int numItems, const char* label);
- ~ToggleButton();
-
- void draw();
- void clicked();
- void clickedRight();
-
- const char* getSelectedItem();
- int getIndex();
- void setIndex(int newIndex);
- void changeItems(const char** newItems, int newNumItems);
- protected:
- const char** items;
- int numItems;
- int index;
- };
-
-
- class Textfield:public MenuItem{
- public:
- const char* label;
-
- Textfield(int x, int y, int minChars, int maxChars, const char* label);
- ~Textfield();
-
- void draw();
- void clicked();
- void clickedRight();
- void receiveKey(SDL_keysym* keysym);
-
- char* getText();
- void setText(const char* newText);
-
- protected:
- int minChars;
- int maxChars;
- char text[CON_MAX_STRING_LENGTH];
- char inputStr[CON_MAX_STRING_LENGTH];
- int inputStrIndex;
- };
-
-
-
-
- class Menu{
- public:
- const char* name;
-
- Menu(const char* name);
- virtual ~Menu();
-
- MenuItem* getMenuItem(int x, int y);
- bool addMenuItem(MenuItem* item);
- bool removeMenuItem(MenuItem* item);
- bool deleteMenuItem(MenuItem* item);
-
- bool addSubmenu(Menu* submenu);
- bool removeSubmenu(Menu* submenu);
- bool deleteSubmenu(Menu* submenu);
- void closeAllSubmenus();
-
- //virtual bool openAsSubmenu();
- virtual bool open();
- virtual bool close();
- //virtual bool closeAsSubmenu();
-
- bool isOpened();
-
- virtual void draw();
- virtual void drawBackground();
-
- virtual void handleKeyboardEvent(SDL_KeyboardEvent* event);
- virtual void handleMouseMotionEvent(SDL_MouseMotionEvent* event);
- virtual void handleMouseButtonEvent(SDL_MouseButtonEvent* event);
-
- static Mix_Chunk* pressButtonSound;
- static Mix_Chunk* toggleSound;
- static Mix_Chunk* errorSound;
-
- protected:
- MenuItem* menuItems[MENU_MAX_MENU_ITEMS];
- Menu* submenus[MENU_MAX_SUBMENUS];
-
- bool opened;
- bool allowConsole;
-
- virtual void mainLoop();
- };
-
-
-
- #endif /* __Menu_h__ */
-