NLAINIMAT::CActionResources Class Reference

#include <sensors_motivations_actions_def.h>


Public Member Functions

 CActionResources ()
void filterMyActions (std::multimap< double, std::pair< TTargetId, TAction > > &myActionsByPriority)
 Let in the map myActionsByPriority all actions with no more actions Resources (thoses actions shouldn't be executed).

virtual ~CActionResources ()

Private Attributes

std::multimap< TAction, TActionResources_ActionsResources


Constructor & Destructor Documentation

NLAINIMAT::CActionResources::CActionResources  ) 
 

Definition at line 31 of file sensors_motivations_actions_def.cpp.

References _ActionsResources, NLAINIMAT::Action_LookAround, NLAINIMAT::Action_MoveToMyFlagGoal, NLAINIMAT::Action_MoveToMyFlagStart, NLAINIMAT::Action_MoveToTargetFlag, NLAINIMAT::Action_MoveToTargetFlagGoal, NLAINIMAT::Action_MoveToTargetFlagStart, NLAINIMAT::Action_SelectClassDemoman, NLAINIMAT::Action_SelectClassEngineer, NLAINIMAT::Action_SelectClassHwguy, NLAINIMAT::Action_SelectClassMedic, NLAINIMAT::Action_SelectClassPyro, NLAINIMAT::Action_SelectClassScout, NLAINIMAT::Action_SelectClassSniper, NLAINIMAT::Action_SelectClassSoldier, NLAINIMAT::Action_SelectClassSpy, NLAINIMAT::Action_Target_Approach, NLAINIMAT::Action_Target_MoveAway, NLAINIMAT::Action_Target_ShootTo, NLAINIMAT::ActionResources_button_attack, NLAINIMAT::ActionResources_button_attack2, NLAINIMAT::ActionResources_button_jump, NLAINIMAT::ActionResources_forwardMove, NLAINIMAT::ActionResources_pitch, NLAINIMAT::ActionResources_selectClass, and NLAINIMAT::ActionResources_yaw.

00032 {
00033 //      _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_Idle,  ActionResources_forwardMove));
00034 
00035         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_Target_MoveAway,  ActionResources_forwardMove));
00036         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_Target_MoveAway,  ActionResources_yaw));
00037 
00038         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_Target_ShootTo,  ActionResources_pitch));
00039 //      _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_Target_ShootTo,  ActionResources_yaw));
00040         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_Target_ShootTo,  ActionResources_button_attack));
00041         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_Target_ShootTo,  ActionResources_button_attack2));
00042         
00043         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_Target_Approach,  ActionResources_forwardMove));
00044         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_Target_Approach,  ActionResources_yaw));
00045         
00046 //      _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_Item_Approach,  ActionResources_forwardMove));
00047 //      _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_Item_Approach,  ActionResources_yaw));
00048         
00049 //      _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_Waypoint_MoveTo,  ActionResources_forwardMove));
00050 //      _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_Waypoint_MoveTo,  ActionResources_yaw));
00051 //      _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_Waypoint_MoveTo,  ActionResources_button_jump));
00052         
00053         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_MoveToTargetFlag,  ActionResources_forwardMove));
00054         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_MoveToTargetFlag,  ActionResources_yaw));
00055         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_MoveToTargetFlag,  ActionResources_button_jump));
00056         
00057         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_MoveToTargetFlagStart,  ActionResources_forwardMove));
00058         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_MoveToTargetFlagStart,  ActionResources_yaw));
00059         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_MoveToTargetFlagStart,  ActionResources_button_jump));
00060         
00061         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_MoveToTargetFlagGoal,  ActionResources_forwardMove));
00062         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_MoveToTargetFlagGoal,  ActionResources_yaw));
00063         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_MoveToTargetFlagGoal,  ActionResources_button_jump));
00064         
00065         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_MoveToMyFlagStart,  ActionResources_forwardMove));
00066         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_MoveToMyFlagStart,  ActionResources_yaw));
00067         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_MoveToMyFlagStart,  ActionResources_button_jump));
00068         
00069         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_MoveToMyFlagGoal,  ActionResources_forwardMove));
00070         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_MoveToMyFlagGoal,  ActionResources_yaw));
00071         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_MoveToMyFlagGoal,  ActionResources_button_jump));
00072         
00073         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_LookAround,  ActionResources_forwardMove));
00074         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_LookAround,  ActionResources_yaw));
00075         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_LookAround,  ActionResources_button_jump));
00076 
00077         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_SelectClassScout,  ActionResources_selectClass));
00078         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_SelectClassSniper,  ActionResources_selectClass));
00079         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_SelectClassSoldier,  ActionResources_selectClass));
00080         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_SelectClassDemoman,  ActionResources_selectClass));
00081         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_SelectClassMedic,  ActionResources_selectClass));
00082         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_SelectClassHwguy,  ActionResources_selectClass));
00083         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_SelectClassPyro,  ActionResources_selectClass));
00084         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_SelectClassSpy,  ActionResources_selectClass));
00085         _ActionsResources.insert(std::pair<TAction, TActionResources>(Action_SelectClassEngineer,  ActionResources_selectClass));
00086 }

