BWAPI
SnippyHolloW-BroodwarBotQ-f01ab56/src/Regions/Regions.h
Go to the documentation of this file.
00001 #pragma once
00002 #include "Utils/CSingleton.h"
00003 #include <BWTA.h>
00004 #include <BWAPI.h>
00005 #include "Utils/TimeManager.h"
00006 #include "Regions/MapManager.h"
00007 #include <map>
00008 #include <set>
00009 #include <list>
00010 #include <vector>
00011 
00012 class RegionsUnitData
00013 {
00014 public:
00015         Unit* unit;
00016         UnitType unitType;
00017         Position position;
00018         int lastSeen;
00019         RegionsUnitData(Unit* unit);
00020         bool operator == (const RegionsUnitData& ud) const;
00021 };
00022 
00023 class RegionData
00024 {
00025 public:
00026         // TODO perhaps change vectors by sets (we need a quick find and don't care about the order)
00027         std::map<Player*, std::vector<RegionsUnitData> > buildings;     // list of enemy building seen in this region for each player.
00028         std::map<Player*, std::vector<RegionsUnitData> > units;      // list of enemy units seen in this region for each player.
00029         int lastSeen; // Last seen frame.
00030         int visited; //Number of the frame when a scout goal to explore was accomplished.
00031         // 0 means never
00032         RegionData();
00033         bool isOccupied() const;
00034         bool contain(Unit* unit) const;
00035         inline void add(Unit* unit);
00036 };
00037 
00038 
00039 class Regions : public CSingleton<Regions>
00040 {
00041         friend class CSingleton<Regions>;
00042 
00043 private:
00044         Regions();
00045         ~Regions();
00046         MapManager* mapManager;
00047         TimeManager* timeManager;
00048         inline BWTA::Region* findRegion(BWAPI::Position p);
00049 
00050 public:
00051         void setDependencies();
00052         inline void addUnit(BWAPI::Unit* unit); // Add to the corresponding map (building/unit) in regionData. Refresh it if already present.
00053         void removeUnits();
00054         void addUnits();
00055         inline void removeUnit( Unit* unit);
00056         virtual void update();
00057         virtual std::string getName() const;
00058         void onUnitCreate(BWAPI::Unit* unit);
00059         void onUnitDestroy(BWAPI::Unit* unit);
00060         void onUnitShow(BWAPI::Unit* unit);
00061         void onUnitHide(BWAPI::Unit* unit);
00062         void display() const;
00063         bool enemyFound() const;
00064         BWTA::Region* whereIsEnemy();
00065 
00066 #ifdef BW_QT_DEBUG
00067         // Qt interface
00068         virtual QWidget* createWidget(QWidget* parent) const;
00069         virtual void refreshWidget(QWidget* widget) const;
00070 #endif
00071 
00072         std::map<BWTA::Region*, RegionData> regionsData;
00073 
00074 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines