From fb19787489322289bab5b7a017fc3ad7c1e30ecd Mon Sep 17 00:00:00 2001 From: Misa Date: Thu, 12 Nov 2020 17:16:18 -0800 Subject: [PATCH] Remove duplicate game.controllerSensitivity proxy It wasn't a direct duplicate of key.sensitivity, but it was still basically the same thing. Although to be fair, at least the case-switch conversion didn't get duplicated everywhere unlike game.slowdown. So now key.sensitivity functions the same as game.controllerSensitivity, and it only gets converted to its actual value whenever a joystick input happens in key.Poll(), unlike previously where it got converted every single frame on the title screen (there was even a comment that said "TODO bit wasteful doing this every poll"). --- desktop_version/src/Game.cpp | 8 +++--- desktop_version/src/Game.h | 2 -- desktop_version/src/Input.cpp | 9 +++---- desktop_version/src/KeyPoll.cpp | 45 +++++++++++++++++---------------- desktop_version/src/KeyPoll.h | 2 +- desktop_version/src/Render.cpp | 3 ++- 6 files changed, 32 insertions(+), 37 deletions(-) diff --git a/desktop_version/src/Game.cpp b/desktop_version/src/Game.cpp index 652b2469..86668dd3 100644 --- a/desktop_version/src/Game.cpp +++ b/desktop_version/src/Game.cpp @@ -12,6 +12,7 @@ #include "Enums.h" #include "FileSystemUtils.h" #include "Graphics.h" +#include "KeyPoll.h" #include "MakeAndPlay.h" #include "Map.h" #include "Music.h" @@ -172,9 +173,6 @@ void Game::init(void) noflashingmode = false; slowdown = 30; - // 0..5 - controllerSensitivity = 2; - nodeathmode = false; nocutscenes = false; @@ -4704,7 +4702,7 @@ void Game::deserializesettings(tinyxml2::XMLElement* dataNode, ScreenSettings* s if (pKey == "controllerSensitivity") { - controllerSensitivity = help.Int(pText); + key.sensitivity = help.Int(pText); } } @@ -4942,7 +4940,7 @@ void Game::serializesettings(tinyxml2::XMLElement* dataNode) dataNode->LinkEndChild(msg); } - xml::update_tag(dataNode, "controllerSensitivity", controllerSensitivity); + xml::update_tag(dataNode, "controllerSensitivity", key.sensitivity); } void Game::loadsettings(ScreenSettings* screen_settings) diff --git a/desktop_version/src/Game.h b/desktop_version/src/Game.h index 360ddac3..7b1efb7c 100644 --- a/desktop_version/src/Game.h +++ b/desktop_version/src/Game.h @@ -366,8 +366,6 @@ public: bool savemystats; - int controllerSensitivity; - bool quickrestartkludge; //Custom stuff diff --git a/desktop_version/src/Input.cpp b/desktop_version/src/Input.cpp index 914ff7e3..1e3f276d 100644 --- a/desktop_version/src/Input.cpp +++ b/desktop_version/src/Input.cpp @@ -1238,11 +1238,11 @@ void menuactionpress() switch (game.currentmenuoption) { case 0: - game.controllerSensitivity++; + key.sensitivity++; music.playef(11); - if(game.controllerSensitivity > 4) + if(key.sensitivity > 4) { - game.controllerSensitivity = 0; + key.sensitivity = 0; } break; @@ -1595,9 +1595,6 @@ void titleinput() //game.mx = (mouseX / 4); //game.my = (mouseY / 4); - //TODO bit wasteful doing this every poll - key.setSensitivity(game.controllerSensitivity); - game.press_left = false; game.press_right = false; game.press_action = false; diff --git a/desktop_version/src/KeyPoll.cpp b/desktop_version/src/KeyPoll.cpp index 64fa14ed..3e7ef8cd 100644 --- a/desktop_version/src/KeyPoll.cpp +++ b/desktop_version/src/KeyPoll.cpp @@ -9,34 +9,32 @@ #include "Graphics.h" #include "Music.h" -void KeyPoll::setSensitivity(int _value) +int inline KeyPoll::getThreshold() { - switch (_value) + switch (sensitivity) { - case 0: - sensitivity = 28000; - break; - case 1: - sensitivity = 16000; - break; - case 2: - sensitivity = 8000; - break; - case 3: - sensitivity = 4000; - break; - case 4: - sensitivity = 2000; - break; + case 0: + return 28000; + case 1: + return 16000; + case 2: + return 8000; + case 3: + return 4000; + case 4: + return 2000; } + return 8000; + } KeyPoll::KeyPoll() { xVel = 0; yVel = 0; - setSensitivity(2); + // 0..5 + sensitivity = 2; quitProgram = 0; keybuffer=""; @@ -199,11 +197,13 @@ void KeyPoll::Poll() buttonmap[(SDL_GameControllerButton) evt.cbutton.button] = false; break; case SDL_CONTROLLERAXISMOTION: + { + const int threshold = getThreshold(); switch (evt.caxis.axis) { case SDL_CONTROLLER_AXIS_LEFTX: - if ( evt.caxis.value > -sensitivity && - evt.caxis.value < sensitivity ) + if ( evt.caxis.value > -threshold && + evt.caxis.value < threshold ) { xVel = 0; } @@ -213,8 +213,8 @@ void KeyPoll::Poll() } break; case SDL_CONTROLLER_AXIS_LEFTY: - if ( evt.caxis.value > -sensitivity && - evt.caxis.value < sensitivity ) + if ( evt.caxis.value > -threshold && + evt.caxis.value < threshold ) { yVel = 0; } @@ -225,6 +225,7 @@ void KeyPoll::Poll() break; } break; + } case SDL_CONTROLLERDEVICEADDED: { SDL_GameController *toOpen = SDL_GameControllerOpen(evt.cdevice.which); diff --git a/desktop_version/src/KeyPoll.h b/desktop_version/src/KeyPoll.h index 6c8f3264..1078a5b0 100644 --- a/desktop_version/src/KeyPoll.h +++ b/desktop_version/src/KeyPoll.h @@ -42,7 +42,7 @@ public: int sensitivity; - void setSensitivity(int _value); + int inline getThreshold(); KeyPoll(); diff --git a/desktop_version/src/Render.cpp b/desktop_version/src/Render.cpp index 9d0e2c9e..a3549ea8 100644 --- a/desktop_version/src/Render.cpp +++ b/desktop_version/src/Render.cpp @@ -3,6 +3,7 @@ #include "Entity.h" #include "FileSystemUtils.h" #include "Graphics.h" +#include "KeyPoll.h" #include "MakeAndPlay.h" #include "Map.h" #include "Maths.h" @@ -410,7 +411,7 @@ void menurender() switch (game.currentmenuoption) { case 0: - switch(game.controllerSensitivity) + switch(key.sensitivity) { case 0: graphics.Print( -1, 85, " Low Medium High", tr, tg, tb, true);