00001
00002 #ifndef INCLUDED_SoundNode_h_
00003 #define INCLUDED_SoundNode_h_
00004
00005 #include "Behaviors/StateNode.h"
00006 #include "Events/EventRouter.h"
00007 #include "SoundPlay/SoundManager.h"
00008
00009
00010 class SoundNode : public StateNode {
00011 protected:
00012 std::string filename;
00013 SoundManager::Play_ID curplay_id;
00014
00015 public:
00016
00017 SoundNode(std::string nodename="SoundNode", std::string soundfilename="") :
00018 StateNode("SoundNode",nodename), filename(soundfilename), curplay_id(SoundManager::invalid_Play_ID) {}
00019
00020
00021 virtual void DoStart() {
00022 curplay_id = sndman->PlayFile(filename);
00023 erouter->addListener(this,EventBase::audioEGID,curplay_id,EventBase::deactivateETID);
00024 StateNode::DoStart();
00025 }
00026
00027
00028 virtual void DoStop() {
00029 erouter->removeListener(this);
00030 StateNode::DoStop();
00031 }
00032
00033
00034 virtual void processEvent(const EventBase&) {
00035 erouter->postEvent(EventBase::stateMachineEGID,reinterpret_cast<unsigned int>(this),EventBase::statusETID,0,getName(),1);
00036 }
00037
00038
00039 void StopPlay() {
00040 sndman->StopPlay(curplay_id);
00041 curplay_id = SoundManager::invalid_Play_ID;
00042 }
00043
00044
00045 std::string getFileName() { return filename; }
00046
00047
00048 void setFileName(std::string &soundfilename) { filename = soundfilename; }
00049
00050 protected:
00051
00052 SoundNode(std::string &classname, std::string &nodename, std::string &soundfilename) :
00053 StateNode(classname,nodename), filename(soundfilename), curplay_id(SoundManager::invalid_Play_ID) {}
00054
00055
00056
00057 };
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070 #endif