#pragma once
#include "../Layer4Strategic.h"
#include "Processes/UpdateTargetArmyAndTechsProcess.h"

class Layer4Heuristic : public Layer4Strategic
{
public:
  Layer4Heuristic(Layer4StrategicRecognition& layer4StrategicRecognition, Layer3Tactical& layer3Tactical);

  Layer3Tactical& getLayer3() const { return m_layer3Tactical; }

  static Layer4Heuristic& getInstance()
  {
    return static_cast<Layer4Heuristic&>(Layer4Strategic::getInstance());
  }

  void onFrame();
protected:
  virtual void onStart();
  virtual void onEnd() { Layer4Strategic::onEnd(); }

  // Periodic tasks
  UpdateTargetArmyAndTechsProcess m_updateArmyAndTechs;
};
