#include "Behaviors/StateMachine.h"

$nodeclass ForkJoin : StateNode {

  $setupmachine{

    launch: StateNode =N=> {noblink, forward_power_led, forward_howl}

    noblink: LedNode [setPriority(MotionManager::kBackgroundPriority); getMC()->set(RobotInfo::PlayLEDMask, 0.0)]

    forward_power_led: LedNode [getMC()->set(RobotInfo::PowerRedLEDMask, 1.0)]
    forward_play_led: LedNode [getMC()->set(RobotInfo::PlayLEDMask, 1.0)]
    forward_adv_led: LedNode [getMC()->set(RobotInfo::AdvanceLEDMask, 1.0)]

    backward_power_led: LedNode [getMC()->set(RobotInfo::PowerRedLEDMask, 1.0)]
    backward_play_led: LedNode [getMC()->set(RobotInfo::PlayLEDMask, 1.0)]
    backward_adv_led: LedNode [getMC()->set(RobotInfo::AdvanceLEDMask, 1.0)]

    forward_howl: SoundNode("howl.wav")
    forward_barklow: SoundNode("crash.wav")
    forward_ping: SoundNode("ping.wav")

    { forward_howl, forward_power_led } =C(2)=> { forward_barklow, forward_play_led }
    { forward_barklow, forward_play_led } =C(2)=> { forward_ping, forward_adv_led }
    { forward_ping, forward_adv_led } =C(2)=> { forward_howl, forward_power_led }

    backward_howl: SoundNode("howl.wav")
    backward_barklow: SoundNode("crash.wav")
    backward_ping: SoundNode("ping.wav")

    { backward_howl, backward_power_led } =C(2)=> { backward_ping, backward_adv_led }
    { backward_barklow, backward_play_led } =C(2)=> { backward_howl, backward_power_led }
    { backward_ping, backward_adv_led } =C(2)=> { backward_barklow, backward_play_led }

    { forward_howl, forward_power_led } =B(BumpLeftButOffset)=> { backward_ping, backward_adv_led }
    { forward_barklow, forward_play_led } =B(BumpLeftButOffset)=> { backward_howl, backward_power_led }
    { forward_ping, forward_adv_led } =B(BumpLeftButOffset)=> { backward_barklow, backward_play_led }
    { backward_ping, backward_adv_led } =B(BumpLeftButOffset)=> { forward_howl, forward_power_led }
    { backward_barklow, backward_play_led } =B(BumpLeftButOffset)=> { forward_ping, forward_adv_led }
    { backward_howl, backward_power_led } =B(BumpLeftButOffset)=> { forward_barklow, forward_play_led }



  }

}

REGISTER_BEHAVIOR(ForkJoin);
