#include "Behaviors/StateMachine.h"

$nodeclass ParallelBehavior : StateNode {
  $setupmachine{

   launch: StateNode =N=> {forwardlowmed, forwardpowerplay}

   forwardlowmed: SoundNode("barklow.wav") =C=> forwardmedyip

   forwardmedyip: SoundNode("barkmed.wav") =C=> forwardyiplow

   forwardyiplow: SoundNode("yipper.wav") =C=> forwardlowmed

   backwardmedlow: SoundNode("barkmed.wav") =C=> backwardlowyip

   backwardyipmed: SoundNode("yipper.wav") =C=> backwardmedlow

   backwardlowyip: SoundNode("barklow.wav") =C=> backwardyipmed

   forwardpowerplay: LedNode [getMC()->flash(RobotInfo::PowerRedLEDMask, 1.0, 1000)]  =C=> forwardplayadvance

   forwardplayadvance: LedNode [getMC()->flash(RobotInfo::PlayLEDMask, 1.0, 1000)]  =C=> forwardadvancepower

   forwardadvancepower: LedNode [getMC()->flash(RobotInfo::AdvanceLEDMask, 1.0, 1000)] =C=> forwardpowerplay

   backwardplaypower: LedNode [getMC()->flash(RobotInfo::PlayLEDMask, 1.0, 1000)] =C=> backwardpoweradvance

   backwardadvanceplay: LedNode [getMC()->flash(RobotInfo::AdvanceLEDMask, 1.0, 1000)] =C=> backwardplaypower

   backwardpoweradvance: LedNode [getMC()->flash(RobotInfo::PowerRedLEDMask, 1.0, 1000)] =C=> backwardadvanceplay  

   forwardlowmed =B(RobotInfo::BumpLeftButOffset)=> backwardyipmed

   forwardmedyip =B(RobotInfo::BumpLeftButOffset)=> backwardlowyip

   forwardyiplow =B(RobotInfo::BumpLeftButOffset)=> backwardmedlow

   forwardpowerplay =B(RobotInfo::BumpLeftButOffset)=> backwardadvanceplay

   forwardplayadvance =B(RobotInfo::BumpLeftButOffset)=> backwardpoweradvance

   forwardadvancepower =B(RobotInfo::BumpLeftButOffset)=> backwardplaypower

   backwardmedlow =B(RobotInfo::BumpLeftButOffset)=> forwardyiplow

   backwardyipmed =B(RobotInfo::BumpLeftButOffset)=> forwardlowmed

   backwardlowyip =B(RobotInfo::BumpLeftButOffset)=> forwardmedyip

   backwardplaypower =B(RobotInfo::BumpLeftButOffset)=> forwardadvancepower

   backwardadvanceplay =B(RobotInfo::BumpLeftButOffset)=> forwardpowerplay

   backwardpoweradvance =B(RobotInfo::BumpLeftButOffset)=> forwardplayadvance

  }

}

REGISTER_BEHAVIOR(ParallelBehavior);
