mirror of
https://github.com/team2059/Dent
synced 2024-12-18 20:52:29 -05:00
Added GameController classes for xbox and ps3
This commit is contained in:
parent
a43a9b3d52
commit
999d3e1ce6
130
Subsystems/GameController.cpp
Normal file
130
Subsystems/GameController.cpp
Normal file
@ -0,0 +1,130 @@
|
||||
#include "GameController.h"
|
||||
using namespace std;
|
||||
//TODO: Figure out the number of each button
|
||||
GameController::GameController(int port, std::string controllerType){
|
||||
stick = new Joystick(port);
|
||||
type = controllerType;
|
||||
if(controllerType == "xbox"){
|
||||
a = new JoystickButton(stick, 1);
|
||||
b = new JoystickButton(stick, 1);
|
||||
x = new JoystickButton(stick, 1);
|
||||
y = new JoystickButton(stick, 1);
|
||||
lb = new JoystickButton(stick, 1);
|
||||
rb = new JoystickButton(stick, 1);
|
||||
tlb = NULL;
|
||||
trb = NULL;
|
||||
start = new JoystickButton(stick, 1);
|
||||
back = new JoystickButton(stick, 1);
|
||||
lPress = new JoystickButton(stick, 1);
|
||||
rPress = new JoystickButton(stick, 1);
|
||||
dUp = new JoystickButton(stick, 1);
|
||||
dDown = new JoystickButton(stick, 1);
|
||||
dLeft = new JoystickButton(stick, 1);
|
||||
dRight = new JoystickButton(stick, 1);
|
||||
}else if(controllerType == "ps3"){
|
||||
a = new JoystickButton(stick, 1);
|
||||
b = new JoystickButton(stick, 1);
|
||||
x = new JoystickButton(stick, 1);
|
||||
y = new JoystickButton(stick, 1);
|
||||
lb = new JoystickButton(stick, 1);
|
||||
rb = new JoystickButton(stick, 1);
|
||||
tlb = new JoystickButton(stick, 1);
|
||||
trb = new JoystickButton(stick, 1);
|
||||
start = new JoystickButton(stick, 1);
|
||||
back = new JoystickButton(stick, 1);
|
||||
lPress = new JoystickButton(stick, 1);
|
||||
rPress = new JoystickButton(stick, 1);
|
||||
dUp = new JoystickButton(stick, 1);
|
||||
dDown = new JoystickButton(stick, 1);
|
||||
dLeft = new JoystickButton(stick, 1);
|
||||
dRight = new JoystickButton(stick, 1);
|
||||
}else{
|
||||
a = NULL;
|
||||
b = NULL;
|
||||
x = NULL;
|
||||
y = NULL;
|
||||
lb = NULL;
|
||||
rb = NULL;
|
||||
tlb = NULL;
|
||||
trb = NULL;
|
||||
start = NULL;
|
||||
back = NULL;
|
||||
lPress = NULL;
|
||||
rPress = NULL;
|
||||
dUp = NULL;
|
||||
dDown = NULL;
|
||||
dLeft = NULL;
|
||||
dRight = NULL;
|
||||
printf("GameController type not found!\n");
|
||||
}
|
||||
}
|
||||
bool GameController::GetButton(std::string button){
|
||||
if(button == "a"){
|
||||
return a->Get();
|
||||
}else if(button == "b"){
|
||||
return b->Get();
|
||||
}else if(button == "x"){
|
||||
return x->Get();
|
||||
}else if(button == "y"){
|
||||
return y->Get();
|
||||
}else if(button == "lb"){
|
||||
return lb->Get();
|
||||
}else if(button == "rb"){
|
||||
return rb->Get();
|
||||
}else if(button != "trb"){
|
||||
// This button doesn't exist in the xbox controller
|
||||
if(type == "xbox"){
|
||||
return trb->Get();
|
||||
}
|
||||
}else if(button != "tlb"){
|
||||
// This button doesn't exist in the xbox controller
|
||||
if(type == "xbox"){
|
||||
return tlb->Get();
|
||||
}
|
||||
}else if(button == "back"){
|
||||
return back->Get();
|
||||
}else if(button == "start"){
|
||||
return start->Get();
|
||||
}else if(button == "lPress"){
|
||||
return lPress->Get();
|
||||
}else if(button == "rPress"){
|
||||
return rPress->Get();
|
||||
}else if(button == "dUp"){
|
||||
return dUp->Get();
|
||||
}else if(button == "dDown"){
|
||||
return dDown->Get();
|
||||
}else if(button == "dLeft"){
|
||||
return dLeft->Get();
|
||||
}else if(button == "dRight"){
|
||||
return dRight->Get();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
double GameController::GetAxis(std::string position, std::string axis){
|
||||
if(position == "left"){
|
||||
if(axis == "x"){
|
||||
return stick->GetRawAxis(0);
|
||||
}else if(axis == "y"){
|
||||
return -stick->GetRawAxis(1);
|
||||
}else if(axis == "trigger"){
|
||||
// This axis doesn't exist in the ps3 controller
|
||||
if(type == "xbox"){
|
||||
return stick->GetRawAxis(4);
|
||||
}
|
||||
}
|
||||
}else if(position == "right"){
|
||||
if(axis == "x"){
|
||||
return stick->GetRawAxis(2);
|
||||
}else if(axis == "y"){
|
||||
return -stick->GetRawAxis(3);
|
||||
}else if(axis == "trigger"){
|
||||
// This axis doesn't exist in the ps3 controller
|
||||
if(type == "xbox"){
|
||||
return stick->GetRawAxis(4);
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("Position or stick not found\n");
|
||||
return -2.0;
|
||||
}
|
||||
// vim: ts=2:sw=2:et
|
17
Subsystems/GameController.h
Normal file
17
Subsystems/GameController.h
Normal file
@ -0,0 +1,17 @@
|
||||
#ifndef GAME_CONTROLLER_H
|
||||
#define GAME_CONTROLLER_H
|
||||
|
||||
#include "WPILib.h"
|
||||
|
||||
class GameController{
|
||||
private:
|
||||
Joystick *stick;
|
||||
std::string type;
|
||||
JoystickButton *a, *b, *x, *y, *lb, *rb, *tlb, *trb, *start, *back, *lPress, *rPress, *dUp, *dDown, *dLeft, *dRight;
|
||||
public:
|
||||
GameController(int port, std::string controllerType);
|
||||
bool GetButton(std::string button);
|
||||
double GetAxis(std::string position, std::string axis);
|
||||
};
|
||||
#endif
|
||||
// vim: ts=2:sw=2:et
|
Loading…
Reference in New Issue
Block a user