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