|
BWAPI
|
#include <ReservedLocation.h>

Public Member Functions | |
| ReservedLocationClass (BWAPI::UnitType type, BuildingLocation location) | |
| ReservedLocationClass (Unit unit) | |
| TilePosition | getTilePosition () |
| Position | getPosition () |
| Base | getBase () |
| BWAPI::UnitType | getUnitType () |
| bool | update () |
| BuildingLocation | getBuildLocation () |
| Unit | getUnitPrediction () |
| bool | isCalculated () |
| void | setStartTime (int time) |
| void | forceCompleted () |
Private Member Functions | |
| bool | shouldFree () |
| void | setTilePosition (TilePosition position) |
Private Attributes | |
| ReservationType | mType |
| BWAPI::UnitType | mUnitType |
| BuildingLocation | mLocation |
| Base | mBase |
| TilePosition | mTilePosition |
| Position | mPosition |
| Unit | mUnit |
| int | mNextCalculationAttempt |
| int | mStartTime |
| Unit | mUnitPrediction |
| bool | mForcedCompleted |
Definition at line 37 of file ReservedLocation.h.
| ReservedLocationClass::ReservedLocationClass | ( | BWAPI::UnitType | type, |
| BuildingLocation | location | ||
| ) |
Definition at line 9 of file ReservedLocation.cpp.
: mType(ReservationType::BuildingPosition) , mUnitType(type) , mLocation(location) , mTilePosition(BWAPI::TilePositions::None) , mPosition(BWAPI::Positions::None) , mUnit() , mNextCalculationAttempt(0) , mBase() , mUnitPrediction() , mForcedCompleted(false) , mStartTime(std::numeric_limits<int>::max()) { }
Definition at line 24 of file ReservedLocation.cpp.
: mType(ReservationType::LandingPosition) , mUnitType(unit->getType()) , mLocation(BuildingLocation::None) , mTilePosition(BWAPI::TilePositions::None) , mPosition(BWAPI::Positions::None) , mUnit(unit) , mNextCalculationAttempt(0) , mBase() , mUnitPrediction() , mForcedCompleted(false) , mStartTime(std::numeric_limits<int>::max()) { }
| void ReservedLocationClass::forceCompleted | ( | ) | [inline] |
Definition at line 59 of file ReservedLocation.h.
References mForcedCompleted.
{ mForcedCompleted = true; }
| Base ReservedLocationClass::getBase | ( | ) | [inline] |
| BuildingLocation ReservedLocationClass::getBuildLocation | ( | ) | [inline] |
| Position ReservedLocationClass::getPosition | ( | ) | [inline] |
| TilePosition ReservedLocationClass::getTilePosition | ( | ) | [inline] |
Definition at line 43 of file ReservedLocation.h.
References mTilePosition.
{ return mTilePosition; }
| Unit ReservedLocationClass::getUnitPrediction | ( | ) | [inline] |
Definition at line 53 of file ReservedLocation.h.
References mUnitPrediction.
{ return mUnitPrediction; }
| BWAPI::UnitType ReservedLocationClass::getUnitType | ( | ) | [inline] |
| bool ReservedLocationClass::isCalculated | ( | ) | [inline] |
Definition at line 55 of file ReservedLocation.h.
References mTilePosition, and BWAPI::BulletTypes::None.
{ return mTilePosition != BWAPI::TilePositions::None; }
| void ReservedLocationClass::setStartTime | ( | int | time | ) |
Definition at line 120 of file ReservedLocation.cpp.
References mStartTime, and mUnitPrediction.
{
mStartTime = time;
if(mUnitPrediction)
mUnitPrediction->setBuildTime(time);
}| void ReservedLocationClass::setTilePosition | ( | TilePosition | position | ) | [private] |
Definition at line 39 of file ReservedLocation.cpp.
References Singleton< T >::Instance(), mPosition, mStartTime, mTilePosition, mUnitPrediction, mUnitType, BWAPI::TilePositions::None, BWAPI::Positions::None, BWAPI::BulletTypes::None, StaticUnits::nullunit, BWAPI::UnitType::tileHeight(), BWAPI::UnitType::tileWidth(), BWAPI::TilePosition::x(), and BWAPI::TilePosition::y().
Referenced by update().
{
mTilePosition = position;
if(position != BWAPI::TilePositions::None)
mPosition = Position(position.x()*32+(mUnitType.tileWidth()*16), position.y()*32+(mUnitType.tileHeight()*16));
else
mPosition = BWAPI::Positions::None;
if(mUnitPrediction)
{
if(mPosition == BWAPI::Positions::None)
{
UnitPredictor::Instance().deletePrediction(mUnitPrediction);
mUnitPrediction = StaticUnits::nullunit;
}
else
mUnitPrediction->setPosition(mPosition);
}
else if(mPosition != BWAPI::Positions::None)
{
mUnitPrediction = UnitPredictor::Instance().createPrediction(mPosition, mUnitType, mStartTime);
UnitPredictor::Instance().savePrediction(mUnitPrediction);
}
}


| bool ReservedLocationClass::shouldFree | ( | ) | [private] |
Definition at line 99 of file ReservedLocation.cpp.
References BuildingLocationDef::Base, Singleton< T >::Instance(), mBase, mForcedCompleted, mLocation, mTilePosition, mUnitPrediction, mUnitType, and BWAPI::TilePositions::None.
Referenced by update().
{
if(mTilePosition != BWAPI::TilePositions::None)
{
if(mForcedCompleted || (mUnitPrediction && mUnitPrediction->exists()))
return true;
if(!BuildingPlacer::Instance().isLocationBuildable(mTilePosition, mUnitType, true))
return true;
if(mLocation == BuildingLocation::Base)
{
const std::vector<Base> &bases = BuildingPlacer::Instance().baseToBuildAtOrder(mUnitType);
if(std::find(bases.begin(), bases.end(), mBase) == bases.end())
return true;
}
}
return false;
}


| bool ReservedLocationClass::update | ( | ) |
Definition at line 64 of file ReservedLocation.cpp.
References BWAPI::Broodwar, ReservationTypeDef::BuildingPosition, BWAPI::Game::getFrameCount(), Singleton< T >::Instance(), ReservationTypeDef::LandingPosition, mBase, mForcedCompleted, mLocation, mNextCalculationAttempt, mTilePosition, mType, mUnit, mUnitPrediction, mUnitType, BWAPI::TilePositions::None, setTilePosition(), and shouldFree().
{
bool isFinished = mUnitPrediction && mUnitPrediction->exists();
if(shouldFree())
{
BuildingPlacer::Instance().free(shared_from_this());
setTilePosition(BWAPI::TilePositions::None);
}
if(isFinished || mForcedCompleted)
return true;
if(mTilePosition == BWAPI::TilePositions::None && mNextCalculationAttempt <= BWAPI::Broodwar->getFrameCount())
{
std::pair<TilePosition, Base> locationPair;
if(mType == ReservationType::BuildingPosition)
locationPair = BuildingPlacer::Instance().buildingLocationToTile(mLocation, mUnitType);
else if(mType == ReservationType::LandingPosition)
locationPair = BuildingPlacer::Instance().getlandingLocation(mUnit);
if(locationPair.first == BWAPI::TilePositions::None || BuildingPlacer::Instance().isLocationBuildable(locationPair.first, mUnitType, true))
{
setTilePosition(locationPair.first);
mBase = locationPair.second;
if(mTilePosition == BWAPI::TilePositions::None)
mNextCalculationAttempt = BWAPI::Broodwar->getFrameCount() + 24;
else
BuildingPlacer::Instance().reserve(shared_from_this());
}
}
return false;
}

Base ReservedLocationClass::mBase [private] |
Definition at line 70 of file ReservedLocation.h.
Referenced by getBase(), shouldFree(), and update().
bool ReservedLocationClass::mForcedCompleted [private] |
Definition at line 82 of file ReservedLocation.h.
Referenced by forceCompleted(), shouldFree(), and update().
Definition at line 68 of file ReservedLocation.h.
Referenced by getBuildLocation(), shouldFree(), and update().
int ReservedLocationClass::mNextCalculationAttempt [private] |
Definition at line 76 of file ReservedLocation.h.
Referenced by update().
Position ReservedLocationClass::mPosition [private] |
Definition at line 72 of file ReservedLocation.h.
Referenced by getPosition(), and setTilePosition().
int ReservedLocationClass::mStartTime [private] |
Definition at line 78 of file ReservedLocation.h.
Referenced by setStartTime(), and setTilePosition().
Definition at line 71 of file ReservedLocation.h.
Referenced by getTilePosition(), isCalculated(), setTilePosition(), shouldFree(), and update().
ReservationType ReservedLocationClass::mType [private] |
Definition at line 65 of file ReservedLocation.h.
Referenced by update().
Unit ReservedLocationClass::mUnit [private] |
Definition at line 74 of file ReservedLocation.h.
Referenced by update().
Unit ReservedLocationClass::mUnitPrediction [private] |
Definition at line 80 of file ReservedLocation.h.
Referenced by getUnitPrediction(), setStartTime(), setTilePosition(), shouldFree(), and update().
Definition at line 66 of file ReservedLocation.h.
Referenced by getUnitType(), setTilePosition(), shouldFree(), and update().
1.7.6.1