Refactor: Move code to rutile module and namespace
This commit is contained in:
parent
bb43d308c0
commit
8039b1276e
12 changed files with 59 additions and 59 deletions
10
src/main.cpp
10
src/main.cpp
|
|
@ -1,30 +1,30 @@
|
|||
import app;
|
||||
import rutile.app;
|
||||
|
||||
#define SDL_MAIN_USE_CALLBACKS
|
||||
#include <SDL3/SDL_main.h>
|
||||
|
||||
SDL_AppResult SDL_AppInit(void** appstate, const int /*argc*/, char** /*argv*/)
|
||||
{
|
||||
auto* app = new App;
|
||||
auto* app = new rutile::App;
|
||||
*appstate = app;
|
||||
return static_cast<SDL_AppResult>(app->initialize());
|
||||
}
|
||||
|
||||
SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event)
|
||||
{
|
||||
auto* app = static_cast<App*>(appstate);
|
||||
auto* app = static_cast<rutile::App*>(appstate);
|
||||
return static_cast<SDL_AppResult>(app->handle_event(event));
|
||||
}
|
||||
|
||||
SDL_AppResult SDL_AppIterate(void* appstate)
|
||||
{
|
||||
auto* app = static_cast<App*>(appstate);
|
||||
auto* app = static_cast<rutile::App*>(appstate);
|
||||
return static_cast<SDL_AppResult>(app->iterate());
|
||||
}
|
||||
|
||||
void SDL_AppQuit(void* appstate, const SDL_AppResult /*result*/)
|
||||
{
|
||||
const auto* app = static_cast<App*>(appstate);
|
||||
const auto* app = static_cast<rutile::App*>(appstate);
|
||||
app->shutdown();
|
||||
delete app;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,19 +4,19 @@ module;
|
|||
#include <memory>
|
||||
#include <SDL3/SDL.h>
|
||||
|
||||
export module app;
|
||||
export module rutile.app;
|
||||
|
||||
import config;
|
||||
import core.engine;
|
||||
import game.game;
|
||||
import rutile.config;
|
||||
import rutile.core.engine;
|
||||
import rutile.game.game;
|
||||
import wrappers.sdl;
|
||||
|
||||
export
|
||||
export namespace rutile
|
||||
{
|
||||
class App
|
||||
{
|
||||
std::unique_ptr<core::Engine> engine_{nullptr};
|
||||
std::unique_ptr<game::Game> game_{nullptr};
|
||||
std::unique_ptr<Engine> engine_{nullptr};
|
||||
std::unique_ptr<Game> game_{nullptr};
|
||||
|
||||
public:
|
||||
App() = default;
|
||||
|
|
@ -37,8 +37,8 @@ export
|
|||
sdl::Init(sdl::InitFlags::Video | sdl::InitFlags::Events);
|
||||
|
||||
// Create engine (includes window and renderer) and game state
|
||||
engine_ = core::Engine::create();
|
||||
game_ = game::Game::create(*engine_);
|
||||
engine_ = Engine::create();
|
||||
game_ = Game::create(*engine_);
|
||||
}
|
||||
catch (const std::runtime_error& e) {
|
||||
std::cerr << "Unhandled exception during initialization: " << e.what() << '\n';
|
||||
|
|
@ -8,9 +8,9 @@ module;
|
|||
#define DEBUG_BOOL true
|
||||
#endif
|
||||
|
||||
export module config;
|
||||
export module rutile.config;
|
||||
|
||||
export namespace config
|
||||
export namespace rutile::config
|
||||
{
|
||||
constexpr auto debug = DEBUG_BOOL;
|
||||
|
||||
|
|
@ -4,12 +4,12 @@ module;
|
|||
#include <optional>
|
||||
#include <string>
|
||||
|
||||
export module core.drawing.sprite;
|
||||
export module rutile.core.drawing.sprite;
|
||||
|
||||
import core.render_server;
|
||||
import rutile.core.render_server;
|
||||
import wrappers.sdl;
|
||||
|
||||
export namespace core
|
||||
export namespace rutile
|
||||
{
|
||||
class Sprite
|
||||
{
|
||||
|
|
@ -4,13 +4,13 @@ module;
|
|||
#include <cstddef>
|
||||
#include <memory>
|
||||
|
||||
export module core.drawing.tile_map;
|
||||
export module rutile.core.drawing.tile_map;
|
||||
|
||||
import core.drawing.tile_set;
|
||||
import core.render_server;
|
||||
import rutile.core.drawing.tile_set;
|
||||
import rutile.core.render_server;
|
||||
import wrappers.sdl;
|
||||
|
||||
export namespace core
|
||||
export namespace rutile
|
||||
{
|
||||
// Restrict map size to 16 bit per dimension, so that width*height still fits within size_t
|
||||
using MapCoord = uint16_t;
|
||||
|
|
@ -5,12 +5,12 @@ module;
|
|||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
export module core.drawing.tile_set;
|
||||
export module rutile.core.drawing.tile_set;
|
||||
|
||||
import core.render_server;
|
||||
import rutile.core.render_server;
|
||||
import wrappers.sdl;
|
||||
|
||||
export namespace core
|
||||
export namespace rutile
|
||||
{
|
||||
using TileSetID = unsigned int;
|
||||
using TileID = unsigned int;
|
||||
|
|
@ -3,13 +3,13 @@ module;
|
|||
#include <cassert>
|
||||
#include <memory>
|
||||
|
||||
export module core.engine;
|
||||
export module rutile.core.engine;
|
||||
|
||||
import config;
|
||||
import core.render_server;
|
||||
import rutile.config;
|
||||
import rutile.core.render_server;
|
||||
import wrappers.sdl;
|
||||
|
||||
export namespace core
|
||||
export namespace rutile
|
||||
{
|
||||
class Engine
|
||||
{
|
||||
|
|
@ -3,13 +3,13 @@ module;
|
|||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
export module core.render_server;
|
||||
export module rutile.core.render_server;
|
||||
|
||||
import core.resource_manager;
|
||||
import core.texture_loader;
|
||||
import rutile.core.resource_manager;
|
||||
import rutile.core.texture_loader;
|
||||
import wrappers.sdl;
|
||||
|
||||
export namespace core
|
||||
export namespace rutile
|
||||
{
|
||||
using TextureID = unsigned int;
|
||||
using TextureManager = ResourceManager<TextureID, sdl::Texture, TextureLoader>;
|
||||
|
|
@ -6,9 +6,9 @@ module;
|
|||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
export module core.resource_manager;
|
||||
export module rutile.core.resource_manager;
|
||||
|
||||
export namespace core
|
||||
export namespace rutile
|
||||
{
|
||||
template <typename ResourceLoaderType, typename ResourceType>
|
||||
concept IsResourceLoader = requires(ResourceLoaderType loader, const std::string& name)
|
||||
|
|
@ -2,13 +2,13 @@ module;
|
|||
|
||||
#include <string>
|
||||
|
||||
export module core.texture_loader;
|
||||
export module rutile.core.texture_loader;
|
||||
|
||||
import core.resource_manager;
|
||||
import rutile.core.resource_manager;
|
||||
import wrappers.sdl;
|
||||
import wrappers.sdl_image;
|
||||
|
||||
export namespace core
|
||||
export namespace rutile
|
||||
{
|
||||
class TextureLoader
|
||||
{
|
||||
|
|
@ -5,17 +5,17 @@ module;
|
|||
#include <optional>
|
||||
#include <vector>
|
||||
|
||||
export module game.game;
|
||||
export module rutile.game.game;
|
||||
|
||||
import core.drawing.sprite;
|
||||
import core.drawing.tile_map;
|
||||
import core.drawing.tile_set;
|
||||
import core.engine;
|
||||
import core.render_server;
|
||||
import rutile.core.drawing.sprite;
|
||||
import rutile.core.drawing.tile_map;
|
||||
import rutile.core.drawing.tile_set;
|
||||
import rutile.core.engine;
|
||||
import rutile.core.render_server;
|
||||
import wrappers.sdl;
|
||||
import wrappers.sdl_image;
|
||||
|
||||
export namespace game
|
||||
export namespace rutile
|
||||
{
|
||||
class Game
|
||||
{
|
||||
|
|
@ -23,21 +23,21 @@ export namespace game
|
|||
static bool instantiated_;
|
||||
|
||||
// Reference to the engine
|
||||
core::Engine& engine_;
|
||||
Engine& engine_;
|
||||
|
||||
// Sprites for testing
|
||||
core::Sprite player_sprite_;
|
||||
std::vector<core::Sprite> sprites_;
|
||||
Sprite player_sprite_;
|
||||
std::vector<Sprite> sprites_;
|
||||
|
||||
// Tile set and tile map (TODO: tile set should be moved to resource manager in engine)
|
||||
core::TileSet tile_set_;
|
||||
core::TileMap tile_map_;
|
||||
TileSet tile_set_;
|
||||
TileMap tile_map_;
|
||||
|
||||
// Private constructor
|
||||
explicit Game(core::Engine& engine)
|
||||
explicit Game(Engine& engine)
|
||||
: engine_(engine),
|
||||
player_sprite_{
|
||||
core::Sprite::create_from_texture(
|
||||
Sprite::create_from_texture(
|
||||
engine_.get_render_server(),
|
||||
"assets/sprites/neocat_64.png",
|
||||
std::nullopt,
|
||||
|
|
@ -46,7 +46,7 @@ export namespace game
|
|||
)
|
||||
},
|
||||
tile_set_{
|
||||
core::TileSet::create_from_texture(
|
||||
TileSet::create_from_texture(
|
||||
engine_.get_render_server(),
|
||||
"assets/tilesets/terrain.png",
|
||||
32,
|
||||
|
|
@ -86,7 +86,7 @@ export namespace game
|
|||
instantiated_ = false;
|
||||
}
|
||||
|
||||
static std::unique_ptr<Game> create(core::Engine& engine)
|
||||
static std::unique_ptr<Game> create(Engine& engine)
|
||||
{
|
||||
// Prevent the class from being instantiated multiple times
|
||||
assert(!instantiated_);
|
||||
|
|
@ -105,7 +105,7 @@ export namespace game
|
|||
|
||||
if (event->type == sdl::EventType::MouseButtonUp) {
|
||||
sprites_.push_back(
|
||||
core::Sprite::create_from_texture(
|
||||
Sprite::create_from_texture(
|
||||
engine_.get_render_server(),
|
||||
"assets/sprites/neofox_64.png",
|
||||
std::nullopt,
|
||||
|
|
@ -132,7 +132,7 @@ export namespace game
|
|||
tile_map_.draw(render_server, tile_set_);
|
||||
|
||||
// Render sprites
|
||||
for (const core::Sprite& sprite : sprites_) {
|
||||
for (const Sprite& sprite : sprites_) {
|
||||
sprite.draw(render_server);
|
||||
}
|
||||
player_sprite_.draw(render_server);
|
||||
|
|
@ -19,7 +19,7 @@ export namespace sdl
|
|||
* Wrapper around SDL_RectEmptyFloat().
|
||||
* @return True if the floating point rectangle takes no space.
|
||||
*/
|
||||
constexpr bool is_empty() const
|
||||
bool is_empty() const
|
||||
{
|
||||
return SDL_RectEmptyFloat(this);
|
||||
}
|
||||
|
|
@ -34,7 +34,7 @@ export namespace sdl
|
|||
* Wrapper around SDL_RectEmpty().
|
||||
* @return True if the rectangle takes no space.
|
||||
*/
|
||||
constexpr bool is_empty() const
|
||||
bool is_empty() const
|
||||
{
|
||||
return SDL_RectEmpty(this);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue