BWAPI
Public Member Functions
MineDragAction Class Reference

#include <MineDragAction.h>

Inheritance diagram for MineDragAction:
Inheritance graph
[legend]
Collaboration diagram for MineDragAction:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 MineDragAction (Unit unit)
bool update (const Goal &squadGoal, const UnitGroup &squadUnitGroup)

Detailed Description

Definition at line 6 of file MineDragAction.h.


Constructor & Destructor Documentation

Definition at line 9 of file MineDragAction.h.


Member Function Documentation

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

Here is the call graph for this function:


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines