aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrsn88872019-06-13 15:22:41 -0500
committerrsn88872019-06-13 15:38:10 -0500
commit536521d356571be803461b8fc74db84e977f23d8 (patch)
treef6b91df5127e9b96f89c0572e542eb48c92e271f
parent06ffbab3c5450632de367bbea5a1a47fdc4300ff (diff)
downloadscummvm-rg350-536521d356571be803461b8fc74db84e977f23d8.tar.gz
scummvm-rg350-536521d356571be803461b8fc74db84e977f23d8.tar.bz2
scummvm-rg350-536521d356571be803461b8fc74db84e977f23d8.zip
SWITCH: Enable touchpad mouse mode option in controls
-rw-r--r--backends/events/switchsdl/switchsdl-events.cpp31
-rw-r--r--backends/platform/sdl/switch/switch.cpp27
-rw-r--r--backends/platform/sdl/switch/switch.h3
3 files changed, 33 insertions, 28 deletions
diff --git a/backends/events/switchsdl/switchsdl-events.cpp b/backends/events/switchsdl/switchsdl-events.cpp
index 64c2b42dfd..9a42dc3e40 100644
--- a/backends/events/switchsdl/switchsdl-events.cpp
+++ b/backends/events/switchsdl/switchsdl-events.cpp
@@ -350,7 +350,7 @@ void SwitchEventSource::convertTouchXYToGameXY(float touchX, float touchY, int *
int screenW = _km.x_max;
int windowH = g_system->getHeight();
- //int windowW = g_system->getWidth();
+ int windowW = g_system->getWidth();
bool fullscreen = ConfMan.getBool("fullscreen");
bool aspectRatioCorrection = ConfMan.getBool("aspect_ratio");
@@ -362,33 +362,8 @@ void SwitchEventSource::convertTouchXYToGameXY(float touchX, float touchY, int *
float sx, sy;
float ratio = (float)screenW / (float)screenH;
- if (aspectRatioCorrection && (windowH == 200 || windowH == 400)) {
- ratio = 4.0f / 3.0f;
- }
-
- if (fullscreen || screenH >= dispH) {
- h = dispH;
- if (aspectRatioCorrection && (windowH == 200 || windowH == 400)) {
- ratio = ratio * 1.1f;
- }
- w = h * ratio;
- } else {
- if (screenH <= dispH / 2 && screenW <= dispW / 2) {
- h = screenH * 2;
- w = screenW * 2;
- } else {
- h = screenH;
- w = screenW;
- }
- if (aspectRatioCorrection && (windowH == 200 || windowH == 400)) {
- // stretch the height only if it fits, otherwise make the width smaller
- if (((float)w * (1.0f / ratio)) <= (float)dispH) {
- h = w * (1.0f / ratio);
- } else {
- w = h * ratio;
- }
- }
- }
+ h = dispH;
+ w = h * ratio;
x = (dispW - w) / 2;
y = (dispH - h) / 2;
diff --git a/backends/platform/sdl/switch/switch.cpp b/backends/platform/sdl/switch/switch.cpp
index 77c8d56498..ae16f7f2c1 100644
--- a/backends/platform/sdl/switch/switch.cpp
+++ b/backends/platform/sdl/switch/switch.cpp
@@ -89,6 +89,33 @@ void OSystem_Switch::initBackend() {
OSystem_SDL::initBackend();
}
+bool OSystem_Switch::hasFeature(Feature f) {
+ return (f == kFeatureTouchpadMode ||
+ OSystem_SDL::hasFeature(f));
+}
+
+void OSystem_Switch::setFeatureState(Feature f, bool enable) {
+ switch (f) {
+ case kFeatureTouchpadMode:
+ ConfMan.setBool("touchpad_mouse_mode", enable);
+ break;
+ default:
+ OSystem_SDL::setFeatureState(f, enable);
+ break;
+ }
+}
+
+bool OSystem_Switch::getFeatureState(Feature f) {
+ switch (f) {
+ case kFeatureTouchpadMode:
+ return ConfMan.getBool("touchpad_mouse_mode");
+ break;
+ default:
+ return OSystem_SDL::getFeatureState(f);
+ break;
+ }
+}
+
void OSystem_Switch::logMessage(LogMessageType::Type type, const char *message) {
printf("%s\n", message);
}
diff --git a/backends/platform/sdl/switch/switch.h b/backends/platform/sdl/switch/switch.h
index b9e0b063f6..b9e41e6fe4 100644
--- a/backends/platform/sdl/switch/switch.h
+++ b/backends/platform/sdl/switch/switch.h
@@ -33,6 +33,9 @@ public:
virtual void init() override;
virtual void initBackend() override;
+ virtual bool hasFeature(Feature f) override;
+ virtual void setFeatureState(Feature f, bool enable) override;
+ virtual bool getFeatureState(Feature f) override;
virtual void logMessage(LogMessageType::Type type, const char *message) override;
protected: