BWAPI
|
#include <UnitTracker.h>
Definition at line 9 of file UnitTracker.h.
Definition at line 12 of file UnitTracker.cpp.
: mOnBeginCalled(false) { }
void UnitTrackerClass::checkUnit | ( | Unit | unit | ) | [private] |
Definition at line 183 of file UnitTracker.cpp.
References AccessTypeDef::Dead, mUnitToPlayer, mUnitToType, onDestroy(), and onMorphRenegade().
Referenced by onUnitDiscover(), and update().
{ unit->update(); if(mUnitToPlayer[unit] != unit->getPlayer() || mUnitToType[unit] != unit->getType()) onMorphRenegade(unit); AccessType thisAccess = unit->accessibility(); if(thisAccess == AccessType::Dead) onDestroy(unit); }
const UnitGroup& UnitTrackerClass::getAllUnits | ( | ) | [inline] |
const UnitGroup& UnitTrackerClass::getGeysers | ( | ) | [inline] |
Definition at line 23 of file UnitTracker.h.
References BWAPI::Broodwar, mPlayerToTypeToUnits, BWAPI::Game::neutral(), and BWAPI::UnitTypes::Resource_Vespene_Geyser.
{ return mPlayerToTypeToUnits[BWAPI::Broodwar->neutral()][BWAPI::UnitTypes::Resource_Vespene_Geyser]; }
const UnitGroup& UnitTrackerClass::getMinerals | ( | ) | [inline] |
Definition at line 24 of file UnitTracker.h.
References BWAPI::Broodwar, mPlayerToTypeToUnits, BWAPI::Game::neutral(), and BWAPI::UnitTypes::Resource_Mineral_Field.
{ return mPlayerToTypeToUnits[BWAPI::Broodwar->neutral()][BWAPI::UnitTypes::Resource_Mineral_Field]; }
const UnitGroup& UnitTrackerClass::getSupplyProviders | ( | ) | const [inline] |
Definition at line 26 of file UnitTracker.h.
References mMySupplyProviders.
{ return mMySupplyProviders; }
Unit UnitTrackerClass::getUnit | ( | BWAPI::Unit * | unit | ) |
Definition at line 155 of file UnitTracker.cpp.
References mUnits, and StaticUnits::nullunit.
{ std::map<BWAPI::Unit*, Unit>::iterator it = mUnits.find(unit); if(it != mUnits.end()) return it->second; return StaticUnits::nullunit; }
UnitGroup UnitTrackerClass::getUnitGroup | ( | std::set< BWAPI::Unit * > | units | ) |
Definition at line 164 of file UnitTracker.cpp.
References mUnits.
Referenced by getUnitsOnTile().
{ UnitGroup returnUnits; for each(BWAPI::Unit* unit in units) { std::map<BWAPI::Unit*, Unit>::iterator it = mUnits.find(unit); if(it != mUnits.end()) returnUnits.insert(it->second); } return returnUnits; }
UnitGroup UnitTrackerClass::getUnitsOnTile | ( | int | x, |
int | y | ||
) |
Definition at line 178 of file UnitTracker.cpp.
References BWAPI::Broodwar, and getUnitGroup().
{ return getUnitGroup(BWAPI::Broodwar->getUnitsOnTile(x, y)); }
void UnitTrackerClass::onDestroy | ( | Unit | unit | ) |
Definition at line 118 of file UnitTracker.cpp.
References UnitGroup::erase(), Singleton< T >::Instance(), LOGMESSAGE, mAllUnits, mMySupplyProviders, mOnBeginCalled, mPlayerToTypeToUnits, mPlayerToUnits, mUnitToPlayer, and mUnitToType.
Referenced by checkUnit(), and onUnitDestroy().
{ mAllUnits.erase(unit); mPlayerToUnits[mUnitToPlayer[unit]].erase(unit); mPlayerToTypeToUnits[mUnitToPlayer[unit]][mUnitToType[unit]].erase(unit); mUnitToType.erase(unit); mUnitToPlayer.erase(unit); mMySupplyProviders.erase(unit); if(!mOnBeginCalled) return; LOGMESSAGE(String_Builder() << "onDestroy() : " << unit->getType().getName() << ", ID : " << unit->getID() << ", Player : " << unit->getPlayer()->getName()); unit->onDestroy(); PylonPowerTracker::Instance().onDestroy(unit); ResourceManager::Instance().onDestroy(unit); BaseTracker::Instance().onDestroy(unit); TaskManager::Instance().onDestroy(unit); BuildingPlacer::Instance().onDestroy(unit); }
void UnitTrackerClass::onDiscover | ( | Unit | unit | ) |
Definition at line 56 of file UnitTracker.cpp.
References BWAPI::Broodwar, UnitGroup::insert(), Singleton< T >::Instance(), LOGMESSAGE, mAllUnits, mMySupplyProviders, mOnBeginCalled, mPlayerToTypeToUnits, mPlayerToUnits, mUnitToPlayer, mUnitToType, and BWAPI::Game::self().
Referenced by onUnitDiscover(), and pumpUnitEvents().
{ unit->update(); mUnitToType[unit] = unit->getType(); mUnitToPlayer[unit] = unit->getPlayer(); mPlayerToTypeToUnits[unit->getPlayer()][unit->getType()].insert(unit); mPlayerToUnits[unit->getPlayer()].insert(unit); mAllUnits.insert(unit); if(unit->getType().supplyProvided() > 0 && unit->getPlayer() == BWAPI::Broodwar->self()) mMySupplyProviders.insert(unit); if(!mOnBeginCalled) return; LOGMESSAGE(String_Builder() << "onDiscover() : " << unit->getType().getName() << ", ID : " << unit->getID() << ", Player : " << unit->getPlayer()->getName()); PylonPowerTracker::Instance().onDiscover(unit); PlayerTracker::Instance().onDiscover(unit); BaseTracker::Instance().onDiscover(unit); TaskManager::Instance().onDiscover(unit); }
void UnitTrackerClass::onMorphRenegade | ( | Unit | unit | ) |
Definition at line 80 of file UnitTracker.cpp.
References BWAPI::Broodwar, UnitGroup::erase(), BWAPI::Player::getName(), BWAPI::UnitType::getName(), UnitGroup::insert(), Singleton< T >::Instance(), LOGMESSAGE, mMySupplyProviders, mOnBeginCalled, mPlayerToTypeToUnits, mPlayerToUnits, mUnitToPlayer, mUnitToType, BWAPI::UnitTypes::None, and BWAPI::Game::self().
Referenced by checkUnit().
{ Player lastPlayer = mUnitToPlayer[unit]; BWAPI::UnitType lastType = mUnitToType[unit]; if(lastPlayer != unit->getPlayer() || lastType != unit->getType()) { Player lastPlayerForFunc = lastPlayer == unit->getPlayer() ? NULL : lastPlayer; BWAPI::UnitType lastTypeForFunc = lastType == unit->getType() ? BWAPI::UnitTypes::None : lastType; //TODO: unit has morphed, if its morphing into something known set the completed time to the build time if(mOnBeginCalled) { LOGMESSAGE(String_Builder() << "onMorphRenegade() : " << unit->getType().getName() << ", ID : " << unit->getID() << ", Player : " << unit->getPlayer()->getName()); if(lastTypeForFunc != BWAPI::UnitTypes::None) LOGMESSAGE(String_Builder() << " Previous Type : " << lastTypeForFunc.getName()); if(lastPlayerForFunc != NULL) LOGMESSAGE(String_Builder() << " Previous Player : " << lastPlayerForFunc->getName()); PylonPowerTracker::Instance().onMorphRenegade(unit, lastPlayerForFunc, lastTypeForFunc); PlayerTracker::Instance().onMorphRenegade(unit, lastPlayerForFunc, lastTypeForFunc); BaseTracker::Instance().onMorphRenegade(unit, lastPlayerForFunc, lastTypeForFunc); TaskManager::Instance().onMorphRenegade(unit, lastPlayerForFunc, lastTypeForFunc); mPlayerToUnits[lastPlayer].erase(unit); mPlayerToTypeToUnits[lastPlayer][lastType].erase(unit); mUnitToType[unit] = unit->getType(); mUnitToPlayer[unit] = unit->getPlayer(); mPlayerToUnits[unit->getPlayer()].insert(unit); mPlayerToTypeToUnits[unit->getPlayer()][unit->getType()].insert(unit); } mMySupplyProviders.erase(unit); if(unit->getType().supplyProvided() > 0 && unit->getPlayer() == BWAPI::Broodwar->self()) mMySupplyProviders.insert(unit); } }
void UnitTrackerClass::onUnitDestroy | ( | BWAPI::Unit * | unit | ) |
Definition at line 46 of file UnitTracker.cpp.
References mUnits, and onDestroy().
{ std::map<BWAPI::Unit*, Unit>::iterator it = mUnits.find(unit); if(it != mUnits.end()) { onDestroy(it->second); mUnits.erase(it); } }
void UnitTrackerClass::onUnitDiscover | ( | BWAPI::Unit * | unit | ) |
Definition at line 24 of file UnitTracker.cpp.
References checkUnit(), Singleton< T >::Instance(), mUnits, and onDiscover().
{ std::map<BWAPI::Unit*, Unit>::iterator it = mUnits.find(unit); if(it != mUnits.end()) { checkUnit(it->second); return; } Unit prediction = UnitPredictor::Instance().onNewUnit(unit); if(prediction) { mUnits[unit] = prediction; return; } Unit newUnit(new UnitClass(unit)); mUnits[unit] = newUnit; onDiscover(newUnit); }
void UnitTrackerClass::pumpUnitEvents | ( | ) |
Definition at line 17 of file UnitTracker.cpp.
References mOnBeginCalled, mUnits, and onDiscover().
{ mOnBeginCalled = true; for(std::map<BWAPI::Unit*, Unit>::iterator it = mUnits.begin(); it != mUnits.end(); ++it) onDiscover(it->second); }
UnitGroup UnitTrackerClass::selectAllEnemy | ( | Player | player = BWAPI::Broodwar->self() | ) |
Definition at line 195 of file UnitTracker.cpp.
References Singleton< T >::Instance(), and mPlayerToUnits.
{ UnitGroup enemies; for each(Player player in PlayerTracker::Instance().getEnemies(player)) { enemies += mPlayerToUnits[player]; } return enemies; }
UnitGroup UnitTrackerClass::selectAllEnemy | ( | BWAPI::UnitType | type, |
Player | player = BWAPI::Broodwar->self() |
||
) |
Definition at line 206 of file UnitTracker.cpp.
References Singleton< T >::Instance(), and mPlayerToTypeToUnits.
{ UnitGroup enemies; for each(Player player in PlayerTracker::Instance().getEnemies(player)) { enemies += mPlayerToTypeToUnits[player][type]; } return enemies; }
const UnitGroup& UnitTrackerClass::selectAllUnits | ( | BWAPI::UnitType | type, |
Player | player = BWAPI::Broodwar->self() |
||
) | [inline] |
Definition at line 31 of file UnitTracker.h.
References mPlayerToTypeToUnits.
{ return mPlayerToTypeToUnits[player][type]; }
const UnitGroup& UnitTrackerClass::selectAllUnits | ( | Player | player = BWAPI::Broodwar->self() | ) | [inline] |
Definition at line 32 of file UnitTracker.h.
References mPlayerToUnits.
{ return mPlayerToUnits[player]; }
void UnitTrackerClass::update | ( | ) |
Definition at line 141 of file UnitTracker.cpp.
References UnitGroup::begin(), checkUnit(), AccessTypeDef::Dead, UnitGroup::end(), mAllUnits, and mUnits.
{ for(std::set<Unit>::iterator it = mAllUnits.begin(); it != mAllUnits.end();) checkUnit(*(it++)); for(std::map<BWAPI::Unit*, Unit>::iterator it = mUnits.begin(); it != mUnits.end();) { if(it->second->accessibility() == AccessType::Dead) mUnits.erase(it++); else ++it; } }
UnitGroup UnitTrackerClass::mAllUnits [private] |
Definition at line 49 of file UnitTracker.h.
Referenced by getAllUnits(), onDestroy(), onDiscover(), and update().
Definition at line 51 of file UnitTracker.h.
Referenced by getSupplyProviders(), onDestroy(), onDiscover(), and onMorphRenegade().
bool UnitTrackerClass::mOnBeginCalled [private] |
Definition at line 53 of file UnitTracker.h.
Referenced by onDestroy(), onDiscover(), onMorphRenegade(), and pumpUnitEvents().
std::map<Player, std::map<BWAPI::UnitType, UnitGroup> > UnitTrackerClass::mPlayerToTypeToUnits [private] |
Definition at line 46 of file UnitTracker.h.
Referenced by getGeysers(), getMinerals(), onDestroy(), onDiscover(), onMorphRenegade(), selectAllEnemy(), and selectAllUnits().
std::map<Player, UnitGroup> UnitTrackerClass::mPlayerToUnits [private] |
Definition at line 47 of file UnitTracker.h.
Referenced by onDestroy(), onDiscover(), onMorphRenegade(), selectAllEnemy(), and selectAllUnits().
std::map<BWAPI::Unit*, Unit> UnitTrackerClass::mUnits [private] |
Definition at line 41 of file UnitTracker.h.
Referenced by getUnit(), getUnitGroup(), onUnitDestroy(), onUnitDiscover(), pumpUnitEvents(), and update().
std::map<Unit, Player> UnitTrackerClass::mUnitToPlayer [private] |
Definition at line 43 of file UnitTracker.h.
Referenced by checkUnit(), onDestroy(), onDiscover(), and onMorphRenegade().
std::map<Unit, BWAPI::UnitType> UnitTrackerClass::mUnitToType [private] |
Definition at line 44 of file UnitTracker.h.
Referenced by checkUnit(), onDestroy(), onDiscover(), and onMorphRenegade().