diff --git a/.gitignore b/.gitignore
index e92ae95..51269c9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,7 +14,3 @@ __pycache__/
/build
/build.ninja
/shuriken.override.yaml
-
-# Dependencies
-/vendor
-!/vendor/README.md
diff --git a/assets/fonts/LatoLatin-Regular.ttf b/assets/fonts/LatoLatin-Regular.ttf
deleted file mode 100644
index bcc5778..0000000
Binary files a/assets/fonts/LatoLatin-Regular.ttf and /dev/null differ
diff --git a/assets/ui/base.rcss b/assets/ui/base.rcss
deleted file mode 100644
index b325039..0000000
--- a/assets/ui/base.rcss
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Base style sheet based on: https://mikke89.github.io/RmlUiDoc/pages/rml/html4_style_sheet.html */
-
-body, div, h1, h2, h3, h4, h5, h6, p, hr, pre {
- display: block;
-}
-
-h1 {
- font-size: 2em;
- margin: .67em 0;
-}
-
-h2 {
- font-size: 1.5em;
- margin: .75em 0;
-}
-
-h3 {
- font-size: 1.17em;
- margin: .83em 0;
-}
-
-h4 {
- margin: 1.12em 0;
-}
-
-h5 {
- font-size: .83em;
- margin: 1.5em 0;
-}
-
-h6 {
- font-size: .75em;
- margin: 1.67em 0;
-}
-
-h1, h2, h3, h4, h5, h6, strong {
- font-weight: bold;
-}
-
-em {
- font-style: italic;
-}
-
-pre {
- white-space: pre;
-}
-
-hr {
- border-width: 1px;
-}
-
-table {
- box-sizing: border-box;
- display: table;
-}
-
-tr {
- box-sizing: border-box;
- display: table-row;
-}
-
-td {
- box-sizing: border-box;
- display: table-cell;
-}
-
-col {
- box-sizing: border-box;
- display: table-column;
-}
-
-colgroup {
- display: table-column-group;
-}
-
-thead, tbody, tfoot {
- display: table-row-group;
-}
-
-tabset tabs {
- display: block;
-}
-
-input {
- background-color: white;
- color: black;
- cursor: text;
-}
diff --git a/assets/ui/main_ui.rml b/assets/ui/main_ui.rml
deleted file mode 100644
index 9dc12f1..0000000
--- a/assets/ui/main_ui.rml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
- Meow!
-
-
diff --git a/shuriken.yaml b/shuriken.yaml
index 0a07b3f..5983465 100644
--- a/shuriken.yaml
+++ b/shuriken.yaml
@@ -1,18 +1,7 @@
defaults:
cpp_standard: c++23
- cpp_flags: >-
- -Wall
- -Wextra
- -pedantic
- -Ivendor/RmlUi/Include
- linker_args: >-
- -lSDL3
- -lSDL3_image
- -lfreetype
- vendor/RmlUi/Build/librmlui_debugger.a
- vendor/RmlUi/Build/librmlui.a
-
-enable_import_std: true
+ cpp_flags: -Wall -Wextra -Werror -pedantic
+ linker_args: -lSDL3 -lSDL3_image
default_target: linux
diff --git a/src/rutile/app.cppm b/src/app.cppm
similarity index 59%
rename from src/rutile/app.cppm
rename to src/app.cppm
index 37deff0..7b59948 100644
--- a/src/rutile/app.cppm
+++ b/src/app.cppm
@@ -1,21 +1,22 @@
module;
-#include
+#include
+#include
+#include
-export module rutile.app;
+export module app;
-import std;
-import rutile.config;
-import rutile.core.engine;
-import rutile.game.game;
+import config;
+import core.engine;
+import game.game;
import wrappers.sdl;
-export namespace rutile
+export
{
class App
{
- std::unique_ptr engine_{nullptr};
- std::unique_ptr game_{nullptr};
+ std::unique_ptr engine_{nullptr};
+ std::unique_ptr game_{nullptr};
public:
App() = default;
@@ -24,20 +25,20 @@ export namespace rutile
{
try {
// Set SDL application metadata
- sdl::set_app_metadata_property(SDL_PROP_APP_METADATA_NAME_STRING, config::app_name);
- sdl::set_app_metadata_property(SDL_PROP_APP_METADATA_VERSION_STRING, config::app_version);
- sdl::set_app_metadata_property(SDL_PROP_APP_METADATA_IDENTIFIER_STRING, config::app_identifier);
- sdl::set_app_metadata_property(SDL_PROP_APP_METADATA_CREATOR_STRING, config::app_creator);
- sdl::set_app_metadata_property(SDL_PROP_APP_METADATA_COPYRIGHT_STRING, config::app_copyright);
- sdl::set_app_metadata_property(SDL_PROP_APP_METADATA_URL_STRING, config::app_url);
- sdl::set_app_metadata_property(SDL_PROP_APP_METADATA_TYPE_STRING, "game");
+ sdl::SetAppMetadataProperty(SDL_PROP_APP_METADATA_NAME_STRING, config::app_name);
+ sdl::SetAppMetadataProperty(SDL_PROP_APP_METADATA_VERSION_STRING, config::app_version);
+ sdl::SetAppMetadataProperty(SDL_PROP_APP_METADATA_IDENTIFIER_STRING, config::app_identifier);
+ sdl::SetAppMetadataProperty(SDL_PROP_APP_METADATA_CREATOR_STRING, config::app_creator);
+ sdl::SetAppMetadataProperty(SDL_PROP_APP_METADATA_COPYRIGHT_STRING, config::app_copyright);
+ sdl::SetAppMetadataProperty(SDL_PROP_APP_METADATA_URL_STRING, config::app_url);
+ sdl::SetAppMetadataProperty(SDL_PROP_APP_METADATA_TYPE_STRING, "game");
// Initialize SDL subsystems
- sdl::initialize_sdl(sdl::InitFlags::Video | sdl::InitFlags::Events);
+ sdl::Init(sdl::InitFlags::Video | sdl::InitFlags::Events);
// Create engine (includes window and renderer) and game state
- engine_ = Engine::create();
- game_ = Game::create(*engine_);
+ engine_ = core::Engine::create();
+ game_ = game::Game::create(*engine_);
}
catch (const std::runtime_error& e) {
std::cerr << "Unhandled exception during initialization: " << e.what() << '\n';
@@ -47,7 +48,7 @@ export namespace rutile
return sdl::AppResult::Continue;
}
- sdl::AppResult handle_event(const sdl::Event& event)
+ sdl::AppResult handle_event(const sdl::Event* event)
{
try {
if (!engine_->handle_event(event)) {
diff --git a/src/rutile/config.cppm b/src/config.cppm
similarity index 91%
rename from src/rutile/config.cppm
rename to src/config.cppm
index 2e36783..0ed9a38 100644
--- a/src/rutile/config.cppm
+++ b/src/config.cppm
@@ -1,16 +1,16 @@
module;
+#include
+
#ifdef NDEBUG
#define DEBUG_BOOL false
#else
#define DEBUG_BOOL true
#endif
-export module rutile.config;
+export module config;
-import std;
-
-export namespace rutile::config
+export namespace config
{
constexpr auto debug = DEBUG_BOOL;
diff --git a/src/rutile/core/drawing/sprite.cppm b/src/core/drawing/sprite.cppm
similarity index 95%
rename from src/rutile/core/drawing/sprite.cppm
rename to src/core/drawing/sprite.cppm
index 1158bde..31224cd 100644
--- a/src/rutile/core/drawing/sprite.cppm
+++ b/src/core/drawing/sprite.cppm
@@ -1,14 +1,15 @@
module;
#include
+#include
+#include
-export module rutile.core.drawing.sprite;
+export module core.drawing.sprite;
-import std;
-import rutile.core.render_server;
+import core.render_server;
import wrappers.sdl;
-export namespace rutile
+export namespace core
{
class Sprite
{
diff --git a/src/rutile/core/drawing/tile_map.cppm b/src/core/drawing/tile_map.cppm
similarity index 94%
rename from src/rutile/core/drawing/tile_map.cppm
rename to src/core/drawing/tile_map.cppm
index de66b2c..31bfbfa 100644
--- a/src/rutile/core/drawing/tile_map.cppm
+++ b/src/core/drawing/tile_map.cppm
@@ -1,18 +1,19 @@
module;
#include
+#include
+#include
-export module rutile.core.drawing.tile_map;
+export module core.drawing.tile_map;
-import std;
-import rutile.core.drawing.tile_set;
-import rutile.core.render_server;
+import core.drawing.tile_set;
+import core.render_server;
import wrappers.sdl;
-export namespace rutile
+export namespace core
{
// Restrict map size to 16 bit per dimension, so that width*height still fits within size_t
- using MapCoord = std::uint16_t;
+ using MapCoord = uint16_t;
class TileMap
{
diff --git a/src/rutile/core/drawing/tile_set.cppm b/src/core/drawing/tile_set.cppm
similarity index 95%
rename from src/rutile/core/drawing/tile_set.cppm
rename to src/core/drawing/tile_set.cppm
index ddad86c..39ba81d 100644
--- a/src/rutile/core/drawing/tile_set.cppm
+++ b/src/core/drawing/tile_set.cppm
@@ -1,14 +1,16 @@
module;
#include
+#include
+#include
+#include
-export module rutile.core.drawing.tile_set;
+export module core.drawing.tile_set;
-import std;
-import rutile.core.render_server;
+import core.render_server;
import wrappers.sdl;
-export namespace rutile
+export namespace core
{
using TileSetID = unsigned int;
using TileID = unsigned int;
diff --git a/src/rutile/core/engine.cppm b/src/core/engine.cppm
similarity index 73%
rename from src/rutile/core/engine.cppm
rename to src/core/engine.cppm
index 984f323..d9bd5ad 100644
--- a/src/rutile/core/engine.cppm
+++ b/src/core/engine.cppm
@@ -1,16 +1,15 @@
module;
#include
+#include
-export module rutile.core.engine;
+export module core.engine;
-import std;
-import rutile.config;
-import rutile.core.render_server;
-import rutile.core.ui.ui_server;
+import config;
+import core.render_server;
import wrappers.sdl;
-export namespace rutile
+export namespace core
{
class Engine
{
@@ -22,13 +21,11 @@ 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)},
- ui_server_{render_server_.get_renderer(), window_}
+ render_server_{std::move(renderer)}
{
instantiated_ = true;
}
@@ -52,21 +49,19 @@ export namespace rutile
// Prevent the class from being instantiated multiple times
assert(!instantiated_);
- auto [sdl_window, sdl_renderer] = sdl::create_window_and_renderer(
+ auto [sdl_window, sdl_renderer] = sdl::CreateWindowAndRenderer(
config::get_window_title(),
config::window_width,
config::window_height,
0
);
- // NOLINTBEGIN: "Allocated memory is leaked"
return std::unique_ptr{
new Engine{
std::move(sdl_window),
std::move(sdl_renderer)
}
};
- // NOLINTEND
}
bool keep_running() const
@@ -84,24 +79,15 @@ export namespace rutile
return render_server_;
}
- UIServer& get_ui_server()
- {
- return ui_server_;
- }
-
// Handles an SDL event. Returns true if the event has been handled.
- bool handle_event(const sdl::Event& event)
+ bool handle_event(const sdl::Event* event)
{
- if (event.type == sdl::EventTypes::Quit) {
+ if (event->type == sdl::EventType::Quit) {
// Exit the application
keep_running_ = false;
return true;
}
- if (ui_server_.handle_event(event)) {
- return true;
- }
-
return false;
}
diff --git a/src/rutile/core/render_server.cppm b/src/core/render_server.cppm
similarity index 91%
rename from src/rutile/core/render_server.cppm
rename to src/core/render_server.cppm
index 7366b13..bcb4c9f 100644
--- a/src/rutile/core/render_server.cppm
+++ b/src/core/render_server.cppm
@@ -1,13 +1,15 @@
module;
-export module rutile.core.render_server;
+#include
+#include
-import std;
-import rutile.core.resource_manager;
-import rutile.core.texture_loader;
+export module core.render_server;
+
+import core.resource_manager;
+import core.texture_loader;
import wrappers.sdl;
-export namespace rutile
+export namespace core
{
using TextureID = unsigned int;
using TextureManager = ResourceManager;
@@ -25,9 +27,7 @@ export namespace rutile
: renderer_{std::move(renderer)},
texture_loader_{renderer_},
texture_manager_{texture_loader_}
- {
- renderer_.set_vsync(1);
- }
+ {}
// No copy or move operations
RenderServer(const RenderServer&) = delete;
diff --git a/src/rutile/core/resource_manager.cppm b/src/core/resource_manager.cppm
similarity index 96%
rename from src/rutile/core/resource_manager.cppm
rename to src/core/resource_manager.cppm
index b73f184..2e947f5 100644
--- a/src/rutile/core/resource_manager.cppm
+++ b/src/core/resource_manager.cppm
@@ -1,12 +1,14 @@
module;
#include
+#include