BWAPI
|
00001 #pragma once 00002 00003 #include "Interface.h" 00004 00005 #include "TaskManager.h" 00006 #include "BuildOrder.h" 00007 00008 class BuildOrderManagerClass 00009 { 00010 public: 00011 BuildOrderManagerClass(); 00012 00013 void onBegin(); 00014 void update(); 00015 00016 bool BuildOrderFinished(); 00017 00018 bool getOrder(Order type) const { return (mControlValues.count(type) != 0 ? mControlValues.find(type)->second : false); } 00019 00020 const BuildOrder &getCurrentBuild() { return mBuildOrders[mCurrentBuild]; } 00021 00022 void toggleDebugInfo() { mShowDebugInfo = !mShowDebugInfo; } 00023 00024 std::string getOrderName(Order type); 00025 00026 private: 00027 void handleBuildItem(const BuildItem &item); 00028 void handleOrderItem(const OrderItem &item); 00029 00030 void checkBuildStatus(); 00031 00032 void LoadProtossBuilds(); 00033 void LoadTerranBuilds(); 00034 void LoadZergBuilds(); 00035 void LoadOtherBuilds(); 00036 00037 void changeCurrentBuild(BuildOrderID ID); 00038 00039 void toggleOrder(Order type); 00040 00041 void BuildCallback(int buildID, CallBackType callbackType); 00042 00043 std::map<CallBackType, std::map<TaskPointer, int>> mWaitingItems; 00044 00045 std::list<BuildItem> mItemsWaiting; 00046 std::list<OrderItem> mOrdersWaiting; 00047 00048 std::map<BuildOrderID, BuildOrder> mBuildOrders; 00049 BuildOrderID mCurrentBuild; 00050 00051 std::map<Order, bool> mControlValues; 00052 00053 bool mShowDebugInfo; 00054 00055 bool mFinishedBuild; 00056 int mBuildFinishTime; 00057 }; 00058 00059 typedef Singleton<BuildOrderManagerClass> BuildOrderManager;