From 079b3974dbe8ad319a9d1810245d6d9265adfb69 Mon Sep 17 00:00:00 2001
From: Marek Trtik <trtikm@mail.muni.cz>
Date: Fri, 2 Aug 2024 01:42:34 +0200
Subject: [PATCH] Added lfs tutorial

---
 include/maker/presenter.hpp |  2 ++
 src/presenter.cpp           | 19 +++++++++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/include/maker/presenter.hpp b/include/maker/presenter.hpp
index a281896..b2187c3 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 c6ad96e..f4abdd7 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()
-- 
GitLab