BWAPI
|
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 };