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

游戏引擎

开发平台:

Visual C++

  1. /*
  2. ** Haaf's Game Engine 1.5
  3. ** Copyright (C) 2003-2004, 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. void SetColor(DWORD _col) { col=_col; }
  32. virtual void Render();
  33. private:
  34. hgeFont* font;
  35. float tx, ty;
  36. int align;
  37. char text[256];
  38. DWORD col;
  39. };
  40. /*
  41. ** hgeGUIButton
  42. */
  43. class hgeGUIButton : public hgeGUIObject
  44. {
  45. public:
  46. hgeGUIButton(int id, float x, float y, float w, float h, HTEXTURE tex, float tx, float ty);
  47. virtual ~hgeGUIButton();
  48. void SetMode(bool _bTrigger) { bTrigger=_bTrigger; }
  49. void SetState(bool _bPressed) { bPressed=_bPressed; }
  50. bool GetState() const { return bPressed; }
  51. virtual void Render();
  52. virtual bool MouseLButton(bool bDown);
  53. private:
  54. bool bTrigger;
  55. bool bPressed;
  56. bool bOldState;
  57. hgeSprite *sprUp, *sprDown;
  58. };
  59. /*
  60. ** hgeGUISlider
  61. */
  62. #define HGESLIDER_BAR 0
  63. #define HGESLIDER_BARRELATIVE 1
  64. #define HGESLIDER_SLIDER 2
  65. class hgeGUISlider : public hgeGUIObject
  66. {
  67. public:
  68. hgeGUISlider(int id, float x, float y, float w, float h, HTEXTURE tex, float tx, float ty, float sw, float sh, bool vertical=false);
  69. virtual ~hgeGUISlider();
  70. void SetMode(float _fMin, float _fMax, int _mode) { fMin=_fMin; fMax=_fMax; mode=_mode; }
  71. void SetValue(float _fVal);
  72. float GetValue() const { return fVal; }
  73. virtual void Render();
  74. virtual bool MouseMove(float x, float y);
  75. virtual bool MouseLButton(bool bDown);
  76. private:
  77. bool bPressed;
  78. bool bVertical;
  79. int mode;
  80. float fMin, fMax, fVal;
  81. float sl_w, sl_h;
  82. hgeSprite *sprSlider;
  83. };
  84. /*
  85. ** hgeGUIListbox
  86. */
  87. struct hgeGUIListboxItem
  88. {
  89. char text[64];
  90. hgeGUIListboxItem *next;
  91. };
  92. class hgeGUIListbox : public hgeGUIObject
  93. {
  94. public:
  95. hgeGUIListbox(int id, float x, float y, float w, float h, hgeFont *fnt, DWORD tColor, DWORD thColor, DWORD hColor);
  96. virtual ~hgeGUIListbox();
  97. int AddItem(char *item);
  98. void DeleteItem(int n);
  99. int GetSelectedItem() { return nSelectedItem; }
  100. void SetSelectedItem(int n) { if(n>=0 && n<GetNumItems()) nSelectedItem=n; }
  101. int GetTopItem() { return nTopItem; }
  102. void SetTopItem(int n) { if(n>=0 && n<=GetNumItems()-GetNumRows()) nTopItem=n; }
  103. char *GetItemText(int n);
  104. int GetNumItems() { return nItems; }
  105. int GetNumRows() { return int((rect.y2-rect.y1)/font->GetHeight()); }
  106. void Clear();
  107. virtual void Render();
  108. virtual bool MouseMove(float x, float y) { mx=x; my=y; return false; }
  109. virtual bool MouseLButton(bool bDown);
  110. virtual bool MouseWheel(int nNotches);
  111. virtual bool KeyClick(int key, int chr);
  112. private:
  113. hgeSprite *sprHighlight;
  114. hgeFont *font;
  115. DWORD textColor, texthilColor;
  116. int nItems, nSelectedItem, nTopItem;
  117. float mx, my;
  118. hgeGUIListboxItem *pItems;
  119. };
  120. #endif