BaseGUI.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #ifndef BASE_GUI_H
  2. #define BASE_GUI_H
  3. #include "client/input/Controller.h"
  4. #include "client/rendering/Renderer.h"
  5. #include "client/rendering/ShaderMatrix.h"
  6. #include "input/TextInput.h"
  7. #include "math/Vector.h"
  8. #include "utils/List.h"
  9. #include "utils/Size.h"
  10. struct BaseGUI final {
  11. static const Vector2 FIXED_SIZE;
  12. const Size& size;
  13. TextInput*& textInput;
  14. const Controller& controller;
  15. float scale;
  16. Vector2 scaledSize;
  17. struct Base {
  18. Vector2 pos;
  19. Vector2 size;
  20. bool hovered;
  21. bool pressed;
  22. Base();
  23. };
  24. struct Label {
  25. Base base;
  26. StringBuffer<50> text;
  27. };
  28. List<Label> labels;
  29. struct Input {
  30. Base base;
  31. TextInput text;
  32. };
  33. List<Input> inputs;
  34. struct Button {
  35. Base base;
  36. StringBuffer<20> text;
  37. };
  38. List<Button> buttons;
  39. BaseGUI(const Size& size, TextInput*& textInput,
  40. const Controller& controller);
  41. void tick();
  42. void updateScale(ShaderMatrix& sm);
  43. void render(float lag, ShaderMatrix& sm, Renderer& r);
  44. Vector2 round(const Vector2& v) const;
  45. void renderString(Renderer& r, const Vector2& pos, const char* s);
  46. Label& addLabel(const char* text);
  47. Input& addInput();
  48. Button& addButton(const char* text);
  49. bool isIn(const Vector2& pos, const Vector2& size,
  50. const Vector2& point) const;
  51. private:
  52. void tickBase(Base& b);
  53. Vector2 renderCenteredString(Renderer& r, const Base& b, const char* text);
  54. void renderBase(Renderer& r, const Base& b);
  55. void renderLabels(Renderer& r);
  56. void renderInputs(Renderer& r);
  57. void renderButtons(Renderer& r);
  58. };
  59. #endif