BWAPI
BTHAI/SCProjects/BTHAIModule/Source/CoverMap.h
Go to the documentation of this file.
00001 #ifndef __COVERMAP_H__
00002 #define __COVERMAP_H__
00003 
00004 #include "UnitAgent.h"
00005 #include "MapDataReader.h"
00006 
00007 using namespace BWAPI;
00008 using namespace BWTA;
00009 using namespace std;
00010 
00011 struct Corners {
00012         int x1;
00013         int y1;
00014         int x2;
00015         int y2;
00016 };
00017 
00031 class CoverMap {
00032 
00033 private:
00034         CoverMap();
00035         static CoverMap* instance;
00036         static bool instanceFlag;
00037 
00038         int range;
00039         int w;
00040         int h;
00041         int** cover_map;
00042 
00043         Corners getCorners(Unit* unit);
00044         Corners getCorners(UnitType type, TilePosition center);
00045 
00046         void fill(Corners c);
00047         void clear(Corners c);
00048 
00049         Unit* findWorker();
00050 
00051         bool suitableForDetector(TilePosition pos);
00052         bool isOccupied(Region* region);
00053 
00054         MapDataReader mapData;
00055 
00056         bool baseUnderConstruction(BaseAgent* base);
00057         TilePosition findBuildSpot(UnitType toBuild, TilePosition start);
00058 
00059 public:
00061         ~CoverMap();
00062 
00064         static CoverMap* getInstance();
00065 
00067         void addConstructedBuilding(Unit* unit);
00068 
00069         void fillTemp(UnitType toBuild, TilePosition buildSpot);
00070         void clearTemp(UnitType toBuild, TilePosition buildSpot);
00071 
00073         void buildingDestroyed(Unit* unit);
00074 
00077         bool canBuild(UnitType toBuild, TilePosition buildSpot);
00078 
00080         bool positionFree(TilePosition pos);
00081 
00084         void blockPosition(TilePosition buildSpot);
00085 
00088         TilePosition findBuildSpot(UnitType toBuild);
00089 
00092         TilePosition findRefineryBuildSpot(UnitType toBuild, TilePosition start);
00093 
00096         TilePosition findClosestGasWithoutRefinery(UnitType toBuild, TilePosition start);
00097 
00099         TilePosition searchRefinerySpot();
00100 
00102         TilePosition findExpansionSite();
00103 
00105         void debug();
00106 
00108         static const int BUILDABLE = 1;
00110         static const int BLOCKED = 0;
00112         static const int TEMPBLOCKED = 4;
00114         static const int MINERAL = 2;
00116         static const int GAS = 3;
00117 };
00118 
00119 #endif
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Defines