//-*-c++-*-
#ifndef INCLUDED_SYNCFLASHBARK_h_
#define INCLUDED_SYNCFLASHBARK_h_

#include "Behaviors/BehaviorBase.h"
#include "Events/EventRouter.h"
#include "Behaviors/StateMachine.h"


//! DESCRIPTION
class SyncFlashBark : public StateNode {
public:
	SyncFlashBark() : StateNode("SyncFlashBark") {}

	virtual void setup() {

#statemachine

startnode: StateNode =N=> {fRedLed, fRedSound}

fRedLed: LedNode [getMC()->cset(ChiaraInfo::RedLEDMask, 1.0);]
fYellowLed: LedNode [getMC()->cset(ChiaraInfo::YellowLEDMask, 1.0);] 
fGreenLed: LedNode [getMC()->cset(ChiaraInfo::GreenLEDMask, 1.0);] 
fBlueLed: LedNode [getMC()->cset(ChiaraInfo::BlueLEDMask, 1.0);]

rRedLed: LedNode [getMC()->cset(ChiaraInfo::RedLEDMask, 1.0);]
rYellowLed: LedNode [getMC()->cset(ChiaraInfo::YellowLEDMask, 1.0);]
rGreenLed: LedNode [getMC()->cset(ChiaraInfo::GreenLEDMask, 1.0);]
rBlueLed: LedNode [getMC()->cset(ChiaraInfo::BlueLEDMask, 1.0);]

fRedSound: SoundNode($,"howl.wav") 
fYellowSound: SoundNode($,"barklow.wav") 
fGreenSound: SoundNode($,"ping.wav") 
fBlueSound: SoundNode($,"toc.wav") 

{fRedLed, fRedSound}=C(1)=>fRedWait
{fYellowLed, fYellowSound}=C(1)=>fYellowWait
{fGreenLed, fGreenSound}=C(1)=>fGreenWait
{fBlueLed, fBlueSound}=C(1)=>fBlueWait

{fRedLed, fRedSound}  =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> rRedWait
{fYellowLed, fYellowSound}  =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> rYellowWait
{fGreenLed, fGreenSound}  =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> rGreenWait
{fBlueLed, fBlueSound}  =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> rBlueWait

rRedSound: SoundNode($,"howl.wav") 
rYellowSound: SoundNode($,"barklow.wav") 
rGreenSound: SoundNode($,"ping.wav") 
rBlueSound: SoundNode($,"toc.wav") 

{rRedLed, rRedSound}=C(1)=>rRedWait
{rYellowLed, rYellowSound}=C(1)=>rYellowWait
{rGreenLed, rGreenSound}=C(1)=>rGreenWait
{rBlueLed, rBlueSound}=C(1)=>rBlueWait

{rRedLed, rRedSound}  =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> fRedWait
{rYellowLed, rYellowSound}  =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> fYellowWait
{rGreenLed, rGreenSound}  =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> fGreenWait
{rBlueLed, rBlueSound}  =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> fBlueWait

fRedWait: StateNode =N=>{fYellowLed, fYellowSound}
fYellowWait: StateNode=N=>{fGreenLed, fGreenSound}
fGreenWait: StateNode =N=>{fBlueLed, fBlueSound}
fBlueWait: StateNode =N=>{fRedLed, fRedSound}

rRedWait: StateNode =N=>{rBlueLed, rBlueSound}
rYellowWait: StateNode =N=>{rRedLed, rRedSound}
rGreenWait: StateNode =N=>{rYellowLed, rYellowSound}
rBlueWait: StateNode =N=>{rGreenLed, rGreenSound}

#endstatemachine

	}
};
#endif
