#include "Behaviors/StateMachine.h"

$nodeclass LightSoundSeqWithRevers : StateNode {

  $setupmachine{

    launch: StateNode =N=> {ledPower_for, barklow_for}

    ledPower_for: LedNode [getMC()->cset(RobotInfo::PowerRedLEDMask, 1.0)]
    ledPlay_for: LedNode [getMC()->cset(RobotInfo::PlayLEDMask, 1.0)]
    ledAdvance_for: LedNode [getMC()->cset(RobotInfo::AdvanceLEDMask, 1.0)]

    ledPower_back: LedNode [getMC()->cset(RobotInfo::PowerRedLEDMask, 1.0)]	
    ledPlay_back: LedNode [getMC()->cset(RobotInfo::PlayLEDMask, 1.0)]
    ledAdvance_back: LedNode [getMC()->cset(RobotInfo::AdvanceLEDMask, 1.0)]

    barklow_for: SoundNode("barklow.wav") 
    barkmed_for: SoundNode("barkmed.wav")
    yipper_for: SoundNode("yipper.wav")

    barklow_back: SoundNode("barklow.wav")
    barkmed_back: SoundNode("barkmed.wav")
    yipper_back: SoundNode("yipper.wav")



    ledPower_for =T(1000)=> ledPlay_for
    ledPower_for =B(RobotInfo::BumpLeftButOffset)=> ledAdvance_back

    ledPlay_for =T(1000)=> ledAdvance_for
    ledPlay_for =B(RobotInfo::BumpLeftButOffset)=> ledPower_back   

    ledAdvance_for =T(1000)=> ledPower_for
    ledAdvance_for =B(RobotInfo::BumpLeftButOffset)=> ledPlay_back 



    ledPower_back =T(1000)=> ledAdvance_back
    ledPower_back =B(RobotInfo::BumpRightButOffset)=> ledPlay_for

    ledPlay_back =T(1000)=> ledPower_back
    ledPlay_back =B(RobotInfo::BumpRightButOffset)=> ledAdvance_for  

    ledAdvance_back =T(1000)=> ledPlay_back
    ledAdvance_back =B(RobotInfo::BumpRightButOffset)=> ledPower_for



    barklow_for =C=> barkmed_for
    barklow_for =B(RobotInfo::BumpLeftButOffset)=> yipper_back

    barkmed_for =C=> yipper_for
    barkmed_for =B(RobotInfo::BumpLeftButOffset)=> barklow_back   

    yipper_for =C=> barklow_for
    yipper_for =B(RobotInfo::BumpLeftButOffset)=> barkmed_back 



    barklow_back =C=> yipper_back
    barklow_back =B(RobotInfo::BumpRightButOffset)=> barkmed_for

    barkmed_back =C=> barklow_back
    barkmed_back =B(RobotInfo::BumpRightButOffset)=> yipper_for  

    yipper_back =C=> barkmed_back
    yipper_back =B(RobotInfo::BumpRightButOffset)=> barklow_for

  }

}

REGISTER_BEHAVIOR(LightSoundSeqWithRevers);
