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 #ifndef ARACTIONKEYDRIVE_H
00027 #define ARACTIONKEYDRIVE_H
00028
00029 #include "ariaTypedefs.h"
00030 #include "ArAction.h"
00031 #include "ArFunctor.h"
00032
00033 class ArRobot;
00034
00036 class ArActionKeydrive : public ArAction
00037 {
00038 public:
00040 AREXPORT ArActionKeydrive(const char *name = "keydrive",
00041 double transVelMax = 400,
00042 double turnAmountMax = 24,
00043 double velIncrement = 25,
00044 double turnIncrement = 8);
00046 AREXPORT virtual ~ArActionKeydrive();
00047 AREXPORT virtual ArActionDesired *fire(ArActionDesired currentDesired);
00049 AREXPORT void setSpeeds(double transVelMax, double turnAmountMax);
00051 AREXPORT void setIncrements(double velIncrement, double turnIncrement);
00052 AREXPORT virtual ArActionDesired *getDesired(void) { return &myDesired; }
00053 #ifndef SWIG
00054 AREXPORT virtual const ArActionDesired *getDesired(void) const
00055 { return &myDesired; }
00056 #endif
00057 AREXPORT virtual void setRobot(ArRobot *robot);
00058 AREXPORT virtual void activate(void);
00059 AREXPORT virtual void deactivate(void);
00061 AREXPORT void takeKeys(void);
00063 AREXPORT void giveUpKeys(void);
00065 AREXPORT void up(void);
00067 AREXPORT void down(void);
00069 AREXPORT void left(void);
00071 AREXPORT void right(void);
00073 AREXPORT void space(void);
00074
00075 protected:
00076 ArFunctorC<ArActionKeydrive> myUpCB;
00077 ArFunctorC<ArActionKeydrive> myDownCB;
00078 ArFunctorC<ArActionKeydrive> myLeftCB;
00079 ArFunctorC<ArActionKeydrive> myRightCB;
00080 ArFunctorC<ArActionKeydrive> mySpaceCB;
00081
00082 ArActionDesired myDesired;
00083
00084 double myTransVelMax;
00085
00086 double myTurnAmountMax;
00087
00088 double myVelIncrement;
00089
00090 double myTurnIncrement;
00091
00092 double myDeltaVel;
00093
00094 double myTurnAmount;
00095
00096 double myDesiredSpeed;
00097
00098 bool mySpeedReset;
00099 };
00100
00101
00102 #endif // ARACTIONKEYDRIVE_H