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; }