Explorar o código

~ ignore particle loading errors as the required data is not yet 100% clear
+ added support for PKGV0009 packages (should fix #24 for @UltraBlackLinux)

Signed-off-by: Alexis Maiquez <almamu@almamu.com>

Alexis Maiquez %!s(int64=6) %!d(string=hai) anos
pai
achega
d5ee71540d

+ 15 - 7
src/WallpaperEngine/Core/CObject.cpp

@@ -85,13 +85,21 @@ CObject* CObject::fromJSON (json data)
     }
     else if (particle_it != data.end ())
     {
-        object = Objects::CParticle::fromFile (
-                (*particle_it).get <std::string> ().c_str (),
-                *id_it,
-                *name_it,
-                WallpaperEngine::Core::ato3vf (*origin_it),
-                WallpaperEngine::Core::ato3vf (*scale_it)
-        );
+        /// TODO: XXXHACK -- TO REMOVE WHEN PARTICLE SUPPORT IS PROPERLY IMPLEMENTED
+        try
+        {
+            object = Objects::CParticle::fromFile (
+                    (*particle_it).get <std::string> ().c_str (),
+                    *id_it,
+                    *name_it,
+                    WallpaperEngine::Core::ato3vf (*origin_it),
+                    WallpaperEngine::Core::ato3vf (*scale_it)
+            );
+        }
+        catch (std::runtime_error ex)
+        {
+            return nullptr;
+        }
     }
     else
     {

+ 3 - 1
src/WallpaperEngine/Core/CScene.cpp

@@ -113,7 +113,9 @@ const std::vector<CObject*>& CScene::getObjects () const
 
 void CScene::insertObject (CObject* object)
 {
-    this->m_objects.push_back (object);
+    /// TODO: XXXHACK -- TO REMOVE WHEN PARTICLE SUPPORT IS PROPERLY IMPLEMENTED
+    if (object != nullptr)
+        this->m_objects.push_back (object);
 }
 
 const Scenes::CCamera* CScene::getCamera () const

+ 4 - 2
src/WallpaperEngine/Irrlicht/CPkgReader.cpp

@@ -63,7 +63,8 @@ namespace WallpaperEngine::Irrlicht
                 strcmp ("PKGV0007", pointer) != 0 &&
                 strcmp ("PKGV0002", pointer) != 0 &&
                 strcmp ("PKGV0001", pointer) != 0 &&
-                strcmp ("PKGV0008", pointer) != 0)
+                strcmp ("PKGV0008", pointer) != 0 &&
+                strcmp ("PKGV0009", pointer) != 0)
         {
             delete [] pointer;
             return false;
@@ -115,7 +116,8 @@ namespace WallpaperEngine::Irrlicht
                 strcmp ("PKGV0007", headerVersion) != 0 &&
                 strcmp ("PKGV0002", headerVersion) != 0 &&
                 strcmp ("PKGV0001", headerVersion) != 0 &&
-                strcmp ("PKGV0008", headerVersion) != 0)
+                strcmp ("PKGV0008", headerVersion) != 0 &&
+                strcmp ("PKGV0009", headerVersion) != 0)
         {
             delete [] headerVersion;