#pragma once
#include "../../Interface/Actions/Move.h"
#include "L2GroupTacticalAction.h"

class L2Move : public virtual Move, public L2GroupTacticalAction
{
public:
  L2Move(const Process* parent, unsigned int priority, const PersistentUnitGroup* initialGroup, Location* destination)
    : Move(parent, priority, initialGroup, destination)
    , L2GroupTacticalAction(parent, priority, initialGroup)
    , GroupTacticalAction(parent, priority, initialGroup)
    , TacticalAction(parent, priority)
    , Process(parent)
  {
  }
protected:
  virtual void onStartImplementation();
  virtual void onCancelImplementation();
  virtual void onEndImplementation();

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

