21 #include <JoystickTranslation.h> 22 #include <IJoystickTranslation.h> 24 JoystickTranslation::JoystickTranslation(
unsigned int joystickID,
bool defaultMapping) {
25 this->joystickID = joystickID;
26 this->defaultMapping = defaultMapping;
28 unsigned int JoystickTranslation::getJoystickID() {
32 void JoystickTranslation::addAxis(IJoystickTranslation::Axis axis, valueRetriever valRetrieve) {
33 xboxToGenericAxis.insert(xboxToGenericAxis.end(),std::pair<Axis,valueRetriever>(axis,valRetrieve));
36 void JoystickTranslation::addButton(IJoystickTranslation::Button button, valueRetriever valRetrieve) {
37 xboxToGenericButton.insert(xboxToGenericButton.end(),std::pair<Button,valueRetriever>(button,valRetrieve));
40 float JoystickTranslation::getAxisValue(IJoystickTranslation::Axis axis) {
41 auto elem = xboxToGenericAxis.find(axis);
42 if(elem == xboxToGenericAxis.end())
45 return elem->second(joystickID);
48 float JoystickTranslation::getButtonValue(IJoystickTranslation::Button button) {
49 auto elem = xboxToGenericButton.find(button);
50 if(elem == xboxToGenericButton.end())
53 return elem->second(joystickID);
56 JoystickTranslation::valueRetriever JoystickTranslation::valRetriever(
float retrieve) {
57 return [retrieve](
unsigned int x) ->
float {
return retrieve; };
60 JoystickTranslation::valueRetriever JoystickTranslation::buttonValueRetriever(
unsigned int button) {
61 return [button](
unsigned int id) ->
float {
return sf::Joystick::isButtonPressed(
id,button) ? 100.0f : 0.0f;};
64 JoystickTranslation::valueRetriever JoystickTranslation::axisValueRetriever(sf::Joystick::Axis axis,
bool inverted) {
65 return [axis,inverted](
unsigned int id) ->
float {
return (inverted ? -1 : 1)*sf::Joystick::getAxisPosition(
id,axis);};
68 JoystickTranslation::valueRetriever JoystickTranslation::axisFromButtonsRetriever(
unsigned int buttonPos,
unsigned int buttonNeg) {
69 return [buttonNeg,buttonPos](
unsigned int id) ->
float {
70 float val = sf::Joystick::isButtonPressed(
id,buttonPos) ? 100.0f : 0.0f;
71 val -= sf::Joystick::isButtonPressed(
id,buttonNeg) ? 100.0f : 0.0f;
76 JoystickTranslation::valueRetriever JoystickTranslation::buttonFromAxisRetriever(sf::Joystick::Axis axis) {
77 return [axis](
unsigned int id) ->
float {
return (sf::Joystick::getAxisPosition(
id,axis)+100.0f)/2.0f;};
80 JoystickTranslation::valueRetriever JoystickTranslation::buttonFromHalfAxisRetriever(sf::Joystick::Axis axis,
81 bool positiveElseNegative) {
82 return [axis,positiveElseNegative](
unsigned int id) ->
float {
83 float val = sf::Joystick::getAxisPosition(
id,axis);
84 if(val > 0.0f && positiveElseNegative)
86 else if(val < 0.0f && !positiveElseNegative)
93 JoystickTranslation::valueRetriever JoystickTranslation::axisFromButtonRetriever(
unsigned int button) {
94 return [button](
unsigned int id) ->
float {
return sf::Joystick::isButtonPressed(
id,button) ? 100.0f : -100.0f;};
97 bool JoystickTranslation::isDefaultMapping() {
98 return defaultMapping;