Air-Trap 1.0.0
A multiplayer R-Type clone game engine built with C++23 and ECS architecture
Loading...
Searching...
No Matches
UiFactory.hpp
Go to the documentation of this file.
1
9#ifndef RTYPE_CLIENT_GRAPHICS_UIFACTORY_HPP_
10#define RTYPE_CLIENT_GRAPHICS_UIFACTORY_HPP_
11
19
20#include <cstdint>
21#include <memory>
22#include <string>
23
24namespace rtp::client
25{
26 namespace graphics
27 {
28
34 struct color {
35 uint8_t r;
36 uint8_t g;
37 uint8_t b;
38 };
39
45 struct position {
46 float x;
47 float y;
48 };
49
55 struct size {
56 float width;
57 float height;
58 };
59
72 class UiFactory {
73 public:
74 UiFactory() = default;
75
76 ~UiFactory() = default;
77
90 static ecs::Entity
92 const position &position, const size &size,
93 const std::string &label,
94 std::function<void()> onClick = nullptr);
95
116 static ecs::Entity createText(
117 ecs::Registry &registry, const position &position,
118 const std::string &content, const std::string &fontPath,
119 unsigned int fontSize, const std::uint8_t zIndex = 0,
120 const color &textColor = {255, 255, 255});
121
146 static ecs::Entity
147 createSlider(ecs::Registry &registry,
148 const position &position, const size &size,
149 float minValue, float maxValue,
150 float initialValue,
151 std::function<void(float)> onChange = nullptr);
152
176 ecs::Registry &registry, const position &position,
177 const size &size, const std::vector<std::string> &options,
178 const int selectedIndex,
179 std::function<void(int index)> onSelect = nullptr);
180
208 ecs::Registry &registry, const position &position,
209 const size &size, const std::string &fontPath,
210 unsigned int fontSize, const int maxLength = 64,
211 const std::string &placeholder = "",
212 std::function<void(const std::string &)> onSubmit = nullptr,
213 std::function<void(const std::string &)> onChange =
214 nullptr);
215
230 const position& position,
231 const std::string& texturePath,
232 int rectLeft,
233 int rectTop,
234 int rectWidth,
235 int rectHeight,
236 float scale = 2.0f,
237 int zIndex = 0);
238 };
239
240 } // namespace graphics
241} // namespace rtp::client
242
243#endif // RTYPE_CLIENT_GRAPHICS_UIFACTORY_HPP_
Factory class for creating UI components in the ECS registry.
Definition UiFactory.hpp:72
static ecs::Entity createTextInput(ecs::Registry &registry, const position &position, const size &size, const std::string &fontPath, unsigned int fontSize, const int maxLength=64, const std::string &placeholder="", std::function< void(const std::string &)> onSubmit=nullptr, std::function< void(const std::string &)> onChange=nullptr)
static ecs::Entity createSpritePreview(ecs::Registry &registry, const position &position, const std::string &texturePath, int rectLeft, int rectTop, int rectWidth, int rectHeight, float scale=2.0f, int zIndex=0)
Create a sprite preview UI component.
static ecs::Entity createText(ecs::Registry &registry, const position &position, const std::string &content, const std::string &fontPath, unsigned int fontSize, const std::uint8_t zIndex=0, const color &textColor={255, 255, 255})
Definition UiFactory.cpp:43
static ecs::Entity createButton(ecs::Registry &registry, const position &position, const size &size, const std::string &label, std::function< void()> onClick=nullptr)
Create a button UI component.
Definition UiFactory.cpp:17
static ecs::Entity createDropdown(ecs::Registry &registry, const position &position, const size &size, const std::vector< std::string > &options, const int selectedIndex, std::function< void(int index)> onSelect=nullptr)
static ecs::Entity createSlider(ecs::Registry &registry, const position &position, const size &size, float minValue, float maxValue, float initialValue, std::function< void(float)> onChange=nullptr)
Definition UiFactory.cpp:75
Represents an entity in the ECS (Entity-Component-System) architecture.
Definition Entity.hpp:63
R-Type client namespace.
Represents an RGB color.
Definition UiFactory.hpp:34
Represents the position of a UI component.
Definition UiFactory.hpp:45
Represents the size of a UI component.
Definition UiFactory.hpp:55