#include "Behaviors/StateMachine.h"

//using namespace DualCoding;

$nodeclass TicTacToes : VisualRoutinesStateNode {

  $nodeclass BuildMap : MapBuilderNode($,MapBuilderRequest::localMap) : doStart {

    NEW_SHAPE(gazePt, PointData, new PointData(localShS,Point(400,0,-100,egocentric)));
    mapreq.maxDist = 1500;
    mapreq.motionSettleTime = 2000;

    mapreq.addObjectColor(lineDataType, "yellow");
    mapreq.addOccluderColor(lineDataType, "blue");
    mapreq.addOccluderColor(lineDataType, "pink");
    mapreq.addOccluderColor(lineDataType, "green");
    mapreq.addOccluderColor(lineDataType, "orange");
 
    mapreq.addObjectColor(ellipseDataType,"blue");
    mapreq.addObjectColor(ellipseDataType,"pink");
    mapreq.addObjectColor(ellipseDataType,"green");
  }

  $nodeclass ExamineMap : SoundNode($, "barklow.wav") : doStart {
    cout << "MapBuilder found " << localShS.allShapes().size() << " shapes." << endl;

	NEW_SHAPEVEC(lines,LineData,select_type<LineData>(camShS));
	lines = stable_sort(lines,not2(LineData::LengthLessThan()));
Shape<LineData> hline1;
Shape<LineData> hline2;
Shape<LineData> vline1;
Shape<LineData> vline2;

for (int i = 0; i>4;i++){ 
if(LineData::IsHorizontal()(lines[i]))
	if(hline1==NULL)
		hline2=lines[i];
	else
		hline1=lines[i];
else
	if(vline1==NULL)
		vline2=lines[i];
	else
		vline1=lines[i];
}

//Point lPoint = leftMost((Point)(hline1->leftPt()), (Point)(hline2->leftPt()));
//NEW_SHAPE(line2, LineData, new LineData(camShS,lPoint,vline1->getThetaNorm()));


 }

  $setupmachine{
    BuildMap =MAP=> ExamineMap
  }

}

REGISTER_BEHAVIOR(TicTacToes);
