#include "Behaviors/StateMachine.h"

$nodeclass LightSoundSeqWithRevers : StateNode {

    $setupmachine{

        launch: StateNode =N=> {ledPower_for, barklow_for}

        ledPower_for: LedNode [getMC()->cset(RobotInfo::PowerRedLEDMask, 1.0)]
        ledPlay_for: LedNode [getMC()->cset(RobotInfo::PlayLEDMask, 1.0)]
        ledAdvance_for: LedNode [getMC()->cset(RobotInfo::AdvanceLEDMask, 1.0)]

        ledPower_back: LedNode [getMC()->cset(RobotInfo::PowerRedLEDMask, 1.0)]
        ledPlay_back: LedNode [getMC()->cset(RobotInfo::PlayLEDMask, 1.0)]
        ledAdvance_back: LedNode [getMC()->cset(RobotInfo::AdvanceLEDMask, 1.0)]

        barklow_for: SoundNode("barklow.wav")
        barkmed_for: SoundNode("barkmed.wav")
        yipper_for: SoundNode("yipper.wav")

        barklow_back: SoundNode("barklow.wav")
        barkmed_back: SoundNode("barkmed.wav")
        yipper_back: SoundNode("yipper.wav")

        ledPower_for =T(1000)=> ledPlay_for
        ledPower_for =B(RobotInfo::BumpLeftButOffset)=> ledAdvance_back
        ledPlay_for =T(1000)=> ledAdvance_for
        ledPlay_for =B(RobotInfo::BumpLeftButOffset)=> ledPower_back
        ledAdvance_for =T(1000)=> ledPower_for
        ledAdvance_for =B(RobotInfo::BumpLeftButOffset)=> ledPlay_back

        ledPower_back =T(1000)=> ledAdvance_back
        ledPower_back =B(RobotInfo::BumpRightButOffset)=> ledPlay_for
        ledPlay_back =T(1000)=> ledPower_back
        ledPlay_back =B(RobotInfo::BumpRightButOffset)=> ledAdvance_for
        ledAdvance_back =T(1000)=> ledPlay_back
        ledAdvance_back =B(RobotInfo::BumpRightButOffset)=> ledPower_for

        barklow_for =C=> barkmed_for
        barklow_for =B(RobotInfo::BumpLeftButOffset)=> yipper_back
        barkmed_for =C=> yipper_for
        barkmed_for =B(RobotInfo::BumpLeftButOffset)=> barklow_back
        yipper_for =C=> barklow_for
        yipper_for =B(RobotInfo::BumpLeftButOffset)=> barkmed_back

        barklow_back =C=> yipper_back
        barklow_back =B(RobotInfo::BumpRightButOffset)=> barkmed_for
        barkmed_back =C=> barklow_back
        barkmed_back =B(RobotInfo::BumpRightButOffset)=> yipper_for
        yipper_back =C=> barkmed_back
        yipper_back =B(RobotInfo::BumpRightButOffset)=> barklow_for

    }

}

REGISTER_BEHAVIOR(LightSoundSeqWithRevers);
