Implement UIs using RmlUi

This commit is contained in:
Lexi / Zoe 2026-05-10 23:23:40 +02:00
parent 8039b1276e
commit 7f37be386d
Signed by: binaryDiv
GPG key ID: F8D4956E224DA232
27 changed files with 1457 additions and 42 deletions

View file

@ -7,6 +7,7 @@ export module rutile.core.engine;
import rutile.config;
import rutile.core.render_server;
import rutile.core.ui.ui_server;
import wrappers.sdl;
export namespace rutile
@ -21,11 +22,13 @@ export namespace rutile
sdl::Window window_;
RenderServer render_server_;
UIServer ui_server_;
// Private constructor
Engine(sdl::Window&& window, sdl::Renderer&& renderer)
: window_{std::move(window)},
render_server_{std::move(renderer)}
render_server_{std::move(renderer)},
ui_server_{render_server_.get_renderer(), window_}
{
instantiated_ = true;
}
@ -56,12 +59,14 @@ export namespace rutile
0
);
// NOLINTBEGIN: "Allocated memory is leaked"
return std::unique_ptr<Engine>{
new Engine{
std::move(sdl_window),
std::move(sdl_renderer)
}
};
// NOLINTEND
}
bool keep_running() const
@ -79,15 +84,24 @@ export namespace rutile
return render_server_;
}
// Handles an SDL event. Returns true if the event has been handled.
bool handle_event(const sdl::Event* event)
UIServer& get_ui_server()
{
if (event->type == sdl::EventType::Quit) {
return ui_server_;
}
// Handles an SDL event. Returns true if the event has been handled.
bool handle_event(const sdl::Event& event)
{
if (event.type == sdl::EventTypes::Quit) {
// Exit the application
keep_running_ = false;
return true;
}
if (ui_server_.handle_event(event)) {
return true;
}
return false;
}