aboutsummaryrefslogtreecommitdiff
path: root/src/engine
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/game_initializer.cpp8
-rw-r--r--src/engine/game_initializer.hpp10
2 files changed, 10 insertions, 8 deletions
diff --git a/src/engine/game_initializer.cpp b/src/engine/game_initializer.cpp
index 52e109a..13d9ba0 100644
--- a/src/engine/game_initializer.cpp
+++ b/src/engine/game_initializer.cpp
@@ -7,10 +7,10 @@
GameInitializer::GameInitializer(std::shared_ptr<IScene> scene,
std::shared_ptr<IInputHandler> input_handler,
- std::shared_ptr<IGame> game)
+ IGameFactory game_factory)
: _scene(std::move(scene)),
_input_handler(std::move(input_handler)),
- _game(std::move(game))
+ _game_factory(game_factory)
{
}
@@ -26,5 +26,7 @@ void GameInitializer::initialize()
_input_handler->leave_raw_mode();
}));
- _game->run(*_scene, *_input_handler);
+ auto game = _game_factory();
+
+ game->run(*_scene, *_input_handler);
}
diff --git a/src/engine/game_initializer.hpp b/src/engine/game_initializer.hpp
index 12b42de..2f63e0f 100644
--- a/src/engine/game_initializer.hpp
+++ b/src/engine/game_initializer.hpp
@@ -8,19 +8,19 @@
#include <memory>
-class GameInitializer
- : public IGameInitializer,
- public AutoWirable<IGameInitializer, GameInitializer, IScene, IInputHandler, IGame>
+class GameInitializer : public IGameInitializer,
+ public AutoWirable<IGameInitializer, GameInitializer, IScene,
+ IInputHandler, IGameFactory>
{
public:
GameInitializer(std::shared_ptr<IScene> scene,
std::shared_ptr<IInputHandler> input_handler,
- std::shared_ptr<IGame> game);
+ IGameFactory game_factory);
void initialize() override;
private:
std::shared_ptr<IScene> _scene;
std::shared_ptr<IInputHandler> _input_handler;
- std::shared_ptr<IGame> _game;
+ IGameFactory _game_factory;
};