From 4404936dfdf67c7f3b084406cec81ff72afe2795 Mon Sep 17 00:00:00 2001 From: Benedikt Galbavy Date: Mon, 2 Jun 2025 23:02:13 +0200 Subject: [PATCH] Fixed approach to registering Game implementation --- include/Game.h | 4 ++++ include/GameFactory.h | 3 --- include/GameRegistrar.h | 13 +++++++++++++ include/GameRegistryHelper.h | 24 ------------------------ 4 files changed, 17 insertions(+), 27 deletions(-) create mode 100644 include/GameRegistrar.h delete mode 100644 include/GameRegistryHelper.h diff --git a/include/Game.h b/include/Game.h index d4a8e8a..1ed2abb 100644 --- a/include/Game.h +++ b/include/Game.h @@ -1,5 +1,9 @@ #pragma once +#include +#include +#include + class GameInternal; // TODO: add managers here diff --git a/include/GameFactory.h b/include/GameFactory.h index b1e88ca..7657add 100644 --- a/include/GameFactory.h +++ b/include/GameFactory.h @@ -1,10 +1,7 @@ #pragma once #include -#include -#include #include -#include #include #include "Game.h" diff --git a/include/GameRegistrar.h b/include/GameRegistrar.h new file mode 100644 index 0000000..ae687a4 --- /dev/null +++ b/include/GameRegistrar.h @@ -0,0 +1,13 @@ +#pragma once + +#include "GameFactory.h" + +namespace vego { + template + struct GameRegistrar { + GameRegistrar() { + static_assert(std::is_base_of::value, "Your class must inherit from Game"); + GameFactory::instance().registerClass([]() { return new GameType(); }); + } + }; +} \ No newline at end of file diff --git a/include/GameRegistryHelper.h b/include/GameRegistryHelper.h deleted file mode 100644 index 7042047..0000000 --- a/include/GameRegistryHelper.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include "GameFactory.h" - -namespace vego { - template - class GameRegistryHelper { - public: - [[deprecated("GameRegistryHelper() does not take a className anymore")]] - GameRegistryHelper(const std::string& className) { - static_assert(std::is_base_of::value, "Your class must inherit from Game"); - GameFactory::instance().registerClass( - []() -> Game* { return new T; } - ); - }; - - GameRegistryHelper() { - static_assert(std::is_base_of::value, "Your class must inherit from Game"); - GameFactory::instance().registerClass( - []() -> Game* { return new T; } - ); - }; - }; -} \ No newline at end of file