BWAPI
|
00001 #ifndef CONAGENT_H 00002 #define CONAGENT_H 00003 #include "AgentBase.h" 00004 #include "BWAPI.h" 00005 #include "BuildingPlacer.h" 00006 #include <vector> 00007 00008 using namespace BWAPI; 00009 00010 class AgentPool; 00011 00012 class ConstructionAgent : public AgentBase { 00013 public: 00014 ConstructionAgent::ConstructionAgent(AgentPool* p); 00015 virtual void updateDrives(); 00016 virtual Arbitrator* getArbitrator() { return NULL; }; 00017 bool ConstructionAgent::canBeConstructed(BWAPI::UnitType req); 00018 bool ConstructionAgent::canBeConstructed(BWAPI::UnitType req, BWAPI::Unit* worker); 00019 bool ConstructionAgent::canBeConstructed(BWAPI::UnitType req, BWAPI::Unit* worker, TilePosition t); 00020 Unit* ConstructionAgent::buildStructure(BWAPI::UnitType req); 00021 Unit* ConstructionAgent::buildStructure(BWAPI::UnitType req, BWAPI::TilePosition here); 00022 Unit* ConstructionAgent::buildStructure(BWAPI::UnitType req, BWAPI::TilePosition here, BWAPI::Unit* worker); 00023 Unit* ConstructionAgent::buildStructure(BWAPI::UnitType original, BWAPI::UnitType req, BWAPI::TilePosition nearhere, int minDistance, BWAPI::Unit* worker); 00024 Unit* ConstructionAgent::buildStructure(BWAPI::UnitType req, BWAPI::Unit* worker); 00025 Unit* ConstructionAgent::buildStructureAround(BWAPI::UnitType req, BWAPI::Unit* worker, BWAPI::TilePosition nearhere); 00026 Unit* ConstructionAgent::findAvailableWorker(); 00027 Unit* ConstructionAgent::findAvailableWorkerNear(Position p, int radius); 00028 BuildingPlacer* ConstructionAgent::getBuildingPlacer(); 00029 private: 00030 AgentPool* agentPool; 00031 BuildingPlacer* buildingPlacer; 00032 std::vector<BWAPI::Unit*> availableWorkers; 00033 int unitsAssigned; 00034 std::map<Unit*,Unit*> constructionMap; 00035 00036 }; 00037 #endif