BWAPI
Aiur/include/WorkerManager.h
Go to the documentation of this file.
00001 #pragma once
00002 #include <Arbitrator.h>
00003 #include <BWAPI.h>
00004 #include <BaseManager.h>
00005 #include <HashMap.h>
00006 
00007 class BuildOrderManager;
00008 class WorkerManager : public Arbitrator::Controller<BWAPI::Unit*,double>
00009 {
00010 public:
00011         class WorkerData
00012         {
00013         public:
00014                 WorkerData() {resource = NULL; lastFrameSpam = 0;}
00015                 BWAPI::Unit* resource;
00016                 BWAPI::Unit* newResource;
00017                 int lastFrameSpam;
00018         };
00019 
00020         WorkerManager();
00021         WorkerManager(Arbitrator::Arbitrator<BWAPI::Unit*,double>* arbitrator);
00022 
00023         void                                                            setBaseManager                  (BaseManager* baseManager);
00024         void                                                            setBuildOrderManager(BuildOrderManager* buildOrderManager);
00025         virtual void                            onOffer                                                 (std::set<BWAPI::Unit*> units);
00026         virtual void                            onRevoke                                                (BWAPI::Unit* unit, double bid);
00027         virtual void                            update                                                  ();
00028         virtual std::string getName                                                     () const;
00029         virtual std::string getShortName                                () const;
00030 
00031         void            onRemoveUnit                                    (BWAPI::Unit* unit);
00032         void            setWorkersPerGas                        (int count);
00033         double  getMineralRate                          () const;
00034         double  getGasRate                                              () const;
00035         int                     getOptimalWorkerCount   () const;
00036         void            enableAutoBuild                         ();
00037         void            disableAutoBuild                        ();
00038         void            setAutoBuildPriority    (int priority);
00039         void            setDestinationMineral   (BWAPI::Unit*);
00040 
00041 private:
00042 
00043         Arbitrator::Arbitrator<BWAPI::Unit*,double>                     *arbitrator;
00044         BaseManager                                                                                                                                                     *baseManager;
00045         BuildOrderManager                                                                                                                               *buildOrderManager;
00046         std::map<BWAPI::Unit*,WorkerData>                                                               workers;
00047         std::map<BWAPI::Unit*, std::set<BWAPI::Unit*> > currentWorkers;
00048         std::map<BWAPI::Unit*, Base*>                                                                           resourceBase;
00049         std::map<BWAPI::Unit*, int>                                                                                     desiredWorkerCount;
00050         std::vector<std::pair<BWAPI::Unit*, int> >                      mineralOrder;
00051         BWAPI::Unit                                                                                                                                                     *destinationMineral;
00052         BWAPI::Unit                                                                                                                                                     *cleaner;
00053         int                                                                                                                                                                                     mineralOrderIndex;
00054         int                                                                                                                                                                                     lastSCVBalance;
00055         std::set<Base*>                                                                                                                                 basesCache;
00056         int                                                                                                                                                                                     WorkersPerGas;
00057         HashMap                                                                                                                                                                 hashMap;
00058 
00059         void rebalanceWorkers();
00060         void updateWorkerAssignments();
00061 
00062         double  mineralRate;
00063         double  gasRate;
00064         bool            autoBuild;
00065         int                     autoBuildPriority;
00066         int                     optimalWorkerCount;
00067         bool            cleaningInProgress;
00068 };
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Defines