#include "Behaviors/StateMachine.h"

$nodeclass ParallelLEDBarkBehavior : StateNode {
  $setupmachine{

    launch: StateNode =N=> {ledPower, barkLow}

    ledPower: LedNode [getMC()->flash(RobotInfo::PowerGreenLEDMask, 500)]
    ledPower	=C=>	ledPlay
    ledPower	=B(RobotInfo::BumpLeftButOffset)=> ledAdvRev

    ledPlay: LedNode [getMC()->flash(RobotInfo::PlayLEDMask, 500)]
    ledPlay	=C=>	ledAdv
    ledPlay	=B(RobotInfo::BumpLeftButOffset)=> ledPowerRev
    
    ledAdv: LedNode [getMC()->flash(RobotInfo::AdvanceLEDMask, 500)] 
    ledAdv	=C=>	ledPower
    ledAdv	=B(RobotInfo::BumpLeftButOffset)=> ledPlayRev


    ledPowerRev: LedNode [getMC()->flash(RobotInfo::PowerGreenLEDMask, 500)]
    ledPowerRev	=C=>	ledAdvRev
    ledPowerRev	=B(RobotInfo::BumpLeftButOffset)=> ledPlay

    ledPlayRev: LedNode [getMC()->flash(RobotInfo::PlayLEDMask, 500)]
    ledPlayRev	=C=>	ledPowerRev
    ledPlayRev	=B(RobotInfo::BumpLeftButOffset)=> ledAdv
    
    ledAdvRev: LedNode [getMC()->flash(RobotInfo::AdvanceLEDMask, 500)] 
    ledAdvRev	=C=>	ledPlayRev
    ledAdvRev	=B(RobotInfo::BumpLeftButOffset)=> ledPower


    barkLow: SoundNode("barklow.wav")
    barkLow 	=C=> barkMed
    barkLow 	=B(RobotInfo::BumpLeftButOffset)=> yipperRev

    barkMed: SoundNode("barkmed.wav")
    barkMed 	=C=> yipper
    barkMed	=B(RobotInfo::BumpLeftButOffset)=> barkLowRev

    yipper:  SoundNode("yipper.wav")
    yipper	=C=> barkLow
    yipper	=B(RobotInfo::BumpLeftButOffset)=> barkMedRev


    barkLowRev: SoundNode("barklow.wav")
    barkLowRev 	=C=> yipperRev
    barkLowRev 	=B(RobotInfo::BumpLeftButOffset)=> barkMed

    barkMedRev: SoundNode("barkmed.wav")
    barkMedRev 	=C=> barkLowRev
    barkMedRev	=B(RobotInfo::BumpLeftButOffset)=> yipper

    yipperRev:  SoundNode("yipper.wav")
    yipperRev	=C=> barkMedRev
    yipperRev	=B(RobotInfo::BumpLeftButOffset)=> barkLow
  }

}

REGISTER_BEHAVIOR(ParallelLEDBarkBehavior);
