00001 #include "Transition.h"
00002 #include "StateNode.h"
00003 #include "Wireless/Wireless.h"
00004 #include "Sound/SoundManager.h"
00005 #include "Events/EventRouter.h"
00006
00007 void Transition::fire() {
00008
00009
00010 AddReference();
00011
00012 if(sound.size()!=0)
00013 sndman->playFile(sound);
00014
00015 erouter->postEvent(EventBase::stateTransitionEGID,reinterpret_cast<size_t>(this),EventBase::activateETID,0,getName(),1);
00016
00017 for(unsigned int i=0; i<srcs.size(); i++)
00018 if(srcs[i]->isActive())
00019 srcs[i]->DoStop();
00020 for(unsigned int i=0; i<dsts.size(); i++)
00021 if(!dsts[i]->isActive())
00022 dsts[i]->DoStart();
00023
00024 erouter->postEvent(EventBase::stateTransitionEGID,reinterpret_cast<size_t>(this),EventBase::deactivateETID,0,getName(),0);
00025
00026
00027 RemoveReference();
00028 }
00029
00030 std::string Transition::getName() const {
00031 if(instanceName != className) {
00032 return instanceName;
00033 } else {
00034 std::string ans;
00035 ans+='{';
00036 for(unsigned int i=0; i<srcs.size(); i++)
00037 ans+=srcs[i]->getName()+(i<srcs.size()-1?',':'}');
00038 ans+="--"+instanceName+"-->";
00039 ans+='{';
00040 for(unsigned int i=0; i<dsts.size(); i++)
00041 ans+=dsts[i]->getName()+(i<dsts.size()-1?',':'}');
00042 return ans;
00043 }
00044 }
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056