|
BWAPI
|
#include <MineDragAction.h>


Public Member Functions | |
| MineDragAction (Unit unit) | |
| bool | update (const Goal &squadGoal, const UnitGroup &squadUnitGroup) |
Definition at line 6 of file MineDragAction.h.
| MineDragAction::MineDragAction | ( | Unit | unit | ) | [inline] |
Definition at line 9 of file MineDragAction.h.
: SingleMicroActionBaseClass(unit) {}
| bool MineDragAction::update | ( | const Goal & | squadGoal, |
| const UnitGroup & | squadUnitGroup | ||
| ) | [virtual] |
Implements SingleMicroActionBaseClass.
Definition at line 8 of file MineDragAction.cpp.
References Singleton< T >::Instance(), SingleMicroActionBaseClass::mUnit, and BWAPI::UnitTypes::Terran_Vulture_Spider_Mine.
{
for each(Unit unit in UnitInformation::Instance().getUnitsTargetting(mUnit))
{
if(unit->getType() == BWAPI::UnitTypes::Terran_Vulture_Spider_Mine)
{
int distance = std::numeric_limits<int>::max();
Unit closestUnit;
for each(Unit enemyUnit in UnitTracker::Instance().selectAllEnemy())
{
if(enemyUnit->getType().isFlyer() || enemyUnit->isLifted() || enemyUnit->getType().isBuilding() || enemyUnit->getType() == BWAPI::UnitTypes::Terran_Vulture_Spider_Mine)
continue;
int thisDistance = mUnit->getDistance(enemyUnit);
if(thisDistance < distance)
{
distance = distance;
closestUnit = enemyUnit;
}
}
if(closestUnit && distance < 32*3)
{
mUnit->attack(closestUnit);
return true;
}
else
{
mUnit->move(unit->getPosition());
return true;
}
}
}
return false;
}
1.7.6.1