diff --git a/extensions/include/extensions/extensions.h b/extensions/include/extensions/extensions.h index f43d4ae4..215bf80a 100644 --- a/extensions/include/extensions/extensions.h +++ b/extensions/include/extensions/extensions.h @@ -5,12 +5,9 @@ #include #include #include -#include namespace Extensions { -extern std::vector enabledExtensions; - constexpr const char* availableExtensions[] = {"extensions:texture loader"}; LEGO1_EXPORT void Enable(const char* p_key); @@ -21,7 +18,7 @@ struct Extension { static auto Call(Function&& function, Args&&... args) -> std::optional> { #ifdef EXTENSIONS - if (std::find(enabledExtensions.begin(), enabledExtensions.end(), T::key) != enabledExtensions.end()) { + if (T::enabled) { return std::invoke(std::forward(function), std::forward(args)...); } #endif diff --git a/extensions/include/extensions/textureloader.h b/extensions/include/extensions/textureloader.h index a487ddc6..649c6112 100644 --- a/extensions/include/extensions/textureloader.h +++ b/extensions/include/extensions/textureloader.h @@ -7,9 +7,8 @@ namespace Extensions { class TextureLoader { public: - static constexpr const char* key = "extensions:texture loader"; - static bool PatchTexture(LegoTextureInfo* p_textureInfo); + static bool enabled; private: static constexpr const char* texturePath = "/textures/"; diff --git a/extensions/src/extensions.cpp b/extensions/src/extensions.cpp index 465c8b04..e1d0c389 100644 --- a/extensions/src/extensions.cpp +++ b/extensions/src/extensions.cpp @@ -1,12 +1,19 @@ #include "extensions/extensions.h" +#include "extensions/textureloader.h" + #include -std::vector Extensions::enabledExtensions; - void Extensions::Enable(const char* p_key) { - enabledExtensions.emplace_back(p_key); + for (const char* key : availableExtensions) { + if (!SDL_strcasecmp(p_key, key)) { + if (!SDL_strcasecmp(p_key, "extensions:texture loader")) { + TextureLoader::enabled = true; + } - SDL_Log("Enabled extension: %s", p_key); + SDL_Log("Enabled extension: %s", p_key); + break; + } + } } diff --git a/extensions/src/textureloader.cpp b/extensions/src/textureloader.cpp index 65d50db6..ee057997 100644 --- a/extensions/src/textureloader.cpp +++ b/extensions/src/textureloader.cpp @@ -2,6 +2,8 @@ using namespace Extensions; +bool TextureLoader::enabled = false; + bool TextureLoader::PatchTexture(LegoTextureInfo* p_textureInfo) { SDL_Surface* surface = FindTexture(p_textureInfo->m_name);