#include "Behaviors/StateMachine.h"

$nodeclass Lab2_4 : StateNode {
  $setupmachine{

    launch: StateNode =N=> {forward_howl, power_led}

	// ************** FORWARD NODES **************

	power_led : LedNode [getMC()->cset(RobotInfo::PowerRedLEDMask, 1.0)]
	play_led : LedNode [getMC()->cset(RobotInfo::PlayLEDMask, 1.0)]
	advance_led : LedNode [getMC()->cset(RobotInfo::AdvanceLEDMask, 1.0)]

	forward_howl : SoundNode("howl.wav")
	{forward_howl, power_led} =B(RobotInfo::BumpLeftButOffset)=> {backward_ping, advance_led}
	{forward_howl, power_led} =C=> {forward_barklow, play_led}

	forward_barklow : SoundNode("barklow.wav")
	{forward_barklow, play_led} =B(RobotInfo::BumpLeftButOffset)=> {backward_howl, power_led}
	{forward_barklow, play_led} =C=> {forward_ping, advance_led}

	forward_ping : SoundNode("ping.wav")
	{forward_ping, advance_led} =B(RobotInfo::BumpLeftButOffset)=> {backward_barklow, play_led}
	{forward_ping, advance_led} =C=> {forward_howl, power_led}

	// ************** BACKWARD NODES ***************

	backward_howl : SoundNode("howl.wav")
	{backward_howl, power_led} =B(RobotInfo::BumpLeftButOffset)=> {forward_barklow, play_led}
	{backward_howl, power_led} =C=> {backward_ping, advance_led}

	backward_barklow : SoundNode("barklow.wav")
	{backward_barklow, play_led} =B(RobotInfo::BumpLeftButOffset)=> {forward_ping, play_led}
	{backward_barklow, play_led} =C=> {backward_howl, power_led}

	backward_ping : SoundNode("ping.wav")
	{backward_ping, advance_led} =B(RobotInfo::BumpLeftButOffset)=> {forward_howl, power_led}
	{backward_ping, advance_led} =C=> {backward_barklow, play_led}
  }
}

REGISTER_BEHAVIOR(Lab2_4);
