|
BWAPI
|
#include <MorphTask.h>


Public Member Functions | |
| MorphTask (TaskType priority, BWAPI::UnitType 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 Member Functions | |
| void | reserveResources () |
| void | freeResources () |
Private Attributes | |
| BWAPI::UnitType | mType |
| Unit | mUnit |
| int | mRequiredSatisfyTime |
| bool | mReservedResources |
Definition at line 7 of file MorphTask.h.
| MorphTask::MorphTask | ( | TaskType | priority, |
| BWAPI::UnitType | type | ||
| ) |
Definition at line 5 of file MorphTask.cpp.
: Task(priority) , mType(type) , mReservedResources(false) , mRequiredSatisfyTime(BWAPI::Broodwar->getFrameCount()) { }
| virtual int MorphTask::dispatchTime | ( | ) | const [inline, virtual] |
Reimplemented from Task.
Definition at line 36 of file MorphTask.h.
References mRequiredSatisfyTime.
{ return mRequiredSatisfyTime; }
| void MorphTask::freeResources | ( | ) | [private] |
Definition at line 138 of file MorphTask.cpp.
References BWAPI::UnitType::gasPrice(), Singleton< T >::Instance(), BWAPI::UnitType::mineralPrice(), mRequiredSatisfyTime, mReservedResources, mType, and BWAPI::UnitType::supplyRequired().
Referenced by morph(), and updateRequirements().
{
if(mReservedResources)
{
ResourceTracker::Instance().releaseCurrentMinerals(mRequiredSatisfyTime, mType.mineralPrice());
ResourceTracker::Instance().releaseCurrentGas(mRequiredSatisfyTime, mType.gasPrice());
ResourceTracker::Instance().releaseCurrentSupply(mRequiredSatisfyTime, mType.supplyRequired());
mReservedResources = false;
}
}

| Position MorphTask::getEndLocation | ( | Unit | unit | ) | const [virtual] |
| int MorphTask::getEndTime | ( | ) | const [virtual] |
Implements Task.
Definition at line 13 of file MorphTask.cpp.
References BWAPI::UnitType::buildTime(), Task::isCompleted(), mRequiredSatisfyTime, mType, and mUnit.
Referenced by getEndTime().
{
if(mUnit && (mUnit->isMorphing() || !isCompleted()))
return mUnit->getCompletedTime();
return mRequiredSatisfyTime + mType.buildTime();
}


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

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

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

| int MorphTask::getPriority | ( | Unit | unit | ) | const [virtual] |
| Position MorphTask::getStartLocation | ( | Unit | unit | ) | const [virtual] |
| virtual std::string MorphTask::getTaskName | ( | ) | const [inline, virtual] |
| void MorphTask::giveUnit | ( | Unit | unit | ) | [virtual] |
Implements Task.
Definition at line 60 of file MorphTask.cpp.
References mType, mUnit, reserveResources(), and BWAPI::UnitType::whatBuilds().
{
if(unit->getType() == mType.whatBuilds().first)
{
mUnit = unit;
reserveResources();
}
}

| virtual bool MorphTask::hasDispatched | ( | ) | const [inline, virtual] |
Reimplemented from Task.
Definition at line 39 of file MorphTask.h.
References mUnit.
{ return mUnit; }
| virtual bool MorphTask::inProgress | ( | ) | const [inline, virtual] |
| bool MorphTask::morph | ( | Unit | unit, |
| BWAPI::UnitType | previousType | ||
| ) | [virtual] |
Implements Task.
Definition at line 80 of file MorphTask.cpp.
References freeResources(), and mType.
{
if(unit->getType() == mType || unit->getBuildType() == mType)
{
freeResources();
return false;
}
return true;
}

| bool MorphTask::preUpdate | ( | ) | [virtual] |
| void MorphTask::reserveResources | ( | ) | [private] |
Definition at line 127 of file MorphTask.cpp.
References BWAPI::UnitType::gasPrice(), Task::hasEnded(), Singleton< T >::Instance(), BWAPI::UnitType::mineralPrice(), mRequiredSatisfyTime, mReservedResources, mType, and BWAPI::UnitType::supplyRequired().
Referenced by giveUnit(), and returnUnit().
{
if(!mReservedResources && !hasEnded())
{
ResourceTracker::Instance().reserveCurrentMinerals(mRequiredSatisfyTime, mType.mineralPrice());
ResourceTracker::Instance().reserveCurrentGas(mRequiredSatisfyTime, mType.gasPrice());
ResourceTracker::Instance().reserveCurrentSupply(mRequiredSatisfyTime, mType.supplyRequired());
mReservedResources = true;
}
}


| void MorphTask::returnUnit | ( | Unit | unit | ) | [virtual] |
Implements Task.
Definition at line 69 of file MorphTask.cpp.
References mUnit, StaticUnits::nullunit, and reserveResources().
{
if(mUnit == unit)
{
reserveResources();
mUnit = StaticUnits::nullunit;
}
else
assert(false);
}

| virtual void MorphTask::setRequiredSatisfyTime | ( | RequirementGroup | requirements, |
| int | time, | ||
| int | delay | ||
| ) | [inline, virtual] |
Reimplemented from Task.
Definition at line 34 of file MorphTask.h.
References mRequiredSatisfyTime.
{ mRequiredSatisfyTime = time; }
| virtual int MorphTask::startTime | ( | ) | const [inline, virtual] |
Reimplemented from Task.
Definition at line 37 of file MorphTask.h.
References mRequiredSatisfyTime.
{ return mRequiredSatisfyTime; }
| bool MorphTask::update | ( | ) | [virtual] |
| void MorphTask::updateRequirements | ( | ) | [virtual] |
Reimplemented from Task.
Definition at line 106 of file MorphTask.cpp.
References RequirementGroup::addGasRequirement(), RequirementGroup::addMineralRequirement(), Task::addRequirement(), RequirementGroup::addSupplyRequirement(), RequirementGroup::addTechForTypeRequirement(), RequirementGroup::addUnitFilterRequirement(), BWAPI::UnitType::buildTime(), Task::clearRequirements(), freeResources(), BWAPI::UnitType::gasPrice(), UnitFilterFlags::IsComplete, BWAPI::UnitType::mineralPrice(), mType, mUnit, BWAPI::UnitType::supplyRequired(), and BWAPI::UnitType::whatBuilds().
{
clearRequirements();
if(!mUnit)
{
freeResources();
RequirementGroup requiredConditions;
requiredConditions.addUnitFilterRequirement(40, mType.buildTime(), UnitFilter(mType.whatBuilds().first) && UnitFilter(UnitFilterFlags::IsComplete));
requiredConditions.addTechForTypeRequirement(mType);
if(mType.mineralPrice() > 0) requiredConditions.addMineralRequirement(mType.mineralPrice());
if(mType.gasPrice() > 0) requiredConditions.addGasRequirement(mType.gasPrice());
if(mType.supplyRequired() > 0) requiredConditions.addSupplyRequirement(mType.supplyRequired());
addRequirement(requiredConditions);
}
}

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