#include "Behaviors/StateMachine.h"

$nodeclass ParallelBehavior2 : StateNode {
  $setupmachine{

   launch: StateNode =N=> forward12

   barklow: SoundNode("barklow.wav")

   barkmed: SoundNode("barkmed.wav")
   
   yipper: SoundNode("yipper.wav")

   powerled: LedNode [getMC()->set(RobotInfo::PowerRedLEDMask, 1.0)]

   playled: LedNode [getMC()->set(RobotInfo::PlayLEDMask, 1.0)]

   advanceled: LedNode [getMC()->set(RobotInfo::AdvanceLEDMask, 1.0)]

   forward12: LedNode [getMC()->clear()] =C=> {barklow, powerled} =C=> forward23

   forward23: LedNode [getMC()->clear()] =C=> {barkmed, playled} =C=> forward31
   
   forward31: LedNode [getMC()->clear()] =C=> {yipper, advanceled} =C=> forward12
   
   backward21: LedNode[getMC()->clear()] =C=> {barkmed, playled} =C=> backward13

   backward32: LedNode[getMC()->clear()] =C=> {yipper, advanceled} =C=> backward21

   backward13: LedNode[getMC()->clear()] =C=> {barklow, powerled} =C=> backward32
   
   forward12 =B(RobotInfo::BumpLeftButOffset)=> backward32

   forward23 =B(RobotInfo::BumpLeftButOffset)=> backward13

   forward31 =B(RobotInfo::BumpLeftButOffset)=> backward21

   backward21 =B(RobotInfo::BumpLeftButOffset)=> forward31

   backward32 =B(RobotInfo::BumpLeftButOffset)=> forward12

   backward13 =B(RobotInfo::BumpLeftButOffset)=> forward23

  }

}

REGISTER_BEHAVIOR(ParallelBehavior2);
