From 93d5c55c683175ca00e483975117b36b4445faa7 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Tue, 18 Jul 2023 15:34:46 +0300 Subject: [PATCH] Add new resources system in app library --- libs/app/include/psemek/app/resource.hpp | 17 +++++++++++++++++ libs/app/source/resource.cpp | 24 ++++++++++++++++++++++++ libs/sdl2/source/resource.cpp | 12 ++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 libs/app/include/psemek/app/resource.hpp create mode 100644 libs/app/source/resource.cpp create mode 100644 libs/sdl2/source/resource.cpp diff --git a/libs/app/include/psemek/app/resource.hpp b/libs/app/include/psemek/app/resource.hpp new file mode 100644 index 00000000..1eeb7262 --- /dev/null +++ b/libs/app/include/psemek/app/resource.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include + +#include +#include + +namespace psemek::app +{ + + std::filesystem::path resource_root(); + void set_resource_root(std::filesystem::path const & root); + + // Implemented by a backend library + std::unique_ptr open_resource(std::filesystem::path const & relative_path); + +} diff --git a/libs/app/source/resource.cpp b/libs/app/source/resource.cpp new file mode 100644 index 00000000..1e488932 --- /dev/null +++ b/libs/app/source/resource.cpp @@ -0,0 +1,24 @@ +#include +#include + +namespace psemek::app +{ + + namespace + { + + static std::filesystem::path global_resource_root = util::executable_path().parent_path(); + + } + + std::filesystem::path resource_root() + { + return global_resource_root; + } + + void set_resource_root(std::filesystem::path const & root) + { + global_resource_root = root; + } + +} diff --git a/libs/sdl2/source/resource.cpp b/libs/sdl2/source/resource.cpp new file mode 100644 index 00000000..19a73aaa --- /dev/null +++ b/libs/sdl2/source/resource.cpp @@ -0,0 +1,12 @@ +#include +#include + +namespace psemek::app +{ + + std::unique_ptr open_resource(std::filesystem::path const & relative_path) + { + return std::make_unique(app::resource_root() / relative_path); + } + +}