diff --git a/assets/test_file.json b/assets/test_file.json new file mode 100644 index 0000000..cfcb15c --- /dev/null +++ b/assets/test_file.json @@ -0,0 +1 @@ +"hello world" \ No newline at end of file diff --git a/src/app.cpp b/src/app.cpp index 2c7b1c0..cd12bb8 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -1,5 +1,7 @@ #include #include +#include +#include namespace miracle { namespace { @@ -8,7 +10,13 @@ constexpr auto context_ci = le::Context::CreateInfo{ }; } // namespace -App::App() : m_context(context_ci) {} +App::App() : m_context(context_ci), m_data_loader(le::FileDataLoader::upfind("assets")) { + bind_services(); + + // test code, remove later. + auto json = dj::Json{}; + if (m_services.get().load_json(json, "test_file.json")) { log.info("loaded JSON: {}", json); } +} void App::run() { while (m_context.is_running()) { @@ -19,4 +27,11 @@ void App::run() { m_context.present(); } } + +void App::bind_services() { + m_services.bind(&m_context); + // m_data_loader is bound to both the interface and the concrete class for use through either type. + m_services.bind(&m_data_loader); + m_services.bind(&m_data_loader); +} } // namespace miracle diff --git a/src/app.hpp b/src/app.hpp index ca472af..de44f45 100644 --- a/src/app.hpp +++ b/src/app.hpp @@ -1,5 +1,7 @@ #pragma once #include +#include +#include namespace miracle { class App { @@ -9,6 +11,11 @@ class App { void run(); private: + void bind_services(); + le::Context m_context; + le::FileDataLoader m_data_loader{}; + + le::ServiceLocator m_services{}; }; } // namespace miracle