From f2a5ece845f12689e784e9a03c36cab57939ad8a Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 19 Feb 2024 02:15:19 +0300 Subject: [PATCH] new content source - user-dir/content --- src/content/ContentPack.cpp | 23 +++++++++++++++++------ src/content/ContentPack.h | 18 ++++++++++++++---- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/content/ContentPack.cpp b/src/content/ContentPack.cpp index ad6587c1..47ff7bde 100644 --- a/src/content/ContentPack.cpp +++ b/src/content/ContentPack.cpp @@ -87,12 +87,14 @@ ContentPack ContentPack::read(fs::path folder) { return pack; } -void ContentPack::scan(fs::path rootfolder, - std::vector& packs) { - if (!fs::is_directory(rootfolder)) { +void ContentPack::scanFolder( + fs::path folder, + std::vector& packs +) { + if (!fs::is_directory(folder)) { return; } - for (auto entry : fs::directory_iterator(rootfolder)) { + for (auto entry : fs::directory_iterator(folder)) { fs::path folder = entry.path(); if (!fs::is_directory(folder)) continue; @@ -109,10 +111,19 @@ void ContentPack::scan(fs::path rootfolder, } } +void ContentPack::scan( + fs::path rootfolder, + EnginePaths* paths, + std::vector& packs +) { + scanFolder(paths->getResources()/fs::path("content"), packs); + scanFolder(paths->getUserfiles()/fs::path("content"), packs); + scanFolder(rootfolder, packs); +} + void ContentPack::scan(EnginePaths* paths, std::vector& packs) { - scan(paths->getResources()/fs::path("content"), packs); - scan(paths->getWorldFolder()/fs::path("content"), packs); + scan(paths->getWorldFolder()/fs::path("content"), paths, packs); } std::vector ContentPack::worldPacksList(fs::path folder) { diff --git a/src/content/ContentPack.h b/src/content/ContentPack.h index ac4a5b79..952dc65b 100644 --- a/src/content/ContentPack.h +++ b/src/content/ContentPack.h @@ -46,10 +46,20 @@ struct ContentPack { static bool is_pack(fs::path folder); static ContentPack read(fs::path folder); - static void scan(fs::path folder, - std::vector& packs); - static void scan(EnginePaths* paths, - std::vector& packs); + static void scanFolder( + fs::path folder, + std::vector& packs + ); + + static void scan( + fs::path folder, + EnginePaths* paths, + std::vector& packs + ); + static void scan( + EnginePaths* paths, + std::vector& packs + ); static std::vector worldPacksList(fs::path folder);