Browse Source

fix joystick cursor position in xbrz

kdmcser 11 months ago
parent
commit
005b97194f
1 changed files with 5 additions and 2 deletions
  1. 5 2
      client/eventsSDL/InputSourceGameController.cpp

+ 5 - 2
client/eventsSDL/InputSourceGameController.cpp

@@ -18,6 +18,7 @@
 #include "../gui/CursorHandler.h"
 #include "../gui/EventDispatcher.h"
 #include "../gui/ShortcutHandler.h"
+#include "../render/IScreenHandler.h"
 
 #include "../../lib/CConfigHandler.h"
 
@@ -198,9 +199,10 @@ void InputSourceGameController::tryToConvertCursor()
 	assert(CCS->curh);
 	if(CCS->curh->getShowType() == Cursor::ShowType::HARDWARE)
 	{
+		int ScaleFactor = GH.screenHandler().getScalingFactor();
 		const Point & cursorPosition = GH.getCursorPosition();
 		CCS->curh->changeCursor(Cursor::ShowType::SOFTWARE);
-		CCS->curh->cursorMove(cursorPosition.x, cursorPosition.y);
+		CCS->curh->cursorMove(cursorPosition.x * ScaleFactor, cursorPosition.y * ScaleFactor);
 		GH.input().setCursorPosition(cursorPosition);
 	}
 }
@@ -225,12 +227,13 @@ void InputSourceGameController::doCursorMove(int deltaX, int deltaY)
 		return;
 	const Point & screenSize = GH.screenDimensions();
 	const Point & cursorPosition = GH.getCursorPosition();
+	int ScaleFactor = GH.screenHandler().getScalingFactor();
 	int newX = std::min(std::max(cursorPosition.x + deltaX, 0), screenSize.x);
 	int newY = std::min(std::max(cursorPosition.y + deltaY, 0), screenSize.y);
 	Point targetPosition{newX, newY};
 	GH.input().setCursorPosition(targetPosition);
 	if(CCS && CCS->curh)
-		CCS->curh->cursorMove(GH.getCursorPosition().x, GH.getCursorPosition().y);
+		CCS->curh->cursorMove(GH.getCursorPosition().x * ScaleFactor, GH.getCursorPosition().y * ScaleFactor);
 }
 
 int InputSourceGameController::getMoveDis(float planDis)