CGameInterface.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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. struct HeroMoveDetails;
  11. class CIntObject //interface object
  12. {
  13. public:
  14. SDL_Rect pos;
  15. int ID;
  16. };
  17. class CButtonBase : public virtual CIntObject
  18. {
  19. public:
  20. int type; //advmapbutton=2
  21. bool abs;
  22. bool active;
  23. CIntObject * ourObj;
  24. int state;
  25. std::vector< std::vector<SDL_Surface*> > imgs;
  26. int curimg;
  27. virtual void show() ;
  28. virtual void activate()=0;
  29. virtual void deactivate()=0;
  30. CButtonBase();
  31. };
  32. class ClickableL : public virtual CIntObject //for left-clicks
  33. {
  34. public:
  35. bool pressedL;
  36. ClickableL();
  37. virtual void clickLeft (tribool down)=0;
  38. virtual void activate()=0;
  39. virtual void deactivate()=0;
  40. };
  41. class ClickableR : public virtual CIntObject //for right-clicks
  42. {
  43. public:
  44. bool pressedR;
  45. ClickableR();
  46. virtual void clickRight (tribool down)=0;
  47. virtual void activate()=0;
  48. virtual void deactivate()=0;
  49. };
  50. class Hoverable : public virtual CIntObject
  51. {
  52. public:
  53. Hoverable(){hovered=false;}
  54. bool hovered;
  55. virtual void hover (bool on)=0;
  56. virtual void activate()=0;
  57. virtual void deactivate()=0;
  58. };
  59. class KeyInterested : public virtual CIntObject
  60. {
  61. public:
  62. virtual void keyPressed (SDL_KeyboardEvent & key)=0;
  63. virtual void activate()=0;
  64. virtual void deactivate()=0;
  65. };
  66. class MotionInterested: public virtual CIntObject
  67. {
  68. public:
  69. virtual void mouseMoved (SDL_MouseMotionEvent & sEvent)=0;
  70. virtual void activate()=0;
  71. virtual void deactivate()=0;
  72. };
  73. class CGameInterface
  74. {
  75. public:
  76. bool human;
  77. int playerID, serialID;
  78. virtual void yourTurn()=0{};
  79. virtual void heroMoved(const HeroMoveDetails & details)=0;
  80. };
  81. class CGlobalAI : public CGameInterface // AI class (to derivate)
  82. {
  83. public:
  84. virtual void yourTurn(){};
  85. };
  86. class CPlayerInterface : public CGameInterface
  87. {
  88. public:
  89. SDL_Event * current;
  90. CAdvMapInt * adventureInt;
  91. //TODO: town interace, battle interface, other interfaces
  92. std::vector<ClickableL*> lclickable;
  93. std::vector<ClickableR*> rclickable;
  94. std::vector<Hoverable*> hoverable;
  95. std::vector<KeyInterested*> keyinterested;
  96. std::vector<MotionInterested*> motioninterested;
  97. void yourTurn();
  98. void heroMoved(const HeroMoveDetails & details);
  99. void handleEvent(SDL_Event * sEvent);
  100. void init();
  101. CPlayerInterface(int Player, int serial);
  102. };
  103. #endif //CGAMEINTERFACE_H