BWAPI
|
00001 #ifndef INFORMATIONMANAGERAGENT_H 00002 #define INFORMATIONMANAGERAGENT_H 00003 #include "GoalDescriptor.h" 00004 #include "AgentPool.h" 00005 #include "GoalTypes.h" 00006 #include "UnitModel.h" 00007 #include "RectangleArray.h" 00008 #include "BaseModel.h" 00009 #include "BWTA.h" 00010 #include "StrategyEstimator.h" 00011 00012 #include <vector> 00013 #include <stack> 00014 00015 using namespace BWTA; 00016 00017 class SquadManagerAgent; 00018 class ThreatAwarePathFinder; 00019 00020 class InformationManagerAgent : public AgentBase { 00021 public: 00022 00023 InformationManagerAgent(AgentPool* p); 00024 void alert(Unit* u); 00025 void destroyed(Unit* u); 00026 void InformationManagerAgent::printUnits(); 00027 void InformationManagerAgent::printBuildings(); 00028 00029 std::vector<Unit*> InformationManagerAgent::getUnitsThatProduce(Unit* u); 00030 std::vector<Unit*> InformationManagerAgent::getUnitsOfType(UnitType u); 00031 std::vector<Unit*> InformationManagerAgent::getUnitsOfType(std::pair<UnitType,UnitType> u); 00032 std::vector<Unit*> InformationManagerAgent::getBuildingsOfType(UnitType u); 00033 int InformationManagerAgent::countUnitType(UnitType t); 00034 00035 bool InformationManagerAgent::hasUnit(UnitType t); 00036 bool InformationManagerAgent::hasActiveRefineryAtBase(); 00037 00038 bool InformationManagerAgent::hasUnitUnderConstruction(UnitType t); 00039 void InformationManagerAgent::addBase(TilePosition p, Unit* u); 00040 BaseModel* InformationManagerAgent::getBase(TilePosition p); 00041 bool InformationManagerAgent::canPerformScannerSweep(InformationManagerAgent* im); 00042 void InformationManagerAgent::scanPointsOfInterest(InformationManagerAgent* im); 00043 Position InformationManagerAgent::findHighestConcentrationOf(UnitType t); 00044 std::vector<Unit*> InformationManagerAgent::findLocalObstructions(); 00045 UnitType InformationManagerAgent::getReccomendedFlyerType(); 00046 TilePosition InformationManagerAgent::locateWeakestPerceivedBase(); 00047 Unit* InformationManagerAgent::selectNewMainBase(); 00048 00049 std::vector<UnitModel*> InformationManagerAgent::getKnownBuildings(); 00050 std::vector<UnitModel*> InformationManagerAgent::getKnownBuildingsAroundPoint(Position p, int radius); 00051 std::vector<UnitModel*> InformationManagerAgent::getKnownUnitsAroundPoint(Position p, int radius); 00052 std::vector<BaseModel*> InformationManagerAgent::getBases(); 00053 BaseLocation* InformationManagerAgent::findClosestExpansionPoint(Unit* tester); 00054 BaseLocation* InformationManagerAgent::findClosestExpansionPoint(); 00055 bool InformationManagerAgent::hasUnit(Unit* t); 00056 bool InformationManagerAgent::baseIsTaken(Unit* u); 00057 bool InformationManagerAgent::baseIsTaken(TilePosition u); 00058 00059 std::vector<UnitModel*> InformationManagerAgent::evaluateThreatAt(Position p); 00060 int InformationManagerAgent::getAirThreat(Position p); 00061 std::pair<int,int> InformationManagerAgent::getStrategyEstimate(); 00062 00063 virtual void updateDrives(); 00064 virtual Arbitrator* getArbitrator() { return NULL; }; 00065 ThreatAwarePathFinder* pathFinder; 00066 00067 AgentPool* agentPool; 00068 private: 00069 00070 std::vector<UnitModel*> unitSet; 00071 std::vector<UnitModel*> buildingSet; 00072 00073 bool InformationManagerAgent::updateKnowledge(Unit* u); 00074 bool InformationManagerAgent::inferKnowledge(Unit* u); 00075 bool InformationManagerAgent::isProducedBy(Unit* u, UnitType t); 00076 Util::RectangleArray<int> map; 00077 00078 std::vector<BaseModel*> bases; 00079 std::stack<Unit*> pending; 00080 bool pendingLock; 00081 bool initialized; 00082 StrategyEstimator* strategyEstimator; 00083 TargetFitnessCalculator* tf; 00084 00085 }; 00086 00087 00088 #endif