#pragma once
#include "../../Interface/Actions/Expand.h"
#include "L2Build.h"

class L2Expand : public virtual Expand, public L2Build
{
public:
  L2Expand(const Process* parent, unsigned int priority, BaseLocation* baseLocation)
    : Expand(parent, priority, baseLocation)
    , L2Build(parent, priority, baseLocation, BWAPI::UnitTypes::Protoss_Nexus)
    , Build(parent, priority, baseLocation, BWAPI::UnitTypes::Protoss_Nexus)
    , GroupTacticalAction(parent, priority)
    , TacticalAction(parent, priority)
    , Process(parent)
  {
  }

protected:
  virtual void onStartImplementation();
  virtual void onCancelImplementation();
  virtual void onEndImplementation();

  virtual void onUnitAddedToGroup(void* data, BWAPI::Unit* unit)
  {
    L2Build::onUnitAddedToGroup(data, unit);
  }
  virtual void onUnitRemovedFromGroup(void* data, BWAPI::Unit* unit)
  {
    L2Build::onUnitRemovedFromGroup(data, unit);
  }
};
