hgeguictrls.h
上传用户:jnfxsk
上传日期:2022-06-16
资源大小:3675k
文件大小:4k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. /*
  2. ** Haaf's Game Engine 1.7
  3. ** Copyright (C) 2003-2007, Relish Games
  4. ** hge.relishgames.com
  5. **
  6. ** hgeGUI default controls header
  7. */
  8. #ifndef HGEGUICTRLS_H
  9. #define HGEGUICTRLS_H
  10. #include "hge.h"
  11. #include "hgesprite.h"
  12. #include "hgefont.h"
  13. #include "hgerect.h"
  14. #include "hgegui.h"
  15. #define hgeButtonGetState(gui,id) ((hgeGUIButton*)gui->GetCtrl(id))->GetState()
  16. #define hgeButtonSetState(gui,id,b) ((hgeGUIButton*)gui->GetCtrl(id))->SetState(b)
  17. #define hgeSliderGetValue(gui,id) ((hgeGUISlider*)gui->GetCtrl(id))->GetValue()
  18. #define hgeSliderSetValue(gui,id,f) ((hgeGUISlider*)gui->GetCtrl(id))->SetValue(f)
  19. #define hgeGetTextCtrl(gui,id) ((hgeGUIText*)gui->GetCtrl(id))
  20. #define hgeGetListboxCtrl(gui,id) ((hgeGUIListbox*)gui->GetCtrl(id))
  21. /*
  22. ** hgeGUIText
  23. */
  24. class hgeGUIText : public hgeGUIObject
  25. {
  26. public:
  27. hgeGUIText(int id, float x, float y, float w, float h, hgeFont *fnt);
  28. void SetMode(int _align);
  29. void SetText(const char *_text);
  30. void printf(const char *format, ...);
  31. virtual void Render();
  32. private:
  33. hgeFont* font;
  34. float tx, ty;
  35. int align;
  36. char text[256];
  37. };
  38. /*
  39. ** hgeGUIButton
  40. */
  41. class hgeGUIButton : public hgeGUIObject
  42. {
  43. public:
  44. hgeGUIButton(int id, float x, float y, float w, float h, HTEXTURE tex, float tx, float ty);
  45. virtual ~hgeGUIButton();
  46. void SetMode(bool _bTrigger) { bTrigger=_bTrigger; }
  47. void SetState(bool _bPressed) { bPressed=_bPressed; }
  48. bool GetState() const { return bPressed; }
  49. virtual void Render();
  50. virtual bool MouseLButton(bool bDown);
  51. private:
  52. bool bTrigger;
  53. bool bPressed;
  54. bool bOldState;
  55. hgeSprite *sprUp, *sprDown;
  56. };
  57. /*
  58. ** hgeGUISlider
  59. */
  60. #define HGESLIDER_BAR 0
  61. #define HGESLIDER_BARRELATIVE 1
  62. #define HGESLIDER_SLIDER 2
  63. class hgeGUISlider : public hgeGUIObject
  64. {
  65. public:
  66. hgeGUISlider(int id, float x, float y, float w, float h, HTEXTURE tex, float tx, float ty, float sw, float sh, bool vertical=false);
  67. virtual ~hgeGUISlider();
  68. void SetMode(float _fMin, float _fMax, int _mode) { fMin=_fMin; fMax=_fMax; mode=_mode; }
  69. void SetValue(float _fVal);
  70. float GetValue() const { return fVal; }
  71. virtual void Render();
  72. virtual bool MouseMove(float x, float y);
  73. virtual bool MouseLButton(bool bDown);
  74. private:
  75. bool bPressed;
  76. bool bVertical;
  77. int mode;
  78. float fMin, fMax, fVal;
  79. float sl_w, sl_h;
  80. hgeSprite *sprSlider;
  81. };
  82. /*
  83. ** hgeGUIListbox
  84. */
  85. struct hgeGUIListboxItem
  86. {
  87. char text[64];
  88. hgeGUIListboxItem *next;
  89. };
  90. class hgeGUIListbox : public hgeGUIObject
  91. {
  92. public:
  93. hgeGUIListbox(int id, float x, float y, float w, float h, hgeFont *fnt, DWORD tColor, DWORD thColor, DWORD hColor);
  94. virtual ~hgeGUIListbox();
  95. int AddItem(char *item);
  96. void DeleteItem(int n);
  97. int GetSelectedItem() { return nSelectedItem; }
  98. void SetSelectedItem(int n) { if(n>=0 && n<GetNumItems()) nSelectedItem=n; }
  99. int GetTopItem() { return nTopItem; }
  100. void SetTopItem(int n) { if(n>=0 && n<=GetNumItems()-GetNumRows()) nTopItem=n; }
  101. char *GetItemText(int n);
  102. int GetNumItems() { return nItems; }
  103. int GetNumRows() { return int((rect.y2-rect.y1)/font->GetHeight()); }
  104. void Clear();
  105. virtual void Render();
  106. virtual bool MouseMove(float x, float y) { mx=x; my=y; return false; }
  107. virtual bool MouseLButton(bool bDown);
  108. virtual bool MouseWheel(int nNotches);
  109. virtual bool KeyClick(int key, int chr);
  110. private:
  111. hgeSprite *sprHighlight;
  112. hgeFont *font;
  113. DWORD textColor, texthilColor;
  114. int nItems, nSelectedItem, nTopItem;
  115. float mx, my;
  116. hgeGUIListboxItem *pItems;
  117. };
  118. #endif