fix: drag delay timer too big bug

This commit is contained in:
Barry 2021-06-28 09:13:39 +08:00
commit b75edaae04
2 changed files with 13 additions and 12 deletions

View file

@ -246,9 +246,9 @@ int InputConvertGame::getTouchID(int key)
// -------- steer wheel event -------- // -------- steer wheel event --------
void InputConvertGame::getDelayQueue(const QPointF& start, const QPointF& end, void InputConvertGame::getDelayQueue(const QPointF& start, const QPointF& end,
const double& distanceStep, const double& posStepconst, const double& timerStep, const double& distanceStep, const double& posStepconst,
QQueue<QPointF>& queuePos, QQueue<double>& queueTimer) { quint32 lowestTimer, quint32 highestTimer,
double timerBase = 5.0f; // ms QQueue<QPointF>& queuePos, QQueue<quint32>& queueTimer) {
double x1 = start.x(); double x1 = start.x();
double y1 = start.y(); double y1 = start.y();
double x2 = end.x(); double x2 = end.x();
@ -262,11 +262,11 @@ void InputConvertGame::getDelayQueue(const QPointF& start, const QPointF& end,
dy/=e; dy/=e;
QQueue<QPointF> queue; QQueue<QPointF> queue;
QQueue<double> queue2; QQueue<quint32> queue2;
for(int i=1;i<=e;i++) { for(int i=1;i<=e;i++) {
QPointF pos(x1+(QRandomGenerator::global()->bounded(posStepconst*2)-posStepconst), y1+(QRandomGenerator::global()->bounded(posStepconst*2)-posStepconst)); QPointF pos(x1+(QRandomGenerator::global()->bounded(posStepconst*2)-posStepconst), y1+(QRandomGenerator::global()->bounded(posStepconst*2)-posStepconst));
queue.enqueue(pos); queue.enqueue(pos);
queue2.enqueue(QRandomGenerator::global()->bounded(timerStep*2)-timerStep + timerBase); queue2.enqueue(QRandomGenerator::global()->bounded(lowestTimer, highestTimer));
x1+=dx; x1+=dx;
y1+=dy; y1+=dy;
} }
@ -355,12 +355,12 @@ void InputConvertGame::processSteerWheel(const KeyMap::KeyMapNode &node, const Q
sendTouchDownEvent(id, node.data.steerWheel.centerPos); sendTouchDownEvent(id, node.data.steerWheel.centerPos);
getDelayQueue(node.data.steerWheel.centerPos, node.data.steerWheel.centerPos+offset, getDelayQueue(node.data.steerWheel.centerPos, node.data.steerWheel.centerPos+offset,
0.01f, 0.002f, 3.0f, 0.01f, 0.002f, 2, 8,
m_ctrlSteerWheel.delayData.queuePos, m_ctrlSteerWheel.delayData.queuePos,
m_ctrlSteerWheel.delayData.queueTimer); m_ctrlSteerWheel.delayData.queueTimer);
} else { } else {
getDelayQueue(m_ctrlSteerWheel.delayData.currentPos, node.data.steerWheel.centerPos+offset, getDelayQueue(m_ctrlSteerWheel.delayData.currentPos, node.data.steerWheel.centerPos+offset,
0.01f, 0.002f, 3.0f, 0.01f, 0.002f, 2, 8,
m_ctrlSteerWheel.delayData.queuePos, m_ctrlSteerWheel.delayData.queuePos,
m_ctrlSteerWheel.delayData.queueTimer); m_ctrlSteerWheel.delayData.queueTimer);
} }
@ -477,7 +477,7 @@ void InputConvertGame::processKeyDrag(const QPointF &startPos, QPointF endPos, c
m_dragDelayData.queuePos.clear(); m_dragDelayData.queuePos.clear();
m_dragDelayData.queueTimer.clear(); m_dragDelayData.queueTimer.clear();
getDelayQueue(startPos, endPos, getDelayQueue(startPos, endPos,
0.01f, 0.002f, 2.0f, 0.01f, 0.002f, 0, 2,
m_dragDelayData.queuePos, m_dragDelayData.queuePos,
m_dragDelayData.queueTimer); m_dragDelayData.queueTimer);
m_dragDelayData.timer->start(); m_dragDelayData.timer->start();

View file

@ -62,8 +62,9 @@ protected:
void hideMouseCursor(bool hide); void hideMouseCursor(bool hide);
void getDelayQueue(const QPointF& start, const QPointF& end, void getDelayQueue(const QPointF& start, const QPointF& end,
const double& distanceStep, const double& posStepconst, const double& timerStep, const double& distanceStep, const double& posStepconst,
QQueue<QPointF>& queuePos, QQueue<double>& queueTimer); quint32 lowestTimer, quint32 highestTimer,
QQueue<QPointF>& queuePos, QQueue<quint32>& queueTimer);
protected: protected:
void timerEvent(QTimerEvent *event); void timerEvent(QTimerEvent *event);
@ -97,7 +98,7 @@ private:
QPointF currentPos; QPointF currentPos;
QTimer* timer = nullptr; QTimer* timer = nullptr;
QQueue<QPointF> queuePos; QQueue<QPointF> queuePos;
QQueue<double> queueTimer; QQueue<quint32> queueTimer;
int pressedNum = 0; int pressedNum = 0;
} delayData; } delayData;
} m_ctrlSteerWheel; } m_ctrlSteerWheel;
@ -117,7 +118,7 @@ private:
QPointF currentPos; QPointF currentPos;
QTimer* timer = nullptr; QTimer* timer = nullptr;
QQueue<QPointF> queuePos; QQueue<QPointF> queuePos;
QQueue<double> queueTimer; QQueue<quint32> queueTimer;
int pressKey = 0; int pressKey = 0;
} m_dragDelayData; } m_dragDelayData;
}; };