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