#include "Behaviors/StateMachine.h"

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

	$nodeclass ReportEllipses : doStart {
		NEW_SHAPEVEC(ellipse_shapes, EllipseData,select_type<EllipseData>(camShS));
		NEW_SHAPEVEC(line_shapes, LineData,select_type<LineData>(camShS));
		int leftCount = 0;
		int rightCount = 0;

		if ( ellipse_shapes.size() > 0 ) {
			NEW_SKETCH(ellipse0, bool, ellipse_shapes[0]->getRendering());
		}
		
		SHAPEVEC_ITERATE(ellipse_shapes, EllipseData, myellipse) {
			if (line_shapes[0]->pointIsLeftOf(myellipse->getCentroid())) {
				leftCount++;
			}
			else {
				rightCount++;
			}
		} END_ITERATE;

		//return counts

		cout << "leftCount :" << leftCount << " rightCount: " << rightCount << endl;
	}
	$setupmachine{
		FindStuff =C=> ReportEllipses
	}
}

REGISTER_BEHAVIOR(Lab4p3);
