BWAPI
Public Member Functions | Private Attributes
TechTask Class Reference

#include <TechTask.h>

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

List of all members.

Public Member Functions

 TechTask (TaskType priority, BWAPI::TechType type)
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
virtual void setRequiredSatisfyTime (RequirementGroup requirements, int time, int delay)
virtual int dispatchTime () const
virtual int startTime () const
virtual bool hasDispatched () const
virtual bool inProgress () const

Private Attributes

BWAPI::TechType mType
Unit mUnit
int mRequiredSatisfyTime
bool mReservedResources

Detailed Description

Definition at line 7 of file TechTask.h.


Constructor & Destructor Documentation

TechTask::TechTask ( TaskType  priority,
BWAPI::TechType  type 
)

Definition at line 5 of file TechTask.cpp.

        : Task(priority)
        , mType(type)
        , mReservedResources(false)
        , mRequiredSatisfyTime(BWAPI::Broodwar->getFrameCount())
{
}

Member Function Documentation

virtual int TechTask::dispatchTime ( ) const [inline, virtual]

Reimplemented from Task.

Definition at line 36 of file TechTask.h.

References mRequiredSatisfyTime.

Position TechTask::getEndLocation ( Unit  unit) const [virtual]

Implements Task.

Definition at line 34 of file TechTask.cpp.

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

Implements Task.

Definition at line 13 of file TechTask.cpp.

References BWAPI::Broodwar, BWAPI::Game::getFrameCount(), Requirement::maxTime, mRequiredSatisfyTime, mType, mUnit, and BWAPI::TechType::researchTime().

Referenced by getEndTime().

Here is the call graph for this function:

Here is the caller graph for this function:

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

Implements Task.

Definition at line 24 of file TechTask.cpp.

References getEndTime().

{
        return getEndTime();
}

Here is the call graph for this function:

Implements Task.

Definition at line 113 of file TechTask.cpp.

References UnitGroup::insert(), and mUnit.

{
        UnitGroup returnUnits;

        if(mUnit)
                returnUnits.insert(mUnit);

        return returnUnits;
}

Here is the call graph for this function:

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

Implements Task.

Definition at line 32 of file TechTask.h.

References BWAPI::TechType::getName(), and mType.

{ return mType.getName(); }

Here is the call graph for this function:

int TechTask::getPriority ( Unit  unit) const [virtual]

Implements Task.

Definition at line 123 of file TechTask.cpp.

{
        return 40;
}
Position TechTask::getStartLocation ( Unit  unit) const [virtual]

Implements Task.

Definition at line 29 of file TechTask.cpp.

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

Implements Task.

Definition at line 31 of file TechTask.h.

{ return "Researching"; }
void TechTask::giveUnit ( Unit  unit) [virtual]

Implements Task.

Definition at line 79 of file TechTask.cpp.

References BWAPI::TechType::gasPrice(), Singleton< T >::Instance(), BWAPI::TechType::mineralPrice(), mRequiredSatisfyTime, mReservedResources, mType, mUnit, and BWAPI::TechType::whatResearches().

{
        if(unit->getType() == mType.whatResearches())
        {
                mUnit = unit;
                assert(mReservedResources == false);
                ResourceTracker::Instance().reserveCurrentMinerals(mRequiredSatisfyTime, mType.mineralPrice());
                ResourceTracker::Instance().reserveCurrentGas(mRequiredSatisfyTime, mType.gasPrice());
                mReservedResources = true;
        }
}

Here is the call graph for this function:

virtual bool TechTask::hasDispatched ( ) const [inline, virtual]

Reimplemented from Task.

Definition at line 39 of file TechTask.h.

References mUnit.

{ return mUnit; }
virtual bool TechTask::inProgress ( ) const [inline, virtual]

Reimplemented from Task.

Definition at line 40 of file TechTask.h.

References mUnit.

{ return mUnit && mUnit->isResearching(); }
bool TechTask::morph ( Unit  unit,
BWAPI::UnitType  previousType 
) [virtual]

Implements Task.

Definition at line 108 of file TechTask.cpp.

{
        return true;
}
bool TechTask::preUpdate ( ) [virtual]

Implements Task.

Definition at line 39 of file TechTask.cpp.

References BWAPI::Broodwar, Task::complete(), Task::isCanceled(), Task::isCompleted(), Task::isStopped(), mType, mUnit, and updateRequirements().

{
        if(BWAPI::Broodwar->self()->hasResearched(mType))
                complete();

        if((isStopped() || isCanceled() || isCompleted()) && mUnit && !mUnit->isResearching())
                return true;

        updateRequirements();

        return false;
}

Here is the call graph for this function:

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

Implements Task.

Definition at line 91 of file TechTask.cpp.

References BWAPI::TechType::gasPrice(), Singleton< T >::Instance(), BWAPI::TechType::mineralPrice(), mRequiredSatisfyTime, mReservedResources, mType, mUnit, and StaticUnits::nullunit.

{
        if(mUnit == unit)
        {
                mUnit = StaticUnits::nullunit;

                if(mReservedResources)
                {
                        ResourceTracker::Instance().releaseCurrentMinerals(mRequiredSatisfyTime, mType.mineralPrice());
                        ResourceTracker::Instance().releaseCurrentGas(mRequiredSatisfyTime, mType.gasPrice());
                        mReservedResources = false;
                }
        }
        else
                assert(false);
}

Here is the call graph for this function:

virtual void TechTask::setRequiredSatisfyTime ( RequirementGroup  requirements,
int  time,
int  delay 
) [inline, virtual]

Reimplemented from Task.

Definition at line 34 of file TechTask.h.

References mRequiredSatisfyTime.

virtual int TechTask::startTime ( ) const [inline, virtual]

Reimplemented from Task.

Definition at line 37 of file TechTask.h.

References mRequiredSatisfyTime.

bool TechTask::update ( ) [virtual]

Implements Task.

Definition at line 52 of file TechTask.cpp.

References BWAPI::TechType::gasPrice(), Task::hasEnded(), Singleton< T >::Instance(), Task::isCanceled(), Task::isPaused(), Task::isStopped(), BWAPI::TechType::mineralPrice(), mRequiredSatisfyTime, mReservedResources, mType, mUnit, and Task::shouldReturnUnit().

{
        if(mUnit)
        {
                if(mUnit->isResearching())
                {
                        if(mUnit->getTech() != mType || isStopped() || isPaused() || isCanceled())
                                mUnit->cancel();
                        else if(mReservedResources)
                        {
                                ResourceTracker::Instance().releaseCurrentMinerals(mRequiredSatisfyTime, mType.mineralPrice());
                                ResourceTracker::Instance().releaseCurrentGas(mRequiredSatisfyTime, mType.gasPrice());
                                mReservedResources = false;
                        }
                }
                else if(!shouldReturnUnit())
                        mUnit->research(mType);
        }

        return hasEnded() && !mUnit;
}

Here is the call graph for this function:

void TechTask::updateRequirements ( ) [virtual]
bool TechTask::waitingForUnit ( Unit  unit) const [virtual]

Implements Task.

Definition at line 74 of file TechTask.cpp.

{
        return false;
}

Member Data Documentation

Definition at line 49 of file TechTask.h.

Referenced by giveUnit(), returnUnit(), update(), and updateRequirements().

Unit TechTask::mUnit [private]

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