BWAPI
Aiur/include/InformationManager.h
Go to the documentation of this file.
00001 #pragma once
00002 #include <UnitGroupManager.h>
00003 #include <BWAPI.h>
00004 #include <BWTA.h>
00005 #include <map>
00006 
00007 class InformationManager
00008 {
00009 public:
00010         class UnitData
00011         {
00012         public:
00013                 UnitData();
00014                 BWAPI::Position position;
00015                 BWAPI::UnitType type;
00016                 BWAPI::Player           *player;
00017                 int                                                     lastSeenTime;
00018                 bool                                            exists;
00019         };
00020 
00021         const std::vector<BWTA::BaseLocation*>& getEnemyBases   () const;
00022         const std::map<BWAPI::Unit*, UnitData>& getSavedData    () const;
00023 
00024         static InformationManager*              create();
00025         static void                                                                             destroy();
00026         void                                                                                                    onUnitDiscover                                  (BWAPI::Unit*);
00027         void                                                                                                    onUnitEvade                                                     (BWAPI::Unit*);
00028         void                                                                                                    onUnitDestroy                                           (BWAPI::Unit*);
00029 
00030         BWAPI::Player*                                                          getPlayer                                                               (BWAPI::Unit*) const;
00031         BWAPI::UnitType                                                         getType                                                                 (BWAPI::Unit*) const;
00032         BWAPI::Position                                                         getLastPosition                                 (BWAPI::Unit*) const;
00033         int                                                                                                             getLastSeenTime                                 (BWAPI::Unit*) const;
00034         bool                                                                                                    exists                                                                  (BWAPI::Unit*) const;
00035         bool                                                                                                    enemyHasBuilt                                           (BWAPI::UnitType) const;
00036         int                                                                                                             getBuildTime                                            (BWAPI::UnitType) const;
00037         void                                                                                                    setBaseEmpty                                            (BWTA::BaseLocation*);
00038         void                                                                                                    setEnemyStartLocation           (BWTA::BaseLocation*);
00039         BWTA::BaseLocation*                                             getEnemyStartLocation           ();
00040         void                                                                                                    setEnemyNatural                                 (BWTA::BaseLocation*);
00041         BWTA::BaseLocation*                                             getEnemyNatural                                 ();
00042         void                                                                                                    computeEnemyNatural                     ();
00043         std::set<BWTA::BaseLocation*>   getUnvisitedBaseLocation();
00044         int                                                                                                             getNumberBaseCenters            ();
00045         int                                                                                                             getNumberEvadedUnits            (BWAPI::UnitType);
00046         bool                                                                                                    getEnemyBaseDestroyed           ();
00047         void                                                                                                    setEnemyBaseDestroyed           (bool);
00048         bool                                                                                                    getEnemySpotted                                 ();
00049         void                                                                                                    refreshEnemyBases                               ();
00050 
00051 private:
00052         InformationManager();
00053         ~InformationManager();
00054 
00055         void updateBuildTime(BWAPI::UnitType, int);
00056 
00057         std::map<BWAPI::Unit*, UnitData>                                                savedData;
00058         std::map<BWAPI::UnitType, int>                                                  buildTime;
00059         std::vector<BWTA::BaseLocation*>                                                enemyBases;
00060         std::map<BWTA::BaseLocation*,BWAPI::Unit*>      enemyBaseCenters;
00061         std::set<BWTA::BaseLocation*>                                                           startLocationCouldContainEnemy;
00062         std::set<BWTA::BaseLocation*>                                                           unvisitedBaseLocations;
00063         BWTA::BaseLocation                                                                                                      *enemyStartLocation;
00064         BWTA::BaseLocation                                                                                                      *enemyNatural;
00065         bool                                                                                                                                                            scoutedAnEnemyBase;
00066         bool                                                                                                                                                            enemyBaseDestroyed;
00067 };
00068 extern InformationManager* TheInformationManager;
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Defines