BWAPI
ExampleAIModule/Source/SquadManager.h
Go to the documentation of this file.
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 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines