1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-07-13 01:20:34 +02:00

fix joystick cursor position in xbrz

This commit is contained in:
kdmcser
2024-11-24 14:06:39 +08:00
parent a4417f3fc5
commit 005b97194f

View File

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