#pragma once
#include "Layer4Process.h"
#include "../../../Layer3Tactical/Interface/ArmyComposition.h"
#include "../../../Layer3Tactical/Interface/TechSet.h"

#pragma region TODO-PLANNING-REFACTOR

class UpdateTargetArmyAndTechsProcess : public Layer4Process
{
public:
  UpdateTargetArmyAndTechsProcess(const Process* parent)
    : Layer4Process(parent, Scheduler::SCHEDULING_MEDIUM_PRIORITY, 21, 0)
  {
  }

  virtual void run();

protected:
  virtual void _output(std::ostream& out) const
  {
    out << "Update army and tech objectives";
  }

  ArmyComposition estimateBestCounter() const;
  TechSet getTargetTechs(const ArmyComposition& targetArmyComposition) const;
  void addImprovementTechs(const ArmyComposition& targetArmyComposition, TechSet& techs) const;
};

#pragma endregion