|
BWAPI
|
00001 #include "UnitPredictor.h" 00002 #include "UnitTracker.h" 00003 #include "Logger.h" 00004 00005 UnitPredictorClass::UnitPredictorClass() 00006 { 00007 } 00008 00009 Unit UnitPredictorClass::createPrediction(Position pos, BWAPI::UnitType type, int startTime) 00010 { 00011 return Unit(new UnitClass(pos, type, startTime)); 00012 } 00013 00014 void UnitPredictorClass::savePrediction(Unit unit) 00015 { 00016 mUnits.insert(unit); 00017 UnitTracker::Instance().onDiscover(unit); 00018 } 00019 00020 void UnitPredictorClass::deletePrediction(Unit unit) 00021 { 00022 if(unit->accessibility() == AccessType::Prediction) 00023 UnitTracker::Instance().onDestroy(unit); 00024 00025 mUnits.erase(unit); 00026 } 00027 00028 Unit UnitPredictorClass::onNewUnit(BWAPI::Unit* newUnit) 00029 { 00030 for each(Unit unit in mUnits) 00031 { 00032 if(unit->getType() == newUnit->getType() && unit->getPlayer() == newUnit->getPlayer()) 00033 { 00034 if(unit->getTilePosition() == newUnit->getTilePosition() || newUnit->getPosition().getDistance(unit->getPosition()) <= TILE_SIZE * 6) 00035 { 00036 unit->promote(newUnit); 00037 return unit; 00038 } 00039 } 00040 } 00041 00042 return StaticUnits::nullunit; 00043 }
1.7.6.1