//-*-c++-*-

#include "Behaviors/StateMachine.h"
#include "DualCoding/DualCoding.h"

using namespace DualCoding;

class BuildMap : public VisualRoutinesStateNode {
public:
    BuildMap() : VisualRoutinesStateNode("BuildMap") {}
  
    virtual void DoStart() {
    
        // set up map builder request
        const int pink_index = ProjectInterface::getColorIndex("green");
        const int green_index = ProjectInterface::getColorIndex("blue");

        MapBuilderRequest req(MapBuilderRequest::cameraMap);
        
        req.objectColors[lineDataType].insert(pink_index);
        req.objectColors[blobDataType].insert(pink_index);
				req.objectColors[ellipseDataType].insert(green_index);

        // execute request
        unsigned int mapreq_id = mapBuilder.executeRequest(req);
        erouter->addListener(this, EventBase::mapbuilderEGID, mapreq_id, EventBase::statusETID);
    }

    virtual void processEvent(const EventBase &) {
        postStateCompletion();
    }

};

class TagBehavior : public VisualRoutinesStateNode {
public:
    TagBehavior(): VisualRoutinesStateNode("TagBehavior") {}
  
	virtual void setup() {
        #statemachine
	          startnode: BuildMap()
        #endstatemachine
    }
};
