1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #ifndef BASE_GUI_H
- #define BASE_GUI_H
- #include "client/input/Controller.h"
- #include "client/rendering/Renderer.h"
- #include "client/rendering/ShaderMatrix.h"
- #include "input/TextInput.h"
- #include "math/Vector.h"
- #include "utils/List.h"
- #include "utils/Size.h"
- struct BaseGUI final {
- static const Vector2 FIXED_SIZE;
- const Controller& controller;
- float scale;
- Vector2 scaledSize;
- struct Base {
- Vector2 pos;
- Vector2 size;
- bool hovered;
- bool pressed;
- Base();
- };
- struct Label {
- Base base;
- StringBuffer<50> text;
- };
- List<Label> labels;
- struct Input {
- Base base;
- TextInput text;
- };
- List<Input> inputs;
- struct Button {
- Base base;
- StringBuffer<20> text;
- };
- List<Button> buttons;
- BaseGUI(const Controller& controller);
- void tick();
- void updateScale(ShaderMatrix& sm);
- void render(float lag, ShaderMatrix& sm, Renderer& r);
- Vector2 round(const Vector2& v) const;
- void renderString(Renderer& r, const Vector2& pos, const char* s);
- Label& addLabel(const char* text);
- Input& addInput();
- Button& addButton(const char* text);
- bool isIn(const Vector2& pos, const Vector2& size,
- const Vector2& point) const;
- private:
- void tickBase(Base& b);
- Vector2 renderCenteredString(Renderer& r, const Base& b, const char* text);
- void renderBase(Renderer& r, const Base& b);
- void renderLabels(Renderer& r);
- void renderInputs(Renderer& r);
- void renderButtons(Renderer& r);
- };
- #endif
|