BWAPI
Skynet/Skynet/BuildOrderManager.h
Go to the documentation of this file.
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;
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines