[deploy] support using modules with callback runner

This commit is contained in:
Nomango 2022-06-07 15:22:53 +08:00
parent f0ed620443
commit 0118220874
2 changed files with 12 additions and 7 deletions

View File

@ -43,7 +43,7 @@ Application::~Application()
{ {
} }
void Application::Run(const Settings& settings, const Function<void()>& setup) void Application::Run(const Settings& settings, const Function<void()>& setup, std::initializer_list<Module*> modules)
{ {
KGE_ASSERT(setup); KGE_ASSERT(setup);
class CallbackRunner : public Runner class CallbackRunner : public Runner
@ -65,6 +65,11 @@ void Application::Run(const Settings& settings, const Function<void()>& setup)
RunnerPtr runner = new CallbackRunner(setup); RunnerPtr runner = new CallbackRunner(setup);
runner->SetName("__KGE_CALLBACK_RUNNER__"); runner->SetName("__KGE_CALLBACK_RUNNER__");
runner->SetSettings(settings); runner->SetSettings(settings);
for (auto m : modules)
{
Use(*m);
}
Run(runner); Run(runner);
} }
@ -156,16 +161,16 @@ void Application::Destroy()
Renderer::GetInstance().Destroy(); Renderer::GetInstance().Destroy();
} }
void Application::Use(Module& module) void Application::Use(Module& m)
{ {
#if defined(KGE_DEBUG) #if defined(KGE_DEBUG)
if (std::find(modules_.begin(), modules_.end(), &module) != modules_.end()) if (std::find(modules_.begin(), modules_.end(), &m) != modules_.end())
{ {
KGE_ASSERT(false && "Module already exists!"); KGE_ASSERT(false && "Module already exists!");
} }
#endif #endif
modules_.push_back(&module); modules_.push_back(&m);
} }
void Application::SetTimeScale(float scale_factor) void Application::SetTimeScale(float scale_factor)

View File

@ -59,7 +59,7 @@ public:
* @param setup * @param setup
* @note * @note
*/ */
void Run(const Settings& settings, const Function<void()>& setup); void Run(const Settings& settings, const Function<void()>& setup, std::initializer_list<Module*> modules = {});
/** /**
* \~chinese * \~chinese
@ -96,9 +96,9 @@ public:
/** /**
* \~chinese * \~chinese
* @brief * @brief
* @param[in] module Ä£¿é * @param[in] m Ä£¿é
*/ */
void Use(Module& module); void Use(Module& m);
/** /**
* \~chinese * \~chinese