00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include "ArExport.h"
00028 #include "ariaOSDef.h"
00029 #include "ArActionGroup.h"
00030 #include "ArAction.h"
00031 #include "ArRobot.h"
00032 #include "ArLog.h"
00033
00042 ArActionGroup::ArActionGroup(ArRobot *robot)
00043 {
00044 myRobot = robot;
00045 }
00046
00047 ArActionGroup::~ArActionGroup()
00048 {
00049 removeActions();
00050 }
00051
00052
00058 void ArActionGroup::addAction(ArAction *action, int priority)
00059 {
00060 if (myRobot == NULL)
00061 {
00062 ArLog::log(ArLog::Terse,
00063 "ArActionGroup::addAction: NULL robot pointer... failed.");
00064 return;
00065 }
00066 myActions.push_front(action);
00067 myRobot->addAction(action, priority);
00068 }
00069
00074 void ArActionGroup::remAction(ArAction *action)
00075 {
00076 if (myRobot == NULL)
00077 {
00078 ArLog::log(ArLog::Terse,
00079 "ArActionGroup::remAction: NULL robot pointer... failed.");
00080 return;
00081 }
00082 myActions.remove(action);
00083 myRobot->remAction(action);
00084 }
00085
00086 void ArActionGroup::activate(void)
00087 {
00088 std::list<ArAction *>::iterator it;
00089 if (myRobot == NULL)
00090 {
00091 ArLog::log(ArLog::Terse,
00092 "ArActionGroup::activate: NULL robot pointer... failed.");
00093 return;
00094 }
00095 for (it = myActions.begin(); it != myActions.end(); it++)
00096 (*it)->activate();
00097 }
00098
00099 void ArActionGroup::activateExclusive(void)
00100 {
00101 std::list<ArAction *>::iterator it;
00102
00103 if (myRobot == NULL)
00104 {
00105 ArLog::log(ArLog::Terse,
00106 "ArActionGroup::activateExclusive: NULL robot pointer... failed.");
00107 return;
00108 }
00109 myRobot->deactivateActions();
00110 for (it = myActions.begin(); it != myActions.end(); it++)
00111 (*it)->activate();
00112 }
00113
00114 void ArActionGroup::deactivate(void)
00115 {
00116 std::list<ArAction *>::iterator it;
00117 if (myRobot == NULL)
00118 {
00119 ArLog::log(ArLog::Terse,
00120 "ArActionGroup::deactivate: NULL robot pointer... failed.");
00121 return;
00122 }
00123 myRobot->deactivateActions();
00124 for (it = myActions.begin(); it != myActions.end(); it++)
00125 (*it)->deactivate();
00126 }
00127
00128 std::list<ArAction *> *ArActionGroup::getActionList(void)
00129 {
00130 return &myActions;
00131 }
00132
00133 void ArActionGroup::removeActions(void)
00134 {
00135 std::list<ArAction *>::iterator it;
00136
00137 if (myRobot == NULL)
00138 {
00139 ArLog::log(ArLog::Terse,
00140 "ArActionGroup::removeActions: NULL robot pointer... very bad.");
00141 return;
00142 }
00143
00144 for (it = myActions.begin(); it != myActions.end(); ++it)
00145 myRobot->remAction((*it));
00146 }
00147