#pragma once
#include "EngageEnemies/GroupCarefulAttack/SplitGroupCarefulAttackBehavior.h"

template<class Behavior>
struct BehaviorChoice;

template<>
struct BehaviorChoice<EngageEnemiesBehavior>
{
	static EngageEnemiesBehavior* instantiate(const Process* parent, unsigned int initialPriority, const PersistentUnitGroup* group, const std::set<BWAPI::Unit*>& enemyUnits)
	{
	  // Here some kind of analysis of the group / enemies composition should take place in order to choose 
    // the specialized behavior implementation.
    // A general behavior implementation could be used when no correct specialization is available.
    
    return new SplitGroupCarefulAttackBehavior(parent, initialPriority, group, enemyUnits);
  }
	
};
