#pragma once
#include "../../Utils/Component.h"
#include "../../Utils/Event.h"
#include <BWAPI.h>

class Tracking : public Component
{
public:
  Tracking();
  
  ~Tracking();

  void onUnitDiscover(void*, BWAPI::Unit* unit);

protected:
  virtual void _output(std::ostream& out) const
  {
    out << "Tracking";
  }

  bool isIncompatible(const UnitRecord* unitRecord, BWAPI::Unit* unit) const;

  EVENT_HANDLER1(Tracking, onUnitDiscover, BWAPI::Unit*) m_unitDiscoverEventHandler;
  Event<boost::tuple<BWAPI::Unit*>>::SubscriberID m_unitDiscoverID;
};