#pragma once
#include "../../../Utils/Utils.h"
#include "../../SituationAnalysis/Layer4StrategicRecognition/Layer4StrategicRecognition.h"
#include "../Layer3Tactical/Layer3Tactical.h"

class Layer4Strategic : public Process
{
public:
  Layer4Strategic(Layer4StrategicRecognition& layer4StrategicRecognition, Layer3Tactical& layer3Tactical)
    : Process(Spar)
    , m_layer4StrategicRecognition(layer4StrategicRecognition)
    , m_layer3Tactical(layer3Tactical)
  {
    s_instance = this;
  }

  static Layer4Strategic& getInstance()
  {
    return *s_instance;
  }

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

  virtual void _output(std::ostream& out) const
  {
    out << "Layer 4 Decision making - Strategic";
  }

  static Layer4Strategic* s_instance;

  Layer4StrategicRecognition& m_layer4StrategicRecognition;
  Layer3Tactical& m_layer3Tactical;
};
