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