CGameInterface.h 2.1 KB

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