|
BWAPI
|
#include <TechTask.h>


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 |
Definition at line 7 of file TechTask.h.
| 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()) { }
| virtual int TechTask::dispatchTime | ( | ) | const [inline, virtual] |
Reimplemented from Task.
Definition at line 36 of file TechTask.h.
References mRequiredSatisfyTime.
{ return mRequiredSatisfyTime; }
| Position TechTask::getEndLocation | ( | Unit | unit | ) | const [virtual] |
| 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().
{
if(mUnit)
return BWAPI::Broodwar->getFrameCount() + mUnit->getRemainingResearchTime();
if(mRequiredSatisfyTime == Requirement::maxTime)
return mRequiredSatisfyTime;
return mRequiredSatisfyTime + mType.researchTime();
}


| int TechTask::getEndTime | ( | Unit | unit | ) | const [virtual] |
Implements Task.
Definition at line 24 of file TechTask.cpp.
References getEndTime().
{
return getEndTime();
}

| UnitGroup TechTask::getFinishedUnits | ( | ) | [virtual] |
Implements Task.
Definition at line 113 of file TechTask.cpp.
References UnitGroup::insert(), and mUnit.

| virtual std::string TechTask::getOutputName | ( | ) | const [inline, virtual] |
Implements Task.
Definition at line 32 of file TechTask.h.
References BWAPI::TechType::getName(), and mType.

| int TechTask::getPriority | ( | Unit | unit | ) | const [virtual] |
| Position TechTask::getStartLocation | ( | Unit | unit | ) | const [virtual] |
| virtual std::string TechTask::getTaskName | ( | ) | const [inline, virtual] |
| 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;
}
}

| 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] |
| bool TechTask::morph | ( | Unit | unit, |
| BWAPI::UnitType | previousType | ||
| ) | [virtual] |
| 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;
}

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

| 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.
{ mRequiredSatisfyTime = time; }
| virtual int TechTask::startTime | ( | ) | const [inline, virtual] |
Reimplemented from Task.
Definition at line 37 of file TechTask.h.
References mRequiredSatisfyTime.
{ return 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;
}

| void TechTask::updateRequirements | ( | ) | [virtual] |
Reimplemented from Task.
Definition at line 128 of file TechTask.cpp.
References RequirementGroup::addGasRequirement(), RequirementGroup::addMineralRequirement(), Task::addRequirement(), RequirementGroup::addTechForTypeRequirement(), RequirementGroup::addUnitFilterRequirement(), Task::clearRequirements(), BWAPI::TechType::gasPrice(), UnitFilterFlags::IsComplete, BWAPI::TechType::mineralPrice(), mReservedResources, mType, mUnit, BWAPI::TechType::researchTime(), Task::shouldReturnUnit(), and BWAPI::TechType::whatResearches().
Referenced by preUpdate().
{
clearRequirements();
if(!mUnit && !shouldReturnUnit())
{
RequirementGroup requiredConditions;
assert(mReservedResources == false);
requiredConditions.addTechForTypeRequirement(mType);
requiredConditions.addUnitFilterRequirement(40, mType.researchTime(), UnitFilter(mType.whatResearches()) && UnitFilter(UnitFilterFlags::IsComplete));
requiredConditions.addMineralRequirement(mType.mineralPrice());
requiredConditions.addGasRequirement(mType.gasPrice());
addRequirement(requiredConditions);
}
}

| bool TechTask::waitingForUnit | ( | Unit | unit | ) | const [virtual] |
int TechTask::mRequiredSatisfyTime [private] |
Definition at line 47 of file TechTask.h.
Referenced by dispatchTime(), getEndTime(), giveUnit(), returnUnit(), setRequiredSatisfyTime(), startTime(), and update().
bool TechTask::mReservedResources [private] |
Definition at line 49 of file TechTask.h.
Referenced by giveUnit(), returnUnit(), update(), and updateRequirements().
BWAPI::TechType TechTask::mType [private] |
Definition at line 43 of file TechTask.h.
Referenced by getEndTime(), getOutputName(), giveUnit(), preUpdate(), returnUnit(), update(), and updateRequirements().
Unit TechTask::mUnit [private] |
Definition at line 45 of file TechTask.h.
Referenced by getEndTime(), getFinishedUnits(), giveUnit(), hasDispatched(), inProgress(), preUpdate(), returnUnit(), update(), and updateRequirements().
1.7.6.1