#include "Behaviors/StateMachine.h"

#define CAN_THRESHOLD 1000

$nodeclass Lab6part5 : VisualRoutinesStateNode {

	$nodeclass FindCan : VisualRoutinesStateNode : doStart { 
 
		NEW_SKETCH(camFrame, uchar, sketchFromSeg()); 
    		NEW_SKETCH(blue, bool, visops::colormask(camFrame,"blue"));
		NEW_SKETCH(blobs, uint, visops::labelcc(blue)); 
 		NEW_SKETCH(blobsize, uint, visops::areacc(blobs)); 
		NEW_SKETCH(can, bool, blobsize >= CAN_THRESHOLD);

		if (can->max() == 1) {
			postStateCompletion();
			return;
		}
		postStateFailure();
	}

	$setupmachine {

		launch: StateNode =N=> flip =C=> findcan

		findcan =C=> flip2 =C=> launch
		findcan =F=> SpeechNode("I am politely asking you to give me back the can now~!!") =C=> StateNode =T(5000)=> launch

		findcan: FindCan

 		flip: DynamicMotionSequenceNode("FLIPIT.mot")
		flip2: DynamicMotionSequenceNode("FLIPIT2.mot") 
	}
}

REGISTER_BEHAVIOR(Lab6part5);
