CGameInterface.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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<SDL_Surface*> imgs;
  25. virtual void show() ;
  26. virtual void activate()=0;
  27. virtual void deactivate()=0;
  28. CButtonBase();
  29. };
  30. class ClickableL : public virtual CIntObject //for left-clicks
  31. {
  32. public:
  33. bool pressedL;
  34. virtual void clickLeft (tribool down)=0;
  35. virtual void activate()=0;
  36. virtual void deactivate()=0;
  37. };
  38. class ClickableR : public virtual CIntObject //for right-clicks
  39. {
  40. public:
  41. bool pressedR;
  42. virtual void clickRight (tribool down)=0;
  43. virtual void activate()=0;
  44. virtual void deactivate()=0;
  45. };
  46. class Hoverable : public virtual CIntObject
  47. {
  48. public:
  49. bool hovered;
  50. virtual void hover (bool on)=0;
  51. virtual void activate()=0;
  52. virtual void deactivate()=0;
  53. };
  54. class KeyInterested : public virtual CIntObject
  55. {
  56. public:
  57. virtual void keyPressed (SDL_KeyboardEvent & key)=0;
  58. virtual void activate()=0;
  59. virtual void deactivate()=0;
  60. };
  61. class CGameInterface
  62. {
  63. public:
  64. bool human;
  65. int playerID, serialID;
  66. virtual void yourTurn()=0{};
  67. };
  68. class CGlobalAI : public CGameInterface // callback for AI
  69. {
  70. public:
  71. virtual void yourTurn(){};
  72. };
  73. class CPlayerInterface : public CGameInterface
  74. {
  75. public:
  76. CAdvMapInt * adventureInt;
  77. //TODO: town interace, battle interface, other interfaces
  78. std::vector<ClickableL*> lclickable;
  79. std::vector<ClickableR*> rclickable;
  80. std::vector<Hoverable*> hoverable;
  81. std::vector<KeyInterested*> keyinterested;
  82. void yourTurn();
  83. void handleEvent(SDL_Event * sEvent);
  84. void init();
  85. CPlayerInterface(int Player, int serial);
  86. };
  87. #endif //CGAMEINTERFACE_H