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().