Also added separated bowling roll and shoot sounds. Now bowling_roll can be played in a loop.

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@14219 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
deveee 2013-10-08 17:04:27 +00:00
parent 9ce3a75377
commit 414ad5b24b
3 changed files with 27 additions and 2 deletions

View File

@ -18,6 +18,8 @@
#include "items/bowling.hpp" #include "items/bowling.hpp"
#include "audio/sfx_base.hpp"
#include "audio/sfx_manager.hpp"
#include "graphics/hit_sfx.hpp" #include "graphics/hit_sfx.hpp"
#include "graphics/material.hpp" #include "graphics/material.hpp"
#include "io/xml_node.hpp" #include "io/xml_node.hpp"
@ -74,8 +76,22 @@ Bowling::Bowling(AbstractKart *kart)
// should not live forever, auto-destruct after 20 seconds // should not live forever, auto-destruct after 20 seconds
m_max_lifespan = 20; m_max_lifespan = 20;
m_roll_sfx = sfx_manager->createSoundSource("bowling_roll");
m_roll_sfx->play();
m_roll_sfx->setLoop(true);
} // Bowling } // Bowling
// ----------------------------------------------------------------------------
/** Destructor, removes any playing sfx.
*/
Bowling::~Bowling()
{
if(m_roll_sfx->getStatus()==SFXManager::SFX_PLAYING)
m_roll_sfx->stop();
sfx_manager->deleteSFX(m_roll_sfx);
} // ~RubberBall
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
/** Initialises this object with data from the power.xml file. /** Initialises this object with data from the power.xml file.
* \param node XML Node * \param node XML Node
@ -200,6 +216,10 @@ bool Bowling::updateAndDelete(float dt)
hit(NULL); hit(NULL);
return true; return true;
} }
if (m_roll_sfx->getStatus()==SFXManager::SFX_PLAYING)
m_roll_sfx->position(getXYZ());
return false; return false;
} // updateAndDelete } // updateAndDelete
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------

View File

@ -29,6 +29,7 @@ using namespace irr;
#include "items/flyable.hpp" #include "items/flyable.hpp"
class XMLNode; class XMLNode;
class SFXBase;
/** /**
* \ingroup items * \ingroup items
@ -45,8 +46,12 @@ private:
* kart was hit. */ * kart was hit. */
bool m_has_hit_kart; bool m_has_hit_kart;
/** A sound effect for rolling ball. */
SFXBase *m_roll_sfx;
public: public:
Bowling(AbstractKart* kart); Bowling(AbstractKart* kart);
virtual ~Bowling();
static void init(const XMLNode &node, scene::IMesh *bowling); static void init(const XMLNode &node, scene::IMesh *bowling);
virtual bool updateAndDelete(float dt); virtual bool updateAndDelete(float dt);
virtual const core::stringw getHitString(const AbstractKart *kart) const; virtual const core::stringw getHitString(const AbstractKart *kart) const;

View File

@ -152,7 +152,7 @@ void Powerup::set(PowerupManager::PowerupType type, int n)
break ; break ;
case PowerupManager::POWERUP_BOWLING: case PowerupManager::POWERUP_BOWLING:
m_sound_use = sfx_manager->createSoundSource("bowling_roll"); m_sound_use = sfx_manager->createSoundSource("bowling_shoot");
break ; break ;
case PowerupManager::POWERUP_ANVIL: case PowerupManager::POWERUP_ANVIL: