Open Source Tomb Raider Engine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*!
  2. * \file include/Menu.h
  3. * \brief Menu 'overlay' interface
  4. *
  5. * \author xythobuz
  6. */
  7. #ifndef _MENU_H_
  8. #define _MENU_H_
  9. #include <functional>
  10. /*!
  11. * \brief Menu 'overlay'
  12. */
  13. class Menu {
  14. public:
  15. virtual ~Menu() { }
  16. virtual void setVisible(bool visible);
  17. virtual bool isVisible();
  18. virtual int initialize() = 0;
  19. virtual void display() = 0;
  20. virtual void handleKeyboard(KeyboardButton key, bool pressed) = 0;
  21. virtual void handleMouseClick(unsigned int x, unsigned int y, KeyboardButton button, bool released) = 0;
  22. virtual void handleMouseScroll(int xrel, int yrel) = 0;
  23. protected:
  24. virtual void showDialog(std::string msg, std::string btn1, std::string btn2,
  25. std::function<int (bool state)> callback = std::function<int (bool)>());
  26. virtual void ackDialog();
  27. virtual bool handleKeyboardDialog(KeyboardButton key, bool pressed);
  28. virtual bool handleMouseClickDialog(unsigned int x, unsigned int y,
  29. KeyboardButton button, bool released);
  30. virtual bool handleMouseScrollDialog(int xrel, int yrel);
  31. virtual void displayDialog();
  32. bool mVisible;
  33. bool dialogState;
  34. std::string dialogText;
  35. std::string dialogButton1;
  36. std::string dialogButton2;
  37. std::function<int (bool state)> dialogFunction;
  38. };
  39. Menu &getMenu();
  40. #endif