BWAPI
|
00001 #pragma once 00002 #include "../../Interface/Actions/Scout.h" 00003 #include "L2GroupTacticalAction.h" 00004 #include "../../../Layer1Reactive/FSM/Behaviors/Scout.h" 00005 #include "../../../Layer1Reactive/FSM/Behaviors/ObsScout.h" 00006 00007 class L2Scout : public virtual layer2::Scout, public L2GroupTacticalAction 00008 { 00009 public: 00010 L2Scout(unsigned int priority, StaticLocation* location) 00011 : Scout(priority, location) 00012 , L2GroupTacticalAction(priority) 00013 , GroupTacticalAction(priority) 00014 , TacticalAction(priority) 00015 , Process(Spar) 00016 , m_scoutFSM(*this) 00017 , m_obsScout(*this) 00018 , m_scoutArrivedEventHandler(*this) 00019 { 00020 m_unit = NULL; 00021 } 00022 00023 L2Scout(unsigned int priority, StaticLocation* location, BWAPI::Unit* scout) 00024 : Scout(priority, location) 00025 , L2GroupTacticalAction(priority) 00026 , GroupTacticalAction(priority) 00027 , TacticalAction(priority) 00028 , Process(Spar) 00029 , m_scoutFSM(*this) 00030 , m_obsScout(*this) 00031 , m_scoutArrivedEventHandler(*this) 00032 , m_unit(scout) 00033 { 00034 assert(scout->getType()==BWAPI::UnitTypes::Protoss_Observer); 00035 } 00036 00037 void onScoutArrived(void* data); 00038 00039 protected: 00040 virtual void executeSpecificImpl(); 00041 virtual void cancelSpecificImpl(); 00042 virtual void terminateSpecificImpl(); 00043 00044 virtual void onUnitAddedToGroup(void*, BWAPI::Unit* unit); 00045 virtual void onUnitRemovedFromGroup(void*, BWAPI::Unit* unit); 00046 00047 Event<boost::tuples::tuple<>>::SubscriberID m_scoutArrivedSubscriberId; 00048 EVENT_HANDLER(L2Scout, onScoutArrived) m_scoutArrivedEventHandler; 00049 00050 private: 00051 ProcessContainer<ScoutFSM> m_scoutFSM; 00052 ProcessContainer<ObsScout> m_obsScout; 00053 BWAPI::Unit* m_unit; 00054 };