#include "Behaviors/StateMachine.h"

$nodeclass Lab2Part3Number4 : StateNode {
    $setupmachine {
        launch: StateNode =N=> {blinkPlay, bark, noBlink}



	noBlink: LedNode [setPriority(MotionManager::kBackgroundPriority);
	                      getMC()->set(RobotInfo::AllLEDMask,0.0)]
        blinkPlay: LedNode [getMC()->cycle(RobotInfo::PlayLEDMask,1500,1.0)]
        blinkPower: LedNode [getMC()->cycle(RobotInfo::PowerRedLEDMask,1500,1.0)]
        blinkAdvance: LedNode [getMC()->cycle(RobotInfo::AdvanceLEDMask,1500,1.0)]
	blinkPlayRev: LedNode [getMC()->cycle(RobotInfo::PlayLEDMask,1500,1.0)]
        blinkPowerRev: LedNode [getMC()->cycle(RobotInfo::PowerRedLEDMask,1500,1.0)]
        blinkAdvanceRev: LedNode [getMC()->cycle(RobotInfo::AdvanceLEDMask,1500,1.0)]
        bark: SoundNode("barklow.wav")
	howl: SoundNode("howl.wav")
        ping: SoundNode("ping.wav")
        barkRev: SoundNode("barklow.wav")
	howlRev: SoundNode("howl.wav")
        pingRev: SoundNode("ping.wav")

	{blinkPlay, bark} =C(1)=> {blinkPower, howl}
	{blinkPower, howl} =C(1)=> {blinkAdvance, ping}
	{blinkAdvance, ping} =C(1)=> {blinkPlay, bark}

	{blinkPlayRev, barkRev} =C(1)=> {blinkAdvanceRev, pingRev}
	{blinkAdvanceRev, pingRev} =C(1)=> {blinkPowerRev, howlRev}
	{blinkPowerRev, howlRev} =C(1)=> {blinkPlayRev, barkRev}

	{blinkPlay, bark} =B(RobotInfo::BumpLeftButOffset)=> {blinkAdvanceRev, pingRev}
	{blinkPower, howl} =B(RobotInfo::BumpLeftButOffset)=> {blinkPlayRev, barkRev}
	{blinkAdvance, ping} =B(RobotInfo::BumpLeftButOffset)=> {blinkPowerRev, howlRev}

	{blinkPlayRev, barkRev} =B(RobotInfo::BumpLeftButOffset)=> {blinkPower, howl}
	{blinkAdvanceRev, pingRev} =B(RobotInfo::BumpLeftButOffset)=> {blinkPlay, bark}
	{blinkPowerRev, howlRev} =B(RobotInfo::BumpLeftButOffset)=> {blinkAdvance, ping}
    }
}
REGISTER_BEHAVIOR(Lab2Part3Number4);