From 67876c78ccdf5e4e844b3c3ce94035dcd8267b4e Mon Sep 17 00:00:00 2001 From: IceCryptonym Date: Tue, 31 Mar 2020 14:03:03 +1000 Subject: [PATCH] Refactors to allow support for other wallpaper types --- src/WallpaperEngine/Core/CProject.cpp | 2 +- src/WallpaperEngine/Core/CScene.cpp | 20 +++++++++++++++++++- src/WallpaperEngine/Core/CScene.h | 4 +++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/WallpaperEngine/Core/CProject.cpp b/src/WallpaperEngine/Core/CProject.cpp index 0fb84f7..e31a6d4 100644 --- a/src/WallpaperEngine/Core/CProject.cpp +++ b/src/WallpaperEngine/Core/CProject.cpp @@ -24,7 +24,7 @@ CProject* CProject::fromFile (const irr::io::path& filename) CProject* project = new CProject ( *title, *type, - CScene::fromFile ((*file).get ().c_str ()) + CScene::fromFile ((*file).get ().c_str (), (*type).get ().c_str()) ); if (general != content.end ()) diff --git a/src/WallpaperEngine/Core/CScene.cpp b/src/WallpaperEngine/Core/CScene.cpp index b1339ff..bb3cd06 100644 --- a/src/WallpaperEngine/Core/CScene.cpp +++ b/src/WallpaperEngine/Core/CScene.cpp @@ -45,7 +45,21 @@ CScene::CScene ( { } -CScene* CScene::fromFile (const irr::io::path& filename) +CScene* CScene::fromFile (const irr::io::path& filename, const char *type) +{ + if (strcmp(type, "scene") == 0) + { + return loadScene (filename); + } + else if (strcmp(type, "video") == 0) + { + return loadVideo (filename); + } + + throw std::runtime_error("Unsupported wallpaper type"); +} + +CScene* CScene::loadScene (const irr::io::path& filename) { json content = json::parse (WallpaperEngine::FileSystem::loadFullFile (filename)); @@ -105,6 +119,10 @@ CScene* CScene::fromFile (const irr::io::path& filename) return scene; } +CScene* CScene::loadVideo (const irr::io::path& filename) +{ + return nullptr; +} const std::vector& CScene::getObjects () const { diff --git a/src/WallpaperEngine/Core/CScene.h b/src/WallpaperEngine/Core/CScene.h index c9a828c..76a9c8e 100644 --- a/src/WallpaperEngine/Core/CScene.h +++ b/src/WallpaperEngine/Core/CScene.h @@ -20,7 +20,9 @@ namespace WallpaperEngine::Core class CScene { public: - static CScene* fromFile (const irr::io::path& filename); + static CScene* fromFile (const irr::io::path& filename, const char *type); + static CScene* loadScene (const irr::io::path& filename); + static CScene* loadVideo (const irr::io::path& filename); CProject* getProject (); const std::vector& getObjects () const;