#include "Behaviors/StateMachine.h"

$nodeclass FindEggs : VisualRoutinesStateNode {
	$nodeclass GetEggs : MapBuilderNode : doStart {
		mapreq.addObjectColor(ellipseDataType, "red");
		mapreq.addObjectColor(ellipseDataType, "green");
		mapreq.addObjectColor(ellipseDataType, "blue");
	}

	$nodeclass ExamineResult : VisualRoutinesStateNode : doStart {
		//Get all shapes and printout result
		NEW_SHAPEVEC(ellipse_shapes, EllipseData, select_type<EllipseData>(camShS));
		
		//Iterate through and ignore small areas
		int cEllipse = 0;
		SHAPEVEC_ITERATE(ellipse_shapes, EllipseData, myEllipse)
			if(myEllipse->getArea() > 120)  {
				cEllipse++;
				NEW_SHAPE(ellipse, EllipseData,
  					new EllipseData(camShS, myEllipse->getCentroid(),
					myEllipse->getSemimajor()*1.5, 
					myEllipse->getSemiminor()*1.5, 
					myEllipse->getOrientation()));
				ellipse->setColor(myEllipse->getColor());
			}
			else {
				camShS.deleteShape(myEllipse);
			}
 		END_ITERATE;
		cout << "The total number of big ellipse is " << cEllipse << endl;
	}


	$setupmachine {
		GetEggs =C=> ExamineResult
	}
}
REGISTER_BEHAVIOR (FindEggs);
