hgegui.h
上传用户:maxiaolivb
上传日期:2022-06-07
资源大小:915k
文件大小:2k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. /*
  2. ** Haaf's Game Engine 1.5
  3. ** Copyright (C) 2003-2004, Relish Games
  4. ** hge.relishgames.com
  5. **
  6. ** hgeGUI helper classes header
  7. */
  8. #ifndef HGEGUI_H
  9. #define HGEGUI_H
  10. #include "hge.h"
  11. #include "hgesprite.h"
  12. #include "hgerect.h"
  13. #define HGEGUI_NONAVKEYS 0
  14. #define HGEGUI_LEFTRIGHT 1
  15. #define HGEGUI_UPDOWN 2
  16. #define HGEGUI_CYCLED 4
  17. class hgeGUI;
  18. /*
  19. ** hgeGUIObject
  20. */
  21. class hgeGUIObject
  22. {
  23. public:
  24. hgeGUIObject() { hge=hgeCreate(HGE_VERSION); }
  25. virtual ~hgeGUIObject() { hge->Release(); }
  26. virtual void Render() = 0;
  27. virtual void Update(float dt) {}
  28. virtual void Enter() {}
  29. virtual void Leave() {}
  30. virtual bool IsDone() { return true; }
  31. virtual void Focus(bool bFocused) {}
  32. virtual void MouseOver(bool bOver) {}
  33. virtual bool MouseMove(float x, float y) { return false; }
  34. virtual bool MouseLButton(bool bDown) { return false; }
  35. virtual bool MouseRButton(bool bDown) { return false; }
  36. virtual bool MouseWheel(int nNotches) { return false; }
  37. virtual bool KeyClick(int key, int chr) { return false; }
  38. int id;
  39. bool bStatic;
  40. bool bVisible;
  41. bool bEnabled;
  42. hgeRect rect;
  43. hgeGUI *gui;
  44. hgeGUIObject *next;
  45. hgeGUIObject *prev;
  46. protected:
  47. hgeGUIObject(const hgeGUIObject &go);
  48. hgeGUIObject& operator= (const hgeGUIObject &go);
  49. static HGE *hge;
  50. };
  51. /*
  52. ** hgeGUI
  53. */
  54. class hgeGUI
  55. {
  56. public:
  57. hgeGUI();
  58. ~hgeGUI();
  59. void AddCtrl(hgeGUIObject *ctrl);
  60. void DelCtrl(int id);
  61. hgeGUIObject* GetCtrl(int id) const;
  62. void MoveCtrl(int id, float x, float y);
  63. void ShowCtrl(int id, bool bVisible);
  64. void EnableCtrl(int id, bool bEnabled);
  65. void SetNavMode(int mode);
  66. void SetCursor(hgeSprite *spr);
  67. void SetFocus(int id);
  68. int GetFocus() const;
  69. void Enter();
  70. void Leave();
  71. int Update(float dt);
  72. void Render();
  73. private:
  74. hgeGUI(const hgeGUI &);
  75. hgeGUI& operator= (const hgeGUI&);
  76. bool ProcessCtrl(hgeGUIObject *ctrl);
  77. static HGE *hge;
  78. hgeGUIObject *ctrls;
  79. hgeGUIObject *ctrlLock;
  80. hgeGUIObject *ctrlFocus;
  81. hgeGUIObject *ctrlOver;
  82. int navmode;
  83. int nEnterLeave;
  84. hgeSprite *sprCursor;
  85. float mx,my;
  86. int nWheel;
  87. bool bLPressed, bLLastPressed;
  88. bool bRPressed, bRLastPressed;
  89. };
  90. #endif