📄 basictricks.h
字号:
#ifndef BASICTRICKS_H
#define BASICTRICKS_H
// Bag of basic tricks
#include "../Common/LocomotionCommand.h"
#include "../Common/HeadCommand.h"
#include "Trick.h"
class BasicTricks {
public :
class NullBody: public Trick {
public:
NullBody() {}
virtual int Start() {LocomotionCommand lc; lc.Set(LocomotionCommand::TP_DONOTHING,0.0,0.0,0.0,0.0,1.0); lcq_.Enqueue(0,lc); return 0;}
virtual int Abort() {return 0;}
virtual int Continue() {return 0;}
virtual bool IsUsingHead() {return false;}
virtual char* GetName() {return "NullBody";}
};
class NullBodyTime: public Trick {
public:
NullBodyTime(int f) {maxFrames=f; frames=0;}
virtual int Start() {frames=0; lcq_.SetTailWagging(true); LocomotionCommand lc; lc.Set(LocomotionCommand::TP_DONOTHING,0.0,0.0,0.0,0.0,1.0); lcq_.Enqueue(0,lc); return 1;}
virtual int Abort() {return 0;}
virtual int Continue() {if ((frames++) < maxFrames) return 1; else return 0;}
virtual bool IsUsingHead() {return false;}
virtual char* GetName() {return "NullBodyTime";}
private:
int maxFrames;
int frames;
};
class NullHead: public Trick {
public:
NullHead() {}
virtual int Start() {return 0;}
virtual int Abort() {return 0;}
virtual int Continue() {return 0;}
virtual bool IsUsingHead() {return false;}
virtual char* GetName() {return "NullHead";}
};
class Kick : public Trick {
public:
Kick(int); // preferred!
Kick(int, bool); // allow direct head usage control
Kick(int, bool, double); // set angle
virtual int Start();
virtual int Abort();
virtual int Continue();
virtual bool IsUsingHead();
virtual char* GetErrorMsg(int);
virtual char* GetName();
int type; // this is just for my cout :(
private:
Utilities utils;
bool doEndKick;
bool useHead;
double angle;
};
class Step : public Trick {
public:
Step(int,double,double,double,double,double);
virtual int Start();
virtual int Abort();
virtual int Continue();
virtual bool IsUsingHead();
virtual char* GetErrorMsg(int);
virtual char* GetName();
private:
Utilities utils;
int type;
double frontStrideLength;
double backStrideLength;
double turn;
double strafe;
double stepFrequency;
};
class MultiTrick : public Trick {
public:
MultiTrick(int,...);
MultiTrick(bool _timer, int, ...); // allows timing of MultiTricks
virtual ~MultiTrick();
virtual int Start();
virtual int Abort();
virtual int Continue();
virtual bool IsUsingHead();
virtual char* GetErrorMsg(int);
virtual char* GetName();
virtual Trick* GetCurrentTrick();
private:
bool timer;
long startFrame;
int count;
int current;
int previous;
bool hasRunStart;
Trick** tricks;
};
class SelectaTrick : public Trick {
public:
SelectaTrick(int _type);
virtual ~SelectaTrick();
virtual int Start();
virtual int Abort();
virtual int Continue();
virtual bool IsUsingHead() {return true;}
virtual char* GetErrorMsg(int);
virtual char* GetName();
virtual Trick* GetCurrentTrick();
private:
Trick* currentTrick;
int type;
};
};
#endif // BASICTRICKS_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -