#include "Behaviors/StateMachine.h"

$nodeclass HW1_Prob3 : StateNode {
  $setupmachine {
    launch: StateNode =N=> {barklowf, redf}

    barklowf: SoundNode($,"barklow.wav") =T(1000)=> barkmedf
    barkmedf: SoundNode($,"barkmed.wav") =T(1000)=> barkhighf
    barkhighf: SoundNode($,"barkhigh.wav") =T(1000)=> barklowf

    barklowr: SoundNode($,"barklow.wav") =T(1000)=> barkhighr
    barkmedr: SoundNode($,"barkmed.wav") =T(1000)=> barklowr
    barkhighr: SoundNode($,"barkhigh.wav") =T(1000)=> barkmedr

    barklowf =B(RobotInfo::GreenButOffset)=> barkhighr
    barkhighr =B(RobotInfo::GreenButOffset)=> barklowf
 
    barkmedf =B(RobotInfo::GreenButOffset)=> barklowr
    barklowr =B(RobotInfo::GreenButOffset)=> barkmedf
 
    barkhighf =B(RobotInfo::GreenButOffset)=> barkmedr
    barkmedr =B(RobotInfo::GreenButOffset)=> barkhighf
 
    redf:    LedNode [getMC()->cset(RobotInfo::RedLEDMask,1.0)] =T(1000)=> yellowf
    yellowf: LedNode [getMC()->cset(RobotInfo::YellowLEDMask,1.0)] =T(1000)=> greenf
    greenf:  LedNode [getMC()->cset(RobotInfo::GreenLEDMask,1.0)] =T(1000)=> bluef
    bluef:   LedNode [getMC()->cset(RobotInfo::BlueLEDMask,1.0)] =T(1000)=> redf

    redr:    LedNode [getMC()->cset(RobotInfo::RedLEDMask,1.0)] =T(1000)=> bluer
    yellowr: LedNode [getMC()->cset(RobotInfo::YellowLEDMask,1.0)] =T(1000)=> redr
    greenr:  LedNode [getMC()->cset(RobotInfo::GreenLEDMask,1.0)] =T(1000)=> yellowr
    bluer:   LedNode [getMC()->cset(RobotInfo::BlueLEDMask,1.0)] =T(1000)=> greenr

    redf =B(RobotInfo::GreenButOffset)=> bluer
    bluer =B(RobotInfo::GreenButOffset)=> redf

    yellowf =B(RobotInfo::GreenButOffset)=> redr
    redr =B(RobotInfo::GreenButOffset)=> yellowf

    greenf =B(RobotInfo::GreenButOffset)=> yellowr
    yellowr =B(RobotInfo::GreenButOffset)=> greenf

    bluef =B(RobotInfo::GreenButOffset)=> greenr
    greenr =B(RobotInfo::GreenButOffset)=> bluef
  }
}

REGISTER_BEHAVIOR(HW1_Prob3);
