|
BWAPI
|
#include <UpgradeTask.h>


Public Member Functions | |
| UpgradeTask (TaskType priority, BWAPI::UpgradeType type, int level) | |
| 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::UpgradeType | mType |
| int | mLevel |
| Unit | mUnit |
| int | mRequiredSatisfyTime |
| bool | mReservedResources |
Definition at line 7 of file UpgradeTask.h.
| UpgradeTask::UpgradeTask | ( | TaskType | priority, |
| BWAPI::UpgradeType | type, | ||
| int | level | ||
| ) |
Definition at line 5 of file UpgradeTask.cpp.
: Task(priority) , mType(type) , mLevel(level) , mReservedResources(false) , mRequiredSatisfyTime(BWAPI::Broodwar->getFrameCount()) { }
| virtual int UpgradeTask::dispatchTime | ( | ) | const [inline, virtual] |
Reimplemented from Task.
Definition at line 36 of file UpgradeTask.h.
References mRequiredSatisfyTime.
{ return mRequiredSatisfyTime; }
| Position UpgradeTask::getEndLocation | ( | Unit | unit | ) | const [virtual] |
| int UpgradeTask::getEndTime | ( | ) | const [virtual] |
Implements Task.
Definition at line 14 of file UpgradeTask.cpp.
References BWAPI::Broodwar, BWAPI::Game::getFrameCount(), Requirement::maxTime, mLevel, mRequiredSatisfyTime, mType, mUnit, and BWAPI::UpgradeType::upgradeTime().
Referenced by getEndTime().
{
if(mUnit)
return BWAPI::Broodwar->getFrameCount() + mUnit->getRemainingUpgradeTime();
if(mRequiredSatisfyTime == Requirement::maxTime)
return mRequiredSatisfyTime;
return mRequiredSatisfyTime + mType.upgradeTime(mLevel);
}


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

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

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

| int UpgradeTask::getPriority | ( | Unit | unit | ) | const [virtual] |
| Position UpgradeTask::getStartLocation | ( | Unit | unit | ) | const [virtual] |
| virtual std::string UpgradeTask::getTaskName | ( | ) | const [inline, virtual] |
| void UpgradeTask::giveUnit | ( | Unit | unit | ) | [virtual] |
Implements Task.
Definition at line 80 of file UpgradeTask.cpp.
References BWAPI::UpgradeType::gasPrice(), Singleton< T >::Instance(), BWAPI::UpgradeType::mineralPrice(), mLevel, mRequiredSatisfyTime, mReservedResources, mType, mUnit, and BWAPI::UpgradeType::whatUpgrades().
{
if(unit->getType() == mType.whatUpgrades())
{
mUnit = unit;
assert(mReservedResources == false);
ResourceTracker::Instance().reserveCurrentMinerals(mRequiredSatisfyTime, mType.mineralPrice(mLevel));
ResourceTracker::Instance().reserveCurrentGas(mRequiredSatisfyTime, mType.gasPrice(mLevel));
mReservedResources = true;
}
}

| virtual bool UpgradeTask::hasDispatched | ( | ) | const [inline, virtual] |
Reimplemented from Task.
Definition at line 39 of file UpgradeTask.h.
References mUnit.
{ return mUnit; }
| virtual bool UpgradeTask::inProgress | ( | ) | const [inline, virtual] |
| bool UpgradeTask::morph | ( | Unit | unit, |
| BWAPI::UnitType | previousType | ||
| ) | [virtual] |
| bool UpgradeTask::preUpdate | ( | ) | [virtual] |
Implements Task.
Definition at line 40 of file UpgradeTask.cpp.
References BWAPI::Broodwar, Task::complete(), Task::isCanceled(), Task::isCompleted(), Task::isStopped(), mLevel, mType, mUnit, and updateRequirements().
{
if(BWAPI::Broodwar->self()->getUpgradeLevel(mType) >= mLevel)
complete();
if((isStopped() || isCanceled() || isCompleted()) && mUnit && !mUnit->isUpgrading())
return true;
updateRequirements();
return false;
}

