#include "Behaviors/StateMachine.h"

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

	$nodeclass ExamineResult : VisualRoutinesStateNode : doStart {
		//Get all shapes and printout result
		NEW_SHAPEVEC(ellipse_shapes, EllipseData, select_type<EllipseData>(camShS));
		NEW_SHAPEVEC(line_shape, LineData, select_type<LineData>(camShS));
		
		//Count number of points left and right of line
		int left = 0;
		int right = 0;
		SHAPEVEC_ITERATE(line_shape, LineData, myLine)
			if(myLine->getLength() > 50) {
				SHAPEVEC_ITERATE(ellipse_shapes, EllipseData, myEllipse)
				if(myEllipse->getArea() > 200)  {
					if(myLine->pointIsLeftOf(myEllipse->getCentroid())) left++;
					else right++;
				}
	 			END_ITERATE;
				cout << "The number of points to the left of line is " << left << endl;
				cout << "The number of points to the right of line is " << right << endl;
			}
		END_ITERATE;
	}


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