|
BWAPI
|
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 };
1.7.6.1