From 5ba23a83501dc267a0adbd17d0ae23def3acf089 Mon Sep 17 00:00:00 2001
From: Philipp Sehmisch <mana@crushnet.org>
Date: Sun, 7 Mar 2010 20:30:38 +0100
Subject: Added a property to particle files which says if they may be resized
 based on the dimensions in the map file or not.

Reviewed-by: Jared Adams
---
 src/particle.cpp | 12 +++++++++---
 src/particle.h   |  4 ++++
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/particle.cpp b/src/particle.cpp
index d3dbfd64..84161c9f 100644
--- a/src/particle.cpp
+++ b/src/particle.cpp
@@ -64,6 +64,7 @@ Particle::Particle(Map *map):
     mAlpha(1.0f),
     mAutoDelete(true),
     mMap(map),
+    mAllowSizeAdjust(false),
     mGravity(0.0f),
     mRandomness(0),
     mBounce(0.0f),
@@ -322,6 +323,8 @@ Particle *Particle::addEffect(const std::string &particleEffectFile,
 
         int lifetime = XML::getProperty(effectChildNode, "lifetime", -1);
         newParticle->setLifetime(lifetime);
+        bool resizeable = "false" != XML::getProperty(effectChildNode, "size-adjustable", "false");
+        newParticle->setAllowSizeAdjust(resizeable);
 
         // Look for additional emitters for this particle
         for_each_xml_child_node(emitterNode, effectChildNode)
@@ -380,10 +383,13 @@ Particle *Particle::addTextRiseFadeOutEffect(const std::string &text,
 
 void Particle::adjustEmitterSize(int w, int h)
 {
-    for (EmitterIterator e = mChildEmitters.begin();
-         e != mChildEmitters.end(); e++)
+    if (mAllowSizeAdjust)
     {
-        (*e)->adjustSize(w, h);
+        for (EmitterIterator e = mChildEmitters.begin();
+             e != mChildEmitters.end(); e++)
+        {
+            (*e)->adjustSize(w, h);
+        }
     }
 }
 
diff --git a/src/particle.h b/src/particle.h
index 87360bec..0690e8c4 100644
--- a/src/particle.h
+++ b/src/particle.h
@@ -256,6 +256,9 @@ class Particle : public Sprite
          */
         void adjustEmitterSize(int w, int h);
 
+        void setAllowSizeAdjust(bool adjust)
+        { mAllowSizeAdjust = adjust; }
+
         bool isAlive()
         { return mAlive; }
 
@@ -297,6 +300,7 @@ class Particle : public Sprite
         std::list<Sprite*>::iterator mSpriteIterator;   /**< iterator of the particle on the current map */
         Emitters mChildEmitters;    /**< List of child emitters. */
         Particles mChildParticles;  /**< List of particles controlled by this particle */
+        bool mAllowSizeAdjust;      /**< Can the effect size be adjusted by the object props in the map file? */
 
         // dynamic particle
         Vector mVelocity;           /**< Speed in pixels per game-tick. */
-- 
cgit v1.2.3-70-g09d2