From ad43e58d901bcc89632c80bdcf498acf2f1717c2 Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Tue, 3 Mar 2015 17:47:17 +0300
Subject: Add support for riding flag in actorsprite and statuseffect.

---
 src/being/actorsprite.cpp | 7 +++++--
 src/being/actorsprite.h   | 4 ++++
 src/defaults.cpp          | 1 +
 src/statuseffect.cpp      | 5 ++++-
 src/statuseffect.h        | 4 ++++
 5 files changed, 18 insertions(+), 3 deletions(-)

(limited to 'src')

diff --git a/src/being/actorsprite.cpp b/src/being/actorsprite.cpp
index 343018204..9f21d4996 100644
--- a/src/being/actorsprite.cpp
+++ b/src/being/actorsprite.cpp
@@ -73,7 +73,8 @@ ActorSprite::ActorSprite(const int id) :
     mCursorPaddingY(0),
     mMustResetParticles(false),
     mPoison(false),
-    mHaveCart(false)
+    mHaveCart(false),
+    mRiding(false)
 {
 }
 
@@ -220,8 +221,10 @@ void ActorSprite::updateStatusEffect(const int index, const bool newStatus)
         return;
     if (effect->isPoison() && getType() == ActorType::Player)
         setPoison(newStatus);
-    if (effect->isCart() && localPlayer == this)
+    else if (effect->isCart() && localPlayer == this)
         setHaveCart(newStatus);
+    else if (effect->isRiding())
+        setRiding(newStatus);
     handleStatusEffect(effect, index);
 }
 
diff --git a/src/being/actorsprite.h b/src/being/actorsprite.h
index 02a17ea07..12624aa30 100644
--- a/src/being/actorsprite.h
+++ b/src/being/actorsprite.h
@@ -177,6 +177,9 @@ class ActorSprite notfinal : public CompoundSprite, public Actor
         bool getHaveCart() const A_WARN_UNUSED
         { return mHaveCart; }
 
+        virtual void setRiding(const bool b)
+        { mRiding = b; }
+
     protected:
         /**
          * Notify self that the stun mode has been updated. Invoked by
@@ -239,6 +242,7 @@ class ActorSprite notfinal : public CompoundSprite, public Actor
         bool mMustResetParticles;
         bool mPoison;
         bool mHaveCart;
+        bool mRiding;
 };
 
 #endif  // BEING_ACTORSPRITE_H
diff --git a/src/defaults.cpp b/src/defaults.cpp
index eb33c4245..f1abdfb60 100644
--- a/src/defaults.cpp
+++ b/src/defaults.cpp
@@ -580,6 +580,7 @@ DefaultsData* getPathsDefaults()
     AddDEF("defaultcommandsPatchDir", "defaultcommands.d");
     AddDEF("poisonEffectName", "poison");
     AddDEF("cartEffectName", "cart");
+    AddDEF("ridingEffectName", "riding");
 
     return configData;
 }
diff --git a/src/statuseffect.cpp b/src/statuseffect.cpp
index 41697b852..c5e660abd 100644
--- a/src/statuseffect.cpp
+++ b/src/statuseffect.cpp
@@ -50,7 +50,8 @@ StatusEffect::StatusEffect() :
     mAction(),
     mPersistentParticleEffect(false),
     mIsPoison(false),
-    mIsCart(false)
+    mIsCart(false),
+    mIsRiding(false)
 {
 }
 
@@ -201,6 +202,8 @@ void StatusEffect::loadXmlFile(const std::string &fileName)
                 (name == paths.getStringValue("poisonEffectName"));
             startEffect->mIsCart =
                 (name == paths.getStringValue("cartEffectName"));
+            startEffect->mIsRiding =
+                (name == paths.getStringValue("ridingEffectName"));
             startEffect->mMessage = XML::getProperty(
                 node, "start-message", "");
             startEffect->mSFXEffect = XML::getProperty(
diff --git a/src/statuseffect.h b/src/statuseffect.h
index 4cba35432..ce99fa5d8 100644
--- a/src/statuseffect.h
+++ b/src/statuseffect.h
@@ -80,6 +80,9 @@ class StatusEffect final
         bool isCart() const A_WARN_UNUSED
         { return mIsCart; }
 
+        bool isRiding() const A_WARN_UNUSED
+        { return mIsRiding; }
+
         /**
          * Retrieves a status effect.
          *
@@ -128,6 +131,7 @@ class StatusEffect final
         bool mPersistentParticleEffect;
         bool mIsPoison;
         bool mIsCart;
+        bool mIsRiding;
 };
 
 #endif  // STATUSEFFECT_H
-- 
cgit v1.2.3-70-g09d2