BWAPI
SPAR/AIModule/SparAIModule/DecisionMaking/Layer1Reactive/FSM/GroupBehavior.h
Go to the documentation of this file.
00001 #pragma once
00002 #include "Behavior.h"
00003 #include "../../../Utils/GroupProcess.h"
00004 
00009 class IGroupBehavior : public GroupProcess, public virtual IBehavior
00010 {
00011 public:
00012   IGroupBehavior(const Process* parent, unsigned int initialPriority, const PersistentUnitGroup* group)
00013     : GroupProcess(parent, group)
00014     , Process(parent)
00015     , IBehavior(parent, initialPriority)
00016     , IFSM(parent)
00017   {
00018   }
00019 
00020   virtual void executeImpl()
00021   {
00022     GroupProcess::executeImpl();
00023     IBehavior::executeImpl();
00024   }
00025 
00027   // GUI //
00029   virtual std::set<BWAPI::Unit*> getCommandedUnits() const
00030   {
00031     return std::set<BWAPI::Unit*>(getGroup()->begin(), getGroup()->end());
00032   }
00033 
00034 protected:
00035   virtual void output(std::ostream& out) const
00036   {
00037     IBehavior::output(out);
00038   }
00039 
00040   virtual void terminateImpl()
00041   {
00042     GroupProcess::terminateImpl();
00043     IBehavior::terminateImpl();
00044   }
00045 };
00046 
00047 template <class DerivedBehavior>
00048 class GroupBehavior : public virtual IGroupBehavior, public Behavior<DerivedBehavior>
00049 {
00050 public:
00051   GroupBehavior(const Process* parent, unsigned int initialPriority, const PersistentUnitGroup* group)
00052     : IGroupBehavior(parent, initialPriority, group)
00053     , Behavior(parent, initialPriority)
00054     , IBehavior(parent, initialPriority)
00055     , IFSM(parent)
00056     , Process(parent)
00057   {
00058   }
00059 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines