Jelajahi Sumber

+ Added support for alpharandom initializer
~ Fixed wrong return type for getters on rotationrandom

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

Alexis Maiquez 7 tahun lalu
induk
melakukan
400a2c0c84

+ 5 - 0
wallpaperengine/core/objects/particles/initializer.cpp

@@ -5,6 +5,7 @@
 #include "initializers/rotationrandom.h"
 #include "initializers/velocityrandom.h"
 #include "initializers/colorrandom.h"
+#include "initializers/alpharandom.h"
 
 using namespace wp::core::objects::particles;
 
@@ -43,6 +44,10 @@ initializer* initializer::fromJSON (json data)
     {
         return initializers::colorrandom::fromJSON (data, *id_it);
     }
+    else if (*name_it == "alpharandom")
+    {
+        return initializers::alpharandom::fromJSON (data, *id_it);
+    }
     else
     {
         throw std::runtime_error ("Particle's got an unknown initializer");

+ 38 - 0
wallpaperengine/core/objects/particles/initializers/alpharandom.cpp

@@ -0,0 +1,38 @@
+#include "alpharandom.h"
+
+using namespace wp::core::objects::particles::initializers;
+
+alpharandom* alpharandom::fromJSON (json data, irr::u32 id)
+{
+    json::const_iterator min_it = data.find ("min");
+    json::const_iterator max_it = data.find ("max");
+
+    if (min_it == data.end ())
+    {
+        throw std::runtime_error ("Alpharandom initializer must have a minimum value");
+    }
+
+    if (max_it == data.end ())
+    {
+        throw std::runtime_error ("Alpharandom initializer must have a maximum value");
+    }
+
+    return new alpharandom (id, *min_it, *max_it);
+}
+
+alpharandom::alpharandom (irr::u32 id, irr::f64 min, irr::f64 max) :
+    initializer (id, "alpharandom"),
+    m_min (min),
+    m_max (max)
+{
+}
+
+irr::f64 alpharandom::getMinimum ()
+{
+    return this->m_min;
+}
+
+irr::f64 alpharandom::getMaximum ()
+{
+    return this->m_max;
+}

+ 25 - 0
wallpaperengine/core/objects/particles/initializers/alpharandom.h

@@ -0,0 +1,25 @@
+#pragma once
+
+#include "../initializer.h"
+
+#include <nlohmann/json.hpp>
+#include <irrlicht/irrlicht.h>
+
+namespace wp::core::objects::particles::initializers
+{
+    class alpharandom : initializer
+    {
+    public:
+        irr::f64 getMinimum ();
+        irr::f64 getMaximum ();
+    protected:
+        friend class initializer;
+
+        static alpharandom* fromJSON (json data, irr::u32 id);
+
+        alpharandom (irr::u32 id, irr::f64 min, irr::f64 max);
+    private:
+        irr::f64 m_max;
+        irr::f64 m_min;
+    };
+};

+ 2 - 2
wallpaperengine/core/objects/particles/initializers/rotationrandom.cpp

@@ -27,12 +27,12 @@ rotationrandom::rotationrandom (irr::u32 id, irr::f64 min, irr::f64 max) :
 {
 }
 
-irr::u32 rotationrandom::getMinimum ()
+irr::f64 rotationrandom::getMinimum ()
 {
     return this->m_min;
 }
 
-irr::u32 rotationrandom::getMaximum ()
+irr::f64 rotationrandom::getMaximum ()
 {
     return this->m_max;
 }

+ 2 - 2
wallpaperengine/core/objects/particles/initializers/rotationrandom.h

@@ -10,8 +10,8 @@ namespace wp::core::objects::particles::initializers
     class rotationrandom : initializer
     {
     public:
-        irr::u32 getMinimum ();
-        irr::u32 getMaximum ();
+        irr::f64 getMinimum ();
+        irr::f64 getMaximum ();
     protected:
         friend class initializer;