From 10191202df1956b9a75a48af7c7a175477e895c3 Mon Sep 17 00:00:00 2001 From: Alexis Maiquez Date: Wed, 16 Jun 2021 18:10:05 +0200 Subject: [PATCH] + added light element type to the detection list, not supported yet + added PKGV0004, PKGV0005, PKGV0006 to the list Signed-off-by: Alexis Maiquez --- src/WallpaperEngine/Core/CObject.cpp | 14 +++++++++--- src/WallpaperEngine/Irrlicht/CPkgReader.cpp | 25 +++++++++++---------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/src/WallpaperEngine/Core/CObject.cpp b/src/WallpaperEngine/Core/CObject.cpp index 29d2563..4bdc054 100644 --- a/src/WallpaperEngine/Core/CObject.cpp +++ b/src/WallpaperEngine/Core/CObject.cpp @@ -27,6 +27,8 @@ CObject::CObject ( CObject* CObject::fromJSON (json data) { + std::string json = data.dump (); + auto id_it = jsonFindRequired (data, "id", "Objects must have id"); auto visible_it = data.find ("visible"); auto origin_it = jsonFindRequired (data, "origin", "Objects must have origin point"); @@ -57,6 +59,7 @@ CObject* CObject::fromJSON (json data) auto sound_it = data.find ("sound"); auto particle_it = data.find ("particle"); auto text_it = data.find ("text"); + auto light_it = data.find ("light"); CObject* object = nullptr; @@ -72,7 +75,7 @@ CObject* CObject::fromJSON (json data) WallpaperEngine::Core::ato3vf (*angles_it) ); } - else if (sound_it != data.end ()) + else if (sound_it != data.end () && (*sound_it).is_null () == false) { object = Objects::CSound::fromJSON ( data, @@ -84,7 +87,7 @@ CObject* CObject::fromJSON (json data) WallpaperEngine::Core::ato3vf (*angles_it) ); } - else if (particle_it != data.end ()) + else if (particle_it != data.end () && (*particle_it).is_null () == false) { /// TODO: XXXHACK -- TO REMOVE WHEN PARTICLE SUPPORT IS PROPERLY IMPLEMENTED try @@ -102,11 +105,16 @@ CObject* CObject::fromJSON (json data) return nullptr; } } - else if (text_it != data.end ()) + else if (text_it != data.end () && (*text_it).is_null () == false) { /// TODO: XXXHACK -- TO REMOVE WHEN TEXT SUPPORT IS IMPLEMENTED return nullptr; } + else if (light_it != data.end () && (*light_it).is_null () == false) + { + /// TODO: XXXHACK -- TO REMOVE WHEN LIGHT SUPPORT IS IMPLEMENTED + return nullptr; + } else { throw std::runtime_error (std::string ("Unkonwn object type detected ").append (*name_it)); diff --git a/src/WallpaperEngine/Irrlicht/CPkgReader.cpp b/src/WallpaperEngine/Irrlicht/CPkgReader.cpp index 9b01d6b..f8b1922 100644 --- a/src/WallpaperEngine/Irrlicht/CPkgReader.cpp +++ b/src/WallpaperEngine/Irrlicht/CPkgReader.cpp @@ -2,6 +2,17 @@ namespace WallpaperEngine::Irrlicht { + bool isPkgHeaderVersionValid(char* version) + { + return strcmp ("PKGV0007", version) == 0 || + strcmp ("PKGV0002", version) == 0 || + strcmp ("PKGV0001", version) == 0 || + strcmp ("PKGV0008", version) == 0 || + strcmp ("PKGV0009", version) == 0 || + strcmp ("PKGV0004", version) == 0 || + strcmp ("PKGV0005", version) == 0 || + strcmp ("PKGV0006", version) == 0; + } CArchiveLoaderPkg::CArchiveLoaderPkg (CContext* context) : m_context (context) @@ -59,12 +70,7 @@ namespace WallpaperEngine::Irrlicht file->read (pointer, size - 1); - if ( - strcmp ("PKGV0007", pointer) != 0 && - strcmp ("PKGV0002", pointer) != 0 && - strcmp ("PKGV0001", pointer) != 0 && - strcmp ("PKGV0008", pointer) != 0 && - strcmp ("PKGV0009", pointer) != 0) + if (isPkgHeaderVersionValid (pointer) == false) { delete [] pointer; return false; @@ -112,12 +118,7 @@ namespace WallpaperEngine::Irrlicht { char* headerVersion = this->readSizedString (); - if ( - strcmp ("PKGV0007", headerVersion) != 0 && - strcmp ("PKGV0002", headerVersion) != 0 && - strcmp ("PKGV0001", headerVersion) != 0 && - strcmp ("PKGV0008", headerVersion) != 0 && - strcmp ("PKGV0009", headerVersion) != 0) + if (isPkgHeaderVersionValid (headerVersion) == false) { delete [] headerVersion;