NLAINIMAT::CActionResources::~CActionResources  )  [virtual]
 

Definition at line 88 of file sensors_motivations_actions_def.cpp.

00089 {
00090         ;
00091 }


Member Function Documentation

void NLAINIMAT::CActionResources::filterMyActions std::multimap< double, std::pair< TTargetId, TAction > > &  myActionsByPriority  ) 
 

Let in the map myActionsByPriority all actions with no more actions Resources (thoses actions shouldn't be executed).

Definition at line 94 of file sensors_motivations_actions_def.cpp.

References _ActionsResources, NLAINIMAT::TAction, and NLAINIMAT::TActionResources.

Referenced by NLAINIMAT::CMHiCSagent::selectBehavior().

00095 {
00096         // We build a set of used resources.
00097         std::set<TActionResources> usedActionsResources;
00098 
00099         // For each wanted action in from the highest priority to the lowest
00100         std::multimap<double, std::pair<TTargetId,TAction> >::reverse_iterator itMyActionsByPriority( myActionsByPriority.end());
00101         std::multimap<double, std::pair<TTargetId,TAction> >::reverse_iterator itLast(myActionsByPriority.begin());
00102         std::set<TActionResources>::iterator    itUsedActionsResources;
00103         std::multimap<TAction, TActionResources>::iterator      itActionsResources, itActionsResources_begin, itActionsResources_last;
00104         bool actionIsOK = false;
00105         std::multimap<double, std::pair<TTargetId,TAction> >::iterator itMyActionsByPriority2Remove;
00106         
00107         while (itMyActionsByPriority != itLast )
00108         {
00109                 double priority = (*itMyActionsByPriority).first;
00110                 TAction action =  (*itMyActionsByPriority).second.second;
00111                 itMyActionsByPriority++;
00112                 
00113                 // if none of the resources are used, the action may be executed and resources are stored as used.
00114                 if (actionIsOK)
00115                 {
00116                         for (itActionsResources = itActionsResources_begin;
00117                         itActionsResources != itActionsResources_last;
00118                         itActionsResources++)
00119                         {
00120                                 TActionResources ar = (*itActionsResources).second;
00121                                 usedActionsResources.insert(ar);
00122                         }
00123                         myActionsByPriority.erase(itMyActionsByPriority2Remove);
00124                 }
00125 
00126                 // We look for all needed action resources.
00127                 itActionsResources_begin = _ActionsResources.lower_bound(action);
00128                 itActionsResources_last = _ActionsResources.upper_bound(action);
00129                 actionIsOK = true;
00130 
00131                 // For each of thoses resources we look if it's already used.
00132                 for (itActionsResources = itActionsResources_begin;
00133                          itActionsResources != itActionsResources_last;
00134                          itActionsResources++)
00135                 {
00136                         TActionResources ar = (*itActionsResources).second;
00137                         itUsedActionsResources = usedActionsResources.find(ar);
00138                         if( itUsedActionsResources != usedActionsResources.end())
00139                         {
00140                                 actionIsOK = false;
00141                                 break;
00142                         }
00143                 }
00144 
00145                  itMyActionsByPriority2Remove = itMyActionsByPriority.base();
00146         }
00147 
00148         if (actionIsOK)
00149         {
00150                 for (itActionsResources = itActionsResources_begin;
00151                 itActionsResources != itActionsResources_last;
00152                 itActionsResources++)
00153                 {
00154                         TActionResources ar = (*itActionsResources).second;
00155                         usedActionsResources.insert(ar);
00156                 }
00157                 myActionsByPriority.erase(itMyActionsByPriority2Remove);
00158         }
00159 }


Field Documentation

std::multimap<TAction, TActionResources> NLAINIMAT::CActionResources::_ActionsResources [private]
 

Definition at line 296 of file sensors_motivations_actions_def.h.

Referenced by CActionResources(), and filterMyActions().


The documentation for this class was generated from the following files:
Generated on Tue Mar 16 11:09:26 2004 for NeL by doxygen 1.3.6