#pragma once
#include "../../Utils/Component.h"
#include "../../SituationAnalysis/Layer1GameState/Layer1GameState.h"
#include "../../SparAIContainer.h"

class Layer1Reactive : public Process
{
public:
  Layer1Reactive(Layer1GameState& layer1GameState)
    : Process(Spar)
    , m_layer1GameState(layer1GameState)
  {
    s_instance = this;
  }

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

  typedef empty<Layer1Reactive> L1UnitData;

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

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

  static Layer1Reactive* s_instance;

  Layer1GameState& m_layer1GameState;
};