| void UpgradeTask::returnUnit | ( | Unit | unit | ) | [virtual] |
Implements Task.
Definition at line 92 of file UpgradeTask.cpp.
References BWAPI::UpgradeType::gasPrice(), Singleton< T >::Instance(), BWAPI::UpgradeType::mineralPrice(), mLevel, mRequiredSatisfyTime, mReservedResources, mType, mUnit, and StaticUnits::nullunit.
{
if(mUnit == unit)
{
mUnit = StaticUnits::nullunit;
if(mReservedResources)
{
ResourceTracker::Instance().releaseCurrentMinerals(mRequiredSatisfyTime, mType.mineralPrice(mLevel));
ResourceTracker::Instance().releaseCurrentGas(mRequiredSatisfyTime, mType.gasPrice(mLevel));
mReservedResources = false;
}
}
else
assert(false);
}

| virtual void UpgradeTask::setRequiredSatisfyTime | ( | RequirementGroup | requirements, |
| int | time, | ||
| int | delay | ||
| ) | [inline, virtual] |
Reimplemented from Task.
Definition at line 34 of file UpgradeTask.h.
References mRequiredSatisfyTime.
{ mRequiredSatisfyTime = time; }
| virtual int UpgradeTask::startTime | ( | ) | const [inline, virtual] |
Reimplemented from Task.
Definition at line 37 of file UpgradeTask.h.
References mRequiredSatisfyTime.
{ return mRequiredSatisfyTime; }
| bool UpgradeTask::update | ( | ) | [virtual] |
Implements Task.
Definition at line 53 of file UpgradeTask.cpp.
References BWAPI::UpgradeType::gasPrice(), Task::hasEnded(), Singleton< T >::Instance(), Task::isCanceled(), Task::isPaused(), Task::isStopped(), BWAPI::UpgradeType::mineralPrice(), mLevel, mRequiredSatisfyTime, mReservedResources, mType, mUnit, and Task::shouldReturnUnit().
{
if(mUnit)
{
if(mUnit->isUpgrading())
{
if(mUnit->getUpgrade() != mType || isStopped() || isPaused() || isCanceled())
mUnit->cancel();
else if(mReservedResources)
{
ResourceTracker::Instance().releaseCurrentMinerals(mRequiredSatisfyTime, mType.mineralPrice(mLevel));
ResourceTracker::Instance().releaseCurrentGas(mRequiredSatisfyTime, mType.gasPrice(mLevel));
mReservedResources = false;
}
}
else if(!shouldReturnUnit())
mUnit->upgrade(mType);
}
return hasEnded() && !mUnit;
}

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

| bool UpgradeTask::waitingForUnit | ( | Unit | unit | ) | const [virtual] |
int UpgradeTask::mLevel [private] |
Definition at line 44 of file UpgradeTask.h.
Referenced by getEndTime(), giveUnit(), preUpdate(), returnUnit(), update(), and updateRequirements().
int UpgradeTask::mRequiredSatisfyTime [private] |
Definition at line 48 of file UpgradeTask.h.
Referenced by dispatchTime(), getEndTime(), giveUnit(), returnUnit(), setRequiredSatisfyTime(), startTime(), and update().
bool UpgradeTask::mReservedResources [private] |
Definition at line 50 of file UpgradeTask.h.
Referenced by giveUnit(), returnUnit(), update(), and updateRequirements().
BWAPI::UpgradeType UpgradeTask::mType [private] |
Definition at line 43 of file UpgradeTask.h.
Referenced by getEndTime(), getOutputName(), giveUnit(), preUpdate(), returnUnit(), update(), and updateRequirements().
Unit UpgradeTask::mUnit [private] |
Definition at line 46 of file UpgradeTask.h.
Referenced by getEndTime(), getFinishedUnits(), giveUnit(), hasDispatched(), inProgress(), preUpdate(), returnUnit(), update(), and updateRequirements().
1.7.6.1