BWAPI
|
00001 #pragma once 00002 #include <BWAPI.h> 00003 #include <windows.h> 00004 #include "Common.h" 00005 #include "SquadAgent.h" 00006 #include "InformationManager.h" 00007 00008 typedef std::set<SquadAgent*> SquadSet; 00009 typedef std::map<BWAPI::Unit*, SquadAgent*> UnitToSquadMap; 00010 typedef std::set< std::pair<SquadAgent*, SquadAgent*> > UnitPairSet; 00011 00012 class SquadManager 00013 { 00014 public: 00015 SquadManager(); 00016 void newSquad(const UnitSet &units); 00017 SquadAgent* testSquad(const UnitSet &units); 00018 void newSquad(BWAPI::Unit* unit); 00019 void unitTraining(BWAPI::Unit* unit); 00020 void onFrame(); 00021 // void orderGetPosition(BWAPI::Position positionTarget); 00022 void onUnitDestroy(BWAPI::Unit* unit); 00023 void newEnemy(BWAPI::Unit* enemy); 00024 void newEnemy(BWAPI::Unit* enemy, SquadAgent* oldSquad); 00025 void onEnemyEvade(BWAPI::Unit* enemy); 00026 void onEnemyDestroy(BWAPI::Unit* enemy); 00027 00028 void requestRetreat(SquadAgent* squad); 00029 BWAPI::Position getBestTarget(); 00030 void removeMergingSquads(SquadAgent *squad); 00031 00032 UnitSet _unitsTraning; 00033 SquadAgent* _creatingSquad; 00034 SquadSet _squads; 00035 UnitToSquadMap _unitToSquadMap; 00036 UnitToSquadMap _enemyToSquadMap; 00037 BWAPI::Position _positionTarget; 00038 UnitPairSet _squadsToMerge; 00039 00040 private: 00041 SquadAgent* getClosestSquad(BWAPI::Position toPosition, SquadAgent* ignoreSquad); 00042 void checkAutoMerge(); 00043 void checkMerge(); 00044 void mergeUnitsAndEnemies(SquadAgent* squad1, SquadAgent* squad2); 00045 static bool compare( std::pair<BWAPI::Position, int> i, std::pair<BWAPI::Position, int> j); 00046 00047 };