diff --git a/include/maker/presenter.hpp b/include/maker/presenter.hpp index a281896124ac46486921b95271538f2ccc1320e2..b2187c33f78a63943151a58aa005794bf5ddb432 100644 --- a/include/maker/presenter.hpp +++ b/include/maker/presenter.hpp @@ -19,6 +19,8 @@ struct Presenter : public com::Runner protected: + void on_content_changed(File* sender) override; + void initialize() override; void release() override; }; diff --git a/src/presenter.cpp b/src/presenter.cpp index e6a6ffec0bf3b185e88727ccb999dd5a5060557f..783276a22eb4452f31b7023e01564f1e14088ae8 100644 --- a/src/presenter.cpp +++ b/src/presenter.cpp @@ -3,6 +3,7 @@ #include <gfx/index.hpp> #include <osi/index.hpp> #include <com/math_files.hpp> +#include <lfs/index.hpp> namespace mak { @@ -59,6 +60,24 @@ void Presenter::initialize() gfx::object_system()->insert_light(test_box, dir_light); gfx::light_system()->insert_shadow_caster(dir_light, test_box); + + // ----------------------------- + + auto* handle{ lfs::loader()->load({"age", "texture", "font", "Consolas_16.txt"}) }; + if (handle->state() == lfs::ResourceHandle::LOADED) + Presenter::on_content_changed(handle); + else + handle->register_on_content_changed(this); +} + +void Presenter::on_content_changed(File* const sender) +{ + if (lfs::ResourceHandle* const handle = dynamic_cast<lfs::ResourceHandle*>(sender)) + { + ASSUMPTION(handle->state() == lfs::ResourceHandle::LOADED); + std::string const my_loaded_data{ handle->data().begin(), handle->data().end() }; + handle->unregister_on_content_changed(this); + } } void Presenter::release()