1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-25 22:42:04 +02:00

Test version of swipe gesture for in-combat attacks

This commit is contained in:
Ivan Savenko
2023-05-31 00:33:10 +03:00
parent 70155b48e1
commit b20109c830
20 changed files with 79 additions and 104 deletions

View File

@@ -61,9 +61,7 @@ void InputSourceTouch::handleEventFingerMotion(const SDL_TouchFingerEvent & tfin
}
case TouchState::TAP_DOWN_SHORT:
{
GH.input().setCursorPosition(convertTouchToMouse(tfinger));
Point distance = GH.getCursorPosition() - lastTapPosition;
Point distance = convertTouchToMouse(tfinger) - lastTapPosition;
if ( std::abs(distance.x) > params.panningSensitivityThreshold || std::abs(distance.y) > params.panningSensitivityThreshold)
state = TouchState::TAP_DOWN_PANNING;
break;
@@ -104,8 +102,8 @@ void InputSourceTouch::handleEventFingerDown(const SDL_TouchFingerEvent & tfinge
}
case TouchState::IDLE:
{
GH.input().setCursorPosition(convertTouchToMouse(tfinger));
lastTapPosition = GH.getCursorPosition();
lastTapPosition = convertTouchToMouse(tfinger);
GH.input().setCursorPosition(lastTapPosition);
GH.events().dispatchGesturePanningStarted(lastTapPosition);
state = TouchState::TAP_DOWN_SHORT;
break;
@@ -155,7 +153,7 @@ void InputSourceTouch::handleEventFingerUp(const SDL_TouchFingerEvent & tfinger)
}
case TouchState::TAP_DOWN_PANNING:
{
GH.events().dispatchGesturePanningEnded();
GH.events().dispatchGesturePanningEnded(lastTapPosition, convertTouchToMouse(tfinger));
state = TouchState::IDLE;
break;
}
@@ -165,7 +163,7 @@ void InputSourceTouch::handleEventFingerUp(const SDL_TouchFingerEvent & tfinger)
state = TouchState::TAP_DOWN_PANNING;
if (SDL_GetNumTouchFingers(tfinger.touchId) == 0)
{
GH.events().dispatchGesturePanningEnded();
GH.events().dispatchGesturePanningEnded(lastTapPosition, convertTouchToMouse(tfinger));
state = TouchState::IDLE;
}
break;
@@ -229,7 +227,7 @@ void InputSourceTouch::emitPanningEvent(const SDL_TouchFingerEvent & tfinger)
{
Point distance(-tfinger.dx * GH.screenDimensions().x, -tfinger.dy * GH.screenDimensions().y);
GH.events().dispatchGesturePanning(distance);
GH.events().dispatchGesturePanning(lastTapPosition, convertTouchToMouse(tfinger), distance);
}
void InputSourceTouch::emitPinchEvent(const SDL_TouchFingerEvent & tfinger)