BWAPI
|
#include <PlayerTracker.h>
Definition at line 9 of file PlayerTracker.h.
PlayerTrackerClass::PlayerTrackerClass | ( | ) | [inline] |
Definition at line 12 of file PlayerTracker.h.
{}
bool PlayerTrackerClass::enemyHasReseached | ( | BWAPI::TechType | tech | ) |
Definition at line 131 of file PlayerTracker.cpp.
References getEnemies(), and playerHasReseached().
{ for each(Player enemy in getEnemies()) { if(playerHasReseached(enemy, tech)) return true; } return false; }
int PlayerTrackerClass::enemyUnitCount | ( | BWAPI::UnitType | unit, |
Player | player = BWAPI::Broodwar->self() |
||
) | const |
Definition at line 177 of file PlayerTracker.cpp.
References getEnemies(), and playerUnitCount().
{ int count = 0; for each(Player enemy in getEnemies(player)) { count += playerUnitCount(unit, enemy); } return count; }
std::set< Player > PlayerTrackerClass::getAllies | ( | Player | player = BWAPI::Broodwar->self() | ) | const |
Definition at line 157 of file PlayerTracker.cpp.
References BWAPI::Broodwar, BWAPI::Player::isAlly(), and mAllies.
Referenced by update().
{ if(player == BWAPI::Broodwar->self()) return mAllies; std::set<Player> allies; for each(Player ally in BWAPI::Broodwar->getPlayers()) { if(player->isAlly(ally)) allies.insert(ally); } return allies; }
std::set< Player > PlayerTrackerClass::getEnemies | ( | Player | player = BWAPI::Broodwar->self() | ) | const |
Definition at line 142 of file PlayerTracker.cpp.
References BWAPI::Broodwar, BWAPI::Player::isEnemy(), and mEnemies.
Referenced by enemyHasReseached(), enemyUnitCount(), and update().
{ if(player == BWAPI::Broodwar->self()) return mEnemies; std::set<Player> enemies; for each(Player enemy in BWAPI::Broodwar->getPlayers()) { if(player->isEnemy(enemy)) enemies.insert(enemy); } return enemies; }
const std::vector<UnitGroup>& PlayerTrackerClass::getEnemyClusters | ( | ) | [inline] |
Definition at line 34 of file PlayerTracker.h.
References mEnemyClusters.
{ return mEnemyClusters; }
bool PlayerTrackerClass::isEnemyRace | ( | BWAPI::Race | race | ) |
Definition at line 121 of file PlayerTracker.cpp.
References mEnemyRaceInfo.
{ return mEnemyRaceInfo[race]; }
void PlayerTrackerClass::onBegin | ( | ) |
Definition at line 9 of file PlayerTracker.cpp.
References updatePlayers().
{ updatePlayers(); }
void PlayerTrackerClass::onDiscover | ( | Unit | unit | ) |
Definition at line 84 of file PlayerTracker.cpp.
References mResearched, BWAPI::TechTypes::Spider_Mines, BWAPI::TechTypes::Tank_Siege_Mode, BWAPI::UnitTypes::Terran_Siege_Tank_Siege_Mode, and BWAPI::UnitTypes::Terran_Vulture_Spider_Mine.
Referenced by onMorphRenegade().
{ if(unit->getType() == BWAPI::UnitTypes::Terran_Siege_Tank_Siege_Mode) mResearched[unit->getPlayer()].insert(BWAPI::TechTypes::Tank_Siege_Mode); else if(unit->getType() == BWAPI::UnitTypes::Terran_Vulture_Spider_Mine) mResearched[unit->getPlayer()].insert(BWAPI::TechTypes::Spider_Mines); }
void PlayerTrackerClass::onMorphRenegade | ( | Unit | unit, |
Player | previousPlayer, | ||
BWAPI::UnitType | previousType | ||
) |
Definition at line 92 of file PlayerTracker.cpp.
References onDiscover().
{ onDiscover(unit); }
void PlayerTrackerClass::onPlayerLeft | ( | Player | player | ) |
Definition at line 79 of file PlayerTracker.cpp.
References updatePlayers().
{ updatePlayers(); }
bool PlayerTrackerClass::playerHasReseached | ( | Player | player, |
BWAPI::TechType | tech | ||
) |
Definition at line 126 of file PlayerTracker.cpp.
References mResearched.
Referenced by enemyHasReseached().
{ return mResearched[player].find(tech) != mResearched[player].end(); }
int PlayerTrackerClass::playerUnitCount | ( | BWAPI::UnitType | unit, |
Player | player = BWAPI::Broodwar->self() |
||
) | const |
Definition at line 172 of file PlayerTracker.cpp.
References Singleton< T >::Instance().
Referenced by enemyUnitCount().
{ return UnitTracker::Instance().selectAllUnits(unit, player).size(); }
void PlayerTrackerClass::update | ( | ) |
Definition at line 14 of file PlayerTracker.cpp.
References BWAPI::Broodwar, BWAPI::Game::drawText(), BWAPI::Game::drawTextScreen(), getAllies(), UnitHelper::getClusters(), getEnemies(), BWAPI::Player::getName(), Singleton< T >::Instance(), BWAPI::UnitType::isBuilding(), UnitHelper::isStaticDefense(), BWAPI::UnitType::isWorker(), AccessTypeDef::Lost, mEnemyClusters, mEnemyRaceInfo, mShowDebugInfo, BWAPI::Races::Protoss, BWAPI::CoordinateType::Screen, BWAPI::Races::Terran, BWAPI::UnitTypes::Terran_Vulture_Spider_Mine, updatePlayers(), BWAPI::Races::Zerg, BWAPI::UnitTypes::Zerg_Egg, BWAPI::UnitTypes::Zerg_Larva, and BWAPI::UnitTypes::Zerg_Overlord.
{ if(mShowDebugInfo) { std::stringstream ss; ss << "There are "; if(mEnemyRaceInfo[BWAPI::Races::Zerg]) ss << "[Zerg]"; if(mEnemyRaceInfo[BWAPI::Races::Terran]) ss << "[Terran]"; if(mEnemyRaceInfo[BWAPI::Races::Protoss]) ss << "[Protoss]"; ss << " Enemy Races"; BWAPI::Broodwar->drawText(BWAPI::CoordinateType::Screen, 15, 5, "%s", ss.str().c_str()); int y = 20; if(!getEnemies().empty()) { BWAPI::Broodwar->drawTextScreen(5, y, "Enemies:"); for each(Player player in getEnemies()) { y += 10; BWAPI::Broodwar->drawTextScreen(15, y, "%s", player->getName().c_str()); } } if(!getAllies().empty()) { y += 10; BWAPI::Broodwar->drawTextScreen(5, y, "Allies:"); for each(Player player in getAllies()) { y+=10; BWAPI::Broodwar->drawTextScreen(15, y, "%s", player->getName().c_str()); } } } if(BWAPI::Broodwar->getFrameCount() % 240 == 0) updatePlayers(); UnitGroup allEnemyUnits; for each(Unit unit in UnitTracker::Instance().selectAllEnemy()) { if(unit->accessibility() == AccessType::Lost) continue; const BWAPI::UnitType &type = unit->getType(); if(type.isBuilding() && !UnitHelper::isStaticDefense(type)) continue; if(type.isWorker() || type == BWAPI::UnitTypes::Terran_Vulture_Spider_Mine || type == BWAPI::UnitTypes::Zerg_Overlord || type == BWAPI::UnitTypes::Zerg_Larva || type == BWAPI::UnitTypes::Zerg_Egg) continue; allEnemyUnits.insert(unit); } mEnemyClusters = UnitHelper::getClusters(allEnemyUnits, 384, 1); }
void PlayerTrackerClass::updatePlayers | ( | ) |
Definition at line 97 of file PlayerTracker.cpp.
References BWAPI::Broodwar, BWAPI::Player::getRace(), BWAPI::Player::leftGame(), mAllies, mEnemies, and mEnemyRaceInfo.
Referenced by onBegin(), onPlayerLeft(), and update().
{ mEnemies.clear(); mAllies.clear(); mEnemyRaceInfo.clear(); for each(Player player in BWAPI::Broodwar->getPlayers()) { if(player->leftGame()) continue; if(player == BWAPI::Broodwar->self()) continue; if(BWAPI::Broodwar->self()->isEnemy(player)) { mEnemies.insert(player); mEnemyRaceInfo[player->getRace()] = true; } else if(BWAPI::Broodwar->self()->isAlly(player)) mAllies.insert(player); } }
std::set<Player> PlayerTrackerClass::mAllies [private] |
Definition at line 38 of file PlayerTracker.h.
Referenced by getAllies(), and updatePlayers().
std::set<Player> PlayerTrackerClass::mEnemies [private] |
Definition at line 37 of file PlayerTracker.h.
Referenced by getEnemies(), and updatePlayers().
std::vector<UnitGroup> PlayerTrackerClass::mEnemyClusters [private] |
Definition at line 46 of file PlayerTracker.h.
Referenced by getEnemyClusters(), and update().
std::map<BWAPI::Race, bool> PlayerTrackerClass::mEnemyRaceInfo [private] |
Definition at line 40 of file PlayerTracker.h.
Referenced by isEnemyRace(), update(), and updatePlayers().
std::map<Player, bool> PlayerTrackerClass::mPlayerHasOffensiveUnitsNeedDetection [private] |
Definition at line 42 of file PlayerTracker.h.
std::map<Player, std::set<BWAPI::TechType> > PlayerTrackerClass::mResearched [private] |
Definition at line 44 of file PlayerTracker.h.
Referenced by onDiscover(), and playerHasReseached().
bool PlayerTrackerClass::mShowDebugInfo [private] |
Definition at line 48 of file PlayerTracker.h.
Referenced by update().