BWAPI
UAlbertaBot_src/Projects/UAlbertaBot/Source/base/WorkerManager.h
Go to the documentation of this file.
00001 #pragma once
00002 
00003 #include <Common.h>
00004 #include "BuildingManager.h"
00005 #include "WorkerData.h"
00006 
00007 class Building;
00008 
00009 class WorkerManager {
00010 
00011         static WorkerManager *          instance;
00012 
00013         WorkerData                                      workerData;
00014 
00015         int                                                     workersPerRefinery;
00016 
00017         void                                            setMineralWorker(BWAPI::Unit * unit);
00018 
00019         WorkerManager();
00020 
00021 public:
00022 
00023         void                                            update();
00024         void                                            onUnitDestroy(BWAPI::Unit * unit);
00025         void                                            onUnitMorph(BWAPI::Unit * unit);
00026         void                                            onUnitShow(BWAPI::Unit * unit);
00027         void                                            onUnitRenegade(BWAPI::Unit * unit);
00028         void                                            finishedWithWorker(BWAPI::Unit * unit);
00029 
00030         void                                            handleIdleWorkers();
00031         void                                            handleGasWorkers();
00032         void                                            handleMoveWorkers();
00033         void                                            handleCombatWorkers();
00034         void                                            finishedWithCombatWorkers();
00035 
00036         void                                            drawResourceDebugInfo();
00037         void                                            updateWorkerStatus();
00038         void                                            drawWorkerInformation(int x, int y);
00039 
00040         int                                                     getNumMineralWorkers();
00041         int                                                     getNumGasWorkers();
00042         int                                                     getNumIdleWorkers();
00043         void                                            setScoutWorker(BWAPI::Unit * worker);
00044 
00045         bool                                            isWorkerScout(BWAPI::Unit * worker);
00046         bool                                            isBuilder(BWAPI::Unit * worker);
00047 
00048         BWAPI::Unit *                           getBuilder(Building & b, bool setJobAsBuilder = true);
00049         BWAPI::Unit *                           getMoveWorker(BWAPI::Position p);
00050         BWAPI::Unit *                           getClosestDepot(BWAPI::Unit * worker);
00051         BWAPI::Unit *                           getGasWorker(BWAPI::Unit * refinery);
00052         BWAPI::Unit *                           getClosestEnemyUnit(BWAPI::Unit * worker);
00053 
00054         void                                            setMoveWorker(int m, int g, BWAPI::Position p);
00055         void                                            setCombatWorker(BWAPI::Unit * worker);
00056         void                                            smartAttackUnit(BWAPI::Unit * attacker, BWAPI::Unit * target);
00057 
00058         bool                                            willHaveResources(int mineralsRequired, int gasRequired, double distance);
00059         void                                            rebalanceWorkers();
00060 
00061         static WorkerManager *          getInstance();
00062 
00063 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines