BWAPI
|
00001 #pragma once 00002 #include "Layer3Task.h" 00003 #include "../../Interface/ArmyComposition.h" 00004 00005 // 00006 // Input: units composition 00007 // 00008 00009 class RecruitArmyTask : public Layer3Task 00010 { 00011 public: 00012 RecruitArmyTask(Layer3Script& layer3Script) 00013 : Layer3Task(layer3Script) 00014 , m_unitRecruitedEventHandler(*this) 00015 , m_recruitTroopsEndedEventHandler(*this) 00016 , m_infiniteRecruit(*this) 00017 { 00018 } 00019 00020 void run(); 00021 00022 virtual void runV() 00023 { 00024 run(); 00025 } 00026 00027 void setTargetArmyComposition(const ArmyComposition& targetArmyComposition) 00028 { 00029 m_targetArmyComposition = targetArmyComposition; 00030 } 00031 00032 void onRecruitTroopsEnded(void* data); 00033 void onUnitRecruited(void* data, const layer2::Recruit* recruit, BWAPI::Unit* unit, StaticLocation* location); 00034 00036 // GUI // 00038 const ArmyComposition& getTargetArmyComposition() const 00039 { 00040 return m_targetArmyComposition; 00041 } 00042 00043 protected: 00044 EVENT_HANDLER3(RecruitArmyTask, onUnitRecruited, const layer2::Recruit*, BWAPI::Unit*, PrimitiveLocation*) m_unitRecruitedEventHandler; 00045 EVENT_HANDLER(RecruitArmyTask, onRecruitTroopsEnded) m_recruitTroopsEndedEventHandler; 00046 00047 ProcessContainer<Recruit> m_infiniteRecruit; 00048 std::map<BWAPI::UnitType, ProcessContainerList<Recruit>> m_finiteRecruits; 00049 00050 ArmyComposition m_targetArmyComposition; 00051 };