#include "Behaviors/StateMachine.h"

$nodeclass CountEasterEggsPart2 : VisualRoutinesStateNode {

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

  $nodeclass ExamineResults : VisualRoutinesStateNode : doStart {
    NEW_SHAPEVEC(myLines, LineData, select_type<LineData>(camShS));
    NEW_SHAPEVEC(myEllipses, EllipseData, select_type<EllipseData>(camShS));
    cout << "Found " << myEllipses.size() << " ellipses." << endl;

    int left = 0, right = 0;
    if(myLines.size() == 0) {
      cout << "No lines! T_T" << endl;
    } else {

      myLines[0]->setInfinite();

      SHAPEVEC_ITERATE(myEllipses, EllipseData, e) {
        if(myLines[0]->pointIsLeftOf(e->getCentroid())) {
          left++;
        } else if(myLines[0]->pointIsRightOf(e->getCentroid())) {
          right++;
        } else {
          cout << "D=" << endl;
        }
      } END_ITERATE;
      cout << "left: " << left << "; right: " << right << endl;
    }
  }

  $setupmachine{
    LookForEllipses =MAP=> ExamineResults
  }

}

REGISTER_BEHAVIOR(CountEasterEggsPart2);

