CGameInterface.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #ifndef CGAMEINTERFACE_H
  2. #define CGAMEINTERFACE_H
  3. #include "SDL.h"
  4. #include "CDefHandler.h"
  5. #include "SDL_Extensions.h"
  6. #include <boost/logic/tribool.hpp>
  7. BOOST_TRIBOOL_THIRD_STATE(outOfRange)
  8. using namespace boost::logic;
  9. class CAdvMapInt;
  10. class CIntObject //interface object
  11. {
  12. public:
  13. SDL_Rect pos;
  14. int ID;
  15. };
  16. class CButtonBase : public virtual CIntObject
  17. {
  18. public:
  19. int type; //advmapbutton=2
  20. bool abs;
  21. bool active;
  22. CIntObject * ourObj;
  23. int state;
  24. std::vector< std::vector<SDL_Surface*> > imgs;
  25. int curimg;
  26. virtual void show() ;
  27. virtual void activate()=0;
  28. virtual void deactivate()=0;
  29. CButtonBase();
  30. };
  31. class ClickableL : public virtual CIntObject //for left-clicks
  32. {
  33. public:
  34. bool pressedL;
  35. ClickableL();
  36. virtual void clickLeft (tribool down)=0;
  37. virtual void activate()=0;
  38. virtual void deactivate()=0;
  39. };
  40. class ClickableR : public virtual CIntObject //for right-clicks
  41. {
  42. public:
  43. bool pressedR;
  44. ClickableR();
  45. virtual void clickRight (tribool down)=0;
  46. virtual void activate()=0;
  47. virtual void deactivate()=0;
  48. };
  49. class Hoverable : public virtual CIntObject
  50. {
  51. public:
  52. Hoverable(){hovered=false;}
  53. bool hovered;
  54. virtual void hover (bool on)=0;
  55. virtual void activate()=0;
  56. virtual void deactivate()=0;
  57. };
  58. class KeyInterested : public virtual CIntObject
  59. {
  60. public:
  61. virtual void keyPressed (SDL_KeyboardEvent & key)=0;
  62. virtual void activate()=0;
  63. virtual void deactivate()=0;
  64. };
  65. class CGameInterface
  66. {
  67. public:
  68. bool human;
  69. int playerID, serialID;
  70. virtual void yourTurn()=0{};
  71. };
  72. class CGlobalAI : public CGameInterface // AI class (to derivate)
  73. {
  74. public:
  75. virtual void yourTurn(){};
  76. };
  77. class CPlayerInterface : public CGameInterface
  78. {
  79. public:
  80. SDL_Event * current;
  81. CAdvMapInt * adventureInt;
  82. //TODO: town interace, battle interface, other interfaces
  83. std::vector<ClickableL*> lclickable;
  84. std::vector<ClickableR*> rclickable;
  85. std::vector<Hoverable*> hoverable;
  86. std::vector<KeyInterested*> keyinterested;
  87. void yourTurn();
  88. void handleEvent(SDL_Event * sEvent);
  89. void init();
  90. CPlayerInterface(int Player, int serial);
  91. };
  92. #endif //CGAMEINTERFACE_H