SWITCH: Enable touchpad mouse mode option in controls
This commit is contained in:
parent
06ffbab3c5
commit
536521d356
3 changed files with 33 additions and 28 deletions
|
@ -350,7 +350,7 @@ void SwitchEventSource::convertTouchXYToGameXY(float touchX, float touchY, int *
|
||||||
int screenW = _km.x_max;
|
int screenW = _km.x_max;
|
||||||
|
|
||||||
int windowH = g_system->getHeight();
|
int windowH = g_system->getHeight();
|
||||||
//int windowW = g_system->getWidth();
|
int windowW = g_system->getWidth();
|
||||||
|
|
||||||
bool fullscreen = ConfMan.getBool("fullscreen");
|
bool fullscreen = ConfMan.getBool("fullscreen");
|
||||||
bool aspectRatioCorrection = ConfMan.getBool("aspect_ratio");
|
bool aspectRatioCorrection = ConfMan.getBool("aspect_ratio");
|
||||||
|
@ -362,33 +362,8 @@ void SwitchEventSource::convertTouchXYToGameXY(float touchX, float touchY, int *
|
||||||
float sx, sy;
|
float sx, sy;
|
||||||
float ratio = (float)screenW / (float)screenH;
|
float ratio = (float)screenW / (float)screenH;
|
||||||
|
|
||||||
if (aspectRatioCorrection && (windowH == 200 || windowH == 400)) {
|
|
||||||
ratio = 4.0f / 3.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fullscreen || screenH >= dispH) {
|
|
||||||
h = dispH;
|
h = dispH;
|
||||||
if (aspectRatioCorrection && (windowH == 200 || windowH == 400)) {
|
|
||||||
ratio = ratio * 1.1f;
|
|
||||||
}
|
|
||||||
w = h * ratio;
|
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
x = (dispW - w) / 2;
|
x = (dispW - w) / 2;
|
||||||
y = (dispH - h) / 2;
|
y = (dispH - h) / 2;
|
||||||
|
|
|
@ -89,6 +89,33 @@ void OSystem_Switch::initBackend() {
|
||||||
OSystem_SDL::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) {
|
void OSystem_Switch::logMessage(LogMessageType::Type type, const char *message) {
|
||||||
printf("%s\n", message);
|
printf("%s\n", message);
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,9 @@ public:
|
||||||
|
|
||||||
virtual void init() override;
|
virtual void init() override;
|
||||||
virtual void initBackend() 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;
|
virtual void logMessage(LogMessageType::Type type, const char *message) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue