#include "Behaviors/StateMachine.h"

//////////////////////////////////////
// Part I - Building Local Maps
//////////////////////////////////////

$nodeclass Lab5Part1 : VisualRoutinesStateNode {

	$nodeclass FindStuff : MapBuilderNode(MapBuilderRequest::localMap) : doStart {
		mapreq.clearLocal = false;

		mapreq.addObjectColor(lineDataType, "red");
		mapreq.addObjectColor(lineDataType, "green");

		mapreq.addObjectColor(ellipseDataType, "red");
		mapreq.addObjectColor(ellipseDataType, "green");
		mapreq.addObjectColor(ellipseDataType, "blue");

		mapreq.addOccluderColor(ellipseDataType, "red");
		mapreq.addOccluderColor(ellipseDataType, "blue");
	}

	$nodeclass SlowHeadPointerNode : HeadPointerNode : preStart {
		HeadPointerNode::preStart();
		getMC()->setMaxSpeed(0, 0.4);
		getMC()->setMaxSpeed(1, 0.4);
	}

	$nodeclass LookNode(int x, int y) : SlowHeadPointerNode : doStart {
		getMC()->lookAtPoint(x, y, 0);
	}

	$setupmachine {
		startnode: StateNode
				       =N=>LookNode(700,0)
				       =C=>FindStuff
					   =C=>LookNode(350,125)
				       =C=>FindStuff
					   =C=>LookNode(130,250)
				       =C=>FindStuff
	}
}

REGISTER_BEHAVIOR(Lab5Part1);
