SWITCH: Enable touchpad mouse mode option in controls

This commit is contained in:
rsn8887 2019-06-13 15:22:41 -05:00
parent 06ffbab3c5
commit 536521d356
3 changed files with 33 additions and 28 deletions

View File

@ -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;

View File

@ -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);
}

View File

@ -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: