From 704de1a43d1d2c2384fcb530ca8cbc6bcd17d592 Mon Sep 17 00:00:00 2001 From: fincap Date: Mon, 16 May 2022 19:12:21 +1000 Subject: [PATCH] Created Module Provider stub class. --- mapbuilder-gui.vcxproj | 3 +++ mapbuilder-gui.vcxproj.filters | 9 +++++++++ src/app/ModuleInfo.h | 12 ++++++++++++ src/app/ModuleProvider.cpp | 35 ++++++++++++++++++++++++++++++++++ src/app/ModuleProvider.h | 24 +++++++++++++++++++++++ 5 files changed, 83 insertions(+) create mode 100644 src/app/ModuleInfo.h create mode 100644 src/app/ModuleProvider.cpp create mode 100644 src/app/ModuleProvider.h diff --git a/mapbuilder-gui.vcxproj b/mapbuilder-gui.vcxproj index 75f5bac..6165714 100644 --- a/mapbuilder-gui.vcxproj +++ b/mapbuilder-gui.vcxproj @@ -111,12 +111,15 @@ xcopy /y /d /s "res" "$(OutDir)res\" + + + diff --git a/mapbuilder-gui.vcxproj.filters b/mapbuilder-gui.vcxproj.filters index 3f6d318..b23d25c 100644 --- a/mapbuilder-gui.vcxproj.filters +++ b/mapbuilder-gui.vcxproj.filters @@ -45,6 +45,9 @@ Source Files + + Source Files + @@ -59,5 +62,11 @@ Header Files + + Header Files + + + Header Files + \ No newline at end of file diff --git a/src/app/ModuleInfo.h b/src/app/ModuleInfo.h new file mode 100644 index 0000000..8fbf5c2 --- /dev/null +++ b/src/app/ModuleInfo.h @@ -0,0 +1,12 @@ +#pragma once +#include +#include + +#include + +struct ModuleInfo +{ + std::string name; + mbc::PipelineStage stage; + std::function constructor; +}; diff --git a/src/app/ModuleProvider.cpp b/src/app/ModuleProvider.cpp new file mode 100644 index 0000000..ab05ff3 --- /dev/null +++ b/src/app/ModuleProvider.cpp @@ -0,0 +1,35 @@ +#include "ModuleProvider.h" + +ModuleProvider::ModuleProvider() +{ + loadCoreModules(); + loadAddonModules(); +} + + +std::vector ModuleProvider::getModules() +{ + return _registeredModules; +} + + +ModuleInfo ModuleProvider::getModuleInfo(const std::string& moduleName) +{ + for (auto mod : _registeredModules) + { + if (mod.name == moduleName) + return mod; + } +} + + +void ModuleProvider::loadCoreModules() +{ + // SRUB +} + + +void ModuleProvider::loadAddonModules() +{ + // STUB +} diff --git a/src/app/ModuleProvider.h b/src/app/ModuleProvider.h new file mode 100644 index 0000000..052ed8b --- /dev/null +++ b/src/app/ModuleProvider.h @@ -0,0 +1,24 @@ +#pragma once +#include + +#include + +#include "app\ModuleInfo.h" + +class ModuleProvider +{ +public: + ModuleProvider(); + + std::vector getModules(); + ModuleInfo getModuleInfo(const std::string&); + +private: + std::vector _registeredModules; + + void loadCoreModules(); + + // To be implemented + void loadAddonModules(); + +}; \ No newline at end of file