BaseGUI.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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 Controller& controller;
  13. float scale;
  14. Vector2 scaledSize;
  15. struct Base {
  16. Vector2 pos;
  17. Vector2 size;
  18. bool hovered;
  19. bool pressed;
  20. Base();
  21. };
  22. struct Label {
  23. Base base;
  24. StringBuffer<50> text;
  25. };
  26. List<Label> labels;
  27. struct Input {
  28. Base base;
  29. TextInput text;
  30. };
  31. List<Input> inputs;
  32. struct Button {
  33. Base base;
  34. StringBuffer<20> text;
  35. };
  36. List<Button> buttons;
  37. BaseGUI(const Controller& controller);
  38. void tick();
  39. void updateScale(ShaderMatrix& sm);
  40. void render(float lag, ShaderMatrix& sm, Renderer& r);
  41. Vector2 round(const Vector2& v) const;
  42. void renderString(Renderer& r, const Vector2& pos, const char* s);
  43. Label& addLabel(const char* text);
  44. Input& addInput();
  45. Button& addButton(const char* text);
  46. bool isIn(const Vector2& pos, const Vector2& size,
  47. const Vector2& point) const;
  48. private:
  49. void tickBase(Base& b);
  50. Vector2 renderCenteredString(Renderer& r, const Base& b, const char* text);
  51. void renderBase(Renderer& r, const Base& b);
  52. void renderLabels(Renderer& r);
  53. void renderInputs(Renderer& r);
  54. void renderButtons(Renderer& r);
  55. };
  56. #endif