BWAPI
SPAR/AIModule/SparAIModule/DecisionMaking/Layer3Tactical/Script/Tasks/RecruitArmyTask.h
Go to the documentation of this file.
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 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines