|
BWAPI
|
#include <TrainTask.h>


Public Member Functions | |
| TrainTask (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 |
| BWAPI::UnitType | getTrainType () |
Private Member Functions | |
| void | reserveResources () |
| void | freeResources () |
Private Attributes | |
| BWAPI::UnitType | mType |
| Unit | mProductionBuilding |
| Unit | mProducedUnit |
| int | mRequiredSatisfyTime |
| bool | mReservedResources |
| int | mOrderTime |
Definition at line 7 of file TrainTask.h.
| TrainTask::TrainTask | ( | TaskType | priority, |
| BWAPI::UnitType | type | ||
| ) |
Definition at line 6 of file TrainTask.cpp.
: Task(priority) , mType(type) , mReservedResources(false) , mRequiredSatisfyTime(BWAPI::Broodwar->getFrameCount()) , mOrderTime(0) { }
| virtual int TrainTask::dispatchTime | ( | ) | const [inline, virtual] |
Reimplemented from Task.
Definition at line 36 of file TrainTask.h.
References mRequiredSatisfyTime.
{ return mRequiredSatisfyTime; }
| void TrainTask::freeResources | ( | ) | [private] |
Definition at line 167 of file TrainTask.cpp.
References BWAPI::UnitType::gasPrice(), Singleton< T >::Instance(), BWAPI::UnitType::mineralPrice(), mRequiredSatisfyTime, mReservedResources, mType, and BWAPI::UnitType::supplyRequired().
Referenced by giveUnit(), returnUnit(), 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 TrainTask::getEndLocation | ( | Unit | unit | ) | const [virtual] |
| int TrainTask::getEndTime | ( | ) | const [virtual] |
Implements Task.
Definition at line 15 of file TrainTask.cpp.
References BWAPI::Broodwar, BWAPI::UnitType::buildTime(), BWAPI::Game::getFrameCount(), Requirement::maxTime, mProducedUnit, mProductionBuilding, mRequiredSatisfyTime, and mType.
Referenced by getEndTime().
{
if(mProducedUnit && mProductionBuilding)
return BWAPI::Broodwar->getFrameCount() + mProductionBuilding->getRemainingTrainTime();
if(mProductionBuilding)
return BWAPI::Broodwar->getFrameCount() + mType.buildTime();
if(mRequiredSatisfyTime == Requirement::maxTime)
return mRequiredSatisfyTime;
return std::max(mRequiredSatisfyTime, BWAPI::Broodwar->getFrameCount()) + mType.buildTime();
}


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

| UnitGroup TrainTask::getFinishedUnits | ( | ) | [virtual] |
Implements Task.
Definition at line 117 of file TrainTask.cpp.
References UnitGroup::insert(), mProducedUnit, and mProductionBuilding.
{
UnitGroup returnUnits;
if(mProductionBuilding)
returnUnits.insert(mProductionBuilding);
if(mProducedUnit)
returnUnits.insert(mProducedUnit);
return returnUnits;
}

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

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

| virtual bool TrainTask::hasDispatched | ( | ) | const [inline, virtual] |
Reimplemented from Task.
Definition at line 39 of file TrainTask.h.
References mProductionBuilding.
{ return mProductionBuilding; }
| virtual bool TrainTask::inProgress | ( | ) | const [inline, virtual] |
Reimplemented from Task.
Definition at line 40 of file TrainTask.h.
References mProducedUnit.
{ return mProducedUnit; }
| bool TrainTask::morph | ( | Unit | unit, |
| BWAPI::UnitType | previousType | ||
| ) | [virtual] |
| bool TrainTask::preUpdate | ( | ) | [virtual] |
Implements Task.
Definition at line 44 of file TrainTask.cpp.
References Task::complete(), mProducedUnit, mProductionBuilding, and Task::shouldReturnUnit().
{
if(mProducedUnit && mProducedUnit->isCompleted())
{
complete();
return true;
}
if(mProductionBuilding && shouldReturnUnit())
return true;
return false;
}

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


| void TrainTask::returnUnit | ( | Unit | unit | ) | [virtual] |
Implements Task.
Definition at line 96 of file TrainTask.cpp.
References freeResources(), mProducedUnit, mProductionBuilding, and StaticUnits::nullunit.
{
if(mProductionBuilding == unit)
{
freeResources();
mProductionBuilding = StaticUnits::nullunit;
}
else if(mProducedUnit == unit)
{
freeResources();
mProducedUnit = StaticUnits::nullunit;
}
else
assert(false);
}

| virtual void TrainTask::setRequiredSatisfyTime | ( | RequirementGroup | requirements, |
| int | time, | ||
| int | delay | ||
| ) | [inline, virtual] |
Reimplemented from Task.
Definition at line 34 of file TrainTask.h.
References mRequiredSatisfyTime.
{ mRequiredSatisfyTime = time; }
| virtual int TrainTask::startTime | ( | ) | const [inline, virtual] |
Reimplemented from Task.
Definition at line 37 of file TrainTask.h.
References mRequiredSatisfyTime.
{ return mRequiredSatisfyTime; }
| bool TrainTask::update | ( | ) | [virtual] |
Implements Task.
Definition at line 58 of file TrainTask.cpp.
References Task::hasEnded(), mProducedUnit, mProductionBuilding, and mType.
{
if(mProductionBuilding)
{
if(!mProducedUnit)
{
if(!mProductionBuilding->isTraining())
mProductionBuilding->train(mType);
}
else if(mProducedUnit->getType() != mType)
mProductionBuilding->cancel();
}
return hasEnded() && !mProductionBuilding && !mProducedUnit;
}

| void TrainTask::updateRequirements | ( | ) | [virtual] |
Reimplemented from Task.
Definition at line 134 of file TrainTask.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, UnitFilterFlags::IsLifted, BWAPI::UnitType::mineralPrice(), mProductionBuilding, mType, BWAPI::UnitType::supplyRequired(), and BWAPI::UnitType::whatBuilds().
{
clearRequirements();
if(!mProductionBuilding)
{
RequirementGroup requiredConditions;
freeResources();
requiredConditions.addUnitFilterRequirement(40, mType.buildTime(), UnitFilter(mType.whatBuilds().first) && UnitFilter(UnitFilterFlags::IsComplete) && !UnitFilter(UnitFilterFlags::IsLifted));
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 TrainTask::waitingForUnit | ( | Unit | unit | ) | const [virtual] |
Implements Task.
Definition at line 74 of file TrainTask.cpp.
References mProductionBuilding, and Task::shouldReturnUnit().
{
if(!shouldReturnUnit() && mProductionBuilding && mProductionBuilding->getBuildUnit() == unit)
return true;
return false;
}

int TrainTask::mOrderTime [private] |
Definition at line 54 of file TrainTask.h.
Unit TrainTask::mProducedUnit [private] |
Definition at line 48 of file TrainTask.h.
Referenced by getEndTime(), getFinishedUnits(), giveUnit(), inProgress(), preUpdate(), returnUnit(), and update().
Unit TrainTask::mProductionBuilding [private] |
Definition at line 47 of file TrainTask.h.
Referenced by getEndTime(), getFinishedUnits(), giveUnit(), hasDispatched(), preUpdate(), returnUnit(), update(), updateRequirements(), and waitingForUnit().
int TrainTask::mRequiredSatisfyTime [private] |
Definition at line 50 of file TrainTask.h.
Referenced by dispatchTime(), freeResources(), getEndTime(), reserveResources(), setRequiredSatisfyTime(), and startTime().
bool TrainTask::mReservedResources [private] |
Definition at line 52 of file TrainTask.h.
Referenced by freeResources(), and reserveResources().
BWAPI::UnitType TrainTask::mType [private] |
Definition at line 45 of file TrainTask.h.
Referenced by freeResources(), getEndTime(), getOutputName(), getTrainType(), giveUnit(), reserveResources(), update(), and updateRequirements().
1.7.6.1