BWAPI
SnippyHolloW-BroodwarBotQ-f01ab56/src/Macro/WorkerManager.h
Go to the documentation of this file.
00001 #pragma once
00002 #include "Macro/Arbitrator.h"
00003 #include <BWAPI.h>
00004 #include "Macro/BasesManager.h"
00005 
00006 class WorkerManager : public Arbitrator::Controller<BWAPI::Unit*,double>
00007 {
00008   public:
00009     class WorkerData
00010     {
00011       public:
00012         WorkerData() {resource = NULL; lastFrameSpam = 0;}
00013         BWAPI::Unit* resource;
00014         BWAPI::Unit* newResource;
00015         int lastFrameSpam;
00016     };
00017     static WorkerManager* create();
00018     static void destroy();
00019     virtual void onOffer(std::set<BWAPI::Unit*> units);
00020     virtual void onRevoke(BWAPI::Unit* unit, double bid);
00021     virtual void update();
00022     virtual std::string getName() const;
00023         virtual std::string getShortName() const;
00024 
00025         void onUnitDestroy(BWAPI::Unit* unit);
00026     void onRemoveUnit(BWAPI::Unit* unit);
00027     void setWorkersPerGas(int count);
00028     double getMineralRate() const;
00029     double getGasRate() const;
00030     int getOptimalWorkerCount() const;
00031     void enableAutoBuild();
00032     void disableAutoBuild();
00033     void setAutoBuildPriority(int priority);
00034   private:
00035     WorkerManager();
00036     ~WorkerManager();
00037     std::map<BWAPI::Unit*,WorkerData> workers;
00038     std::map<BWAPI::Unit*, std::set<BWAPI::Unit*> > currentWorkers;
00039     std::map<BWAPI::Unit*, Base*> resourceBase;
00040     std::map<BWAPI::Unit*, int> desiredWorkerCount;
00041     std::vector<std::pair<BWAPI::Unit*, int> > mineralOrder;
00042     int mineralOrderIndex;
00043     int lastSCVBalance;
00044     std::set<Base*> basesCache;
00045     int WorkersPerGas;
00046     
00047     void rebalanceWorkers();
00048     void updateWorkerAssignments();
00049     double mineralRate;
00050     double gasRate;
00051     bool autoBuild;
00052     int autoBuildPriority;
00053     int optimalWorkerCount;
00054 };
00055 extern WorkerManager* TheWorkerManager;
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines