BWAPI
Public Member Functions | Private Attributes
MineBlockingMineralTask Class Reference

#include <MineBlockingMineralTask.h>

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

List of all members.

Public Member Functions

 MineBlockingMineralTask (TaskType priority, UnitGroup minerals)
virtual int getEndTime () const
virtual int getEndTime (Unit unit) const
virtual int getPriority (Unit unit) const
virtual Position getStartLocation (Unit unit) const
virtual Position getEndLocation (Unit unit) const
virtual bool preUpdate ()
virtual bool update ()
virtual void updateRequirements ()
virtual bool waitingForUnit (Unit unit) const
virtual void giveUnit (Unit unit)
virtual void returnUnit (Unit unit)
virtual bool morph (Unit unit, BWAPI::UnitType previousType)
virtual UnitGroup getFinishedUnits ()
virtual std::string getTaskName () const
virtual std::string getOutputName () const

Private Attributes

Unit mUnit
UnitGroup mMinerals

Detailed Description

Definition at line 8 of file MineBlockingMineralTask.h.


Constructor & Destructor Documentation

Definition at line 3 of file MineBlockingMineralTask.cpp.

        : Task(priority)
        , mMinerals(minerals)
{
}

Member Function Documentation

Implements Task.

Definition at line 29 of file MineBlockingMineralTask.cpp.

{
        return unit->getPosition();
}
int MineBlockingMineralTask::getEndTime ( ) const [virtual]

Implements Task.

Definition at line 9 of file MineBlockingMineralTask.cpp.

References Requirement::maxTime.

Referenced by getEndTime().

Here is the caller graph for this function:

int MineBlockingMineralTask::getEndTime ( Unit  unit) const [virtual]

Implements Task.

Definition at line 14 of file MineBlockingMineralTask.cpp.

References getEndTime().

{
        return getEndTime();
}

Here is the call graph for this function:

Implements Task.

Definition at line 111 of file MineBlockingMineralTask.cpp.

References UnitGroup::insert(), and mUnit.

{
        UnitGroup returnUnits;

        returnUnits.insert(mUnit);

        return returnUnits;
}

Here is the call graph for this function:

virtual std::string MineBlockingMineralTask::getOutputName ( ) const [inline, virtual]

Implements Task.

Definition at line 33 of file MineBlockingMineralTask.h.

{ return ""; }
int MineBlockingMineralTask::getPriority ( Unit  unit) const [virtual]

Implements Task.

Definition at line 19 of file MineBlockingMineralTask.cpp.

{
        return 35;
}

Implements Task.

Definition at line 24 of file MineBlockingMineralTask.cpp.

{
        return unit->getPosition();
}
virtual std::string MineBlockingMineralTask::getTaskName ( ) const [inline, virtual]

Implements Task.

Definition at line 32 of file MineBlockingMineralTask.h.

{ return "Mine Blocking Mineral"; }
void MineBlockingMineralTask::giveUnit ( Unit  unit) [virtual]

Implements Task.

Definition at line 96 of file MineBlockingMineralTask.cpp.

References mUnit.

{
        mUnit = unit;
}
bool MineBlockingMineralTask::morph ( Unit  unit,
BWAPI::UnitType  previousType 
) [virtual]

Implements Task.

Definition at line 106 of file MineBlockingMineralTask.cpp.

{
        return true;
}

Implements Task.

Definition at line 34 of file MineBlockingMineralTask.cpp.

References UnitGroup::begin(), Task::complete(), AccessTypeDef::Dead, UnitGroup::empty(), UnitGroup::end(), UnitGroup::erase(), Task::hasEnded(), mMinerals, and mUnit.

{
        for(std::set<Unit>::iterator it = mMinerals.begin(); it != mMinerals.end();)
        {
                if((*it)->accessibility() == AccessType::Dead)
                        mMinerals.erase(it++);
                else
                        ++it;
        }

        if(mMinerals.empty())
                complete();

        return hasEnded() && mUnit;
}

Here is the call graph for this function:

void MineBlockingMineralTask::returnUnit ( Unit  unit) [virtual]

Implements Task.

Definition at line 101 of file MineBlockingMineralTask.cpp.

References mUnit, and StaticUnits::nullunit.

bool MineBlockingMineralTask::update ( ) [virtual]

Implements Task.

Definition at line 50 of file MineBlockingMineralTask.cpp.

References Task::hasEnded(), mMinerals, and mUnit.

{
        if(mUnit)
        {
                if(mUnit->isCarryingGas() || mUnit->isCarryingMinerals())
                        mUnit->returnCargo();
                else
                {
                        Unit closestMineral;
                        int closestDistance = std::numeric_limits<int>::max();
                        for each(Unit mineral in mMinerals)
                        {
                                int distance = mineral->getDistance(mUnit);
                                if(distance < closestDistance)
                                {
                                        closestMineral = mineral;
                                        closestDistance = distance;
                                }
                        }

                        if(closestMineral)
                                mUnit->gather(closestMineral);
                }
        }

        return hasEnded() && !mUnit;
}

Here is the call graph for this function:

bool MineBlockingMineralTask::waitingForUnit ( Unit  unit) const [virtual]

Implements Task.

Definition at line 91 of file MineBlockingMineralTask.cpp.

{
        return false;
}

Member Data Documentation

Definition at line 38 of file MineBlockingMineralTask.h.

Referenced by preUpdate(), update(), and updateRequirements().


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