Skip to content

Commit ef40dcb

Browse files
committed
Test
1 parent 340f4e0 commit ef40dcb

2 files changed

Lines changed: 36 additions & 71 deletions

File tree

src/core/controller.cpp

Lines changed: 34 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -64,109 +64,76 @@ void Controller::disconnectGamepad()
6464
{
6565
if (m_currentGamepad)
6666
{
67-
toggleDpad(false);
67+
disconnect(m_currentGamepad, &QGamepad::axisLeftYChanged, this, &Controller::controllerYAxisChanged);
68+
disconnect(m_currentGamepad, &QGamepad::axisLeftXChanged, this, &Controller::controllerXAxisChanged);
6869
disconnect(m_currentGamepad, &QGamepad::buttonBChanged, this, &Controller::controllerButtonBChanged);
6970
disconnect(m_currentGamepad, &QGamepad::buttonAChanged, this, &Controller::controllerButtonAChanged);
7071
m_currentGamepad->deleteLater();
7172
m_currentGamepad = nullptr;
7273
}
7374
}
7475

75-
void Controller::toggleDpad(bool isOn)
76-
{
77-
if (isOn)
78-
{
79-
connect(m_currentGamepad, &QGamepad::buttonLeftChanged, this, &Controller::controllerButtonLeftChanged);
80-
connect(m_currentGamepad, &QGamepad::buttonRightChanged, this, &Controller::controllerButtonRightChanged);
81-
connect(m_currentGamepad, &QGamepad::buttonUpChanged, this, &Controller::controllerButtonUpChanged);
82-
connect(m_currentGamepad, &QGamepad::buttonDownChanged, this, &Controller::controllerButtonDownChanged);
83-
return;
84-
}
85-
86-
disconnect(m_currentGamepad, &QGamepad::buttonUpChanged, this, &Controller::controllerButtonUpChanged);
87-
disconnect(m_currentGamepad, &QGamepad::buttonDownChanged, this, &Controller::controllerButtonDownChanged);
88-
disconnect(m_currentGamepad, &QGamepad::buttonBChanged, this, &Controller::controllerButtonBChanged);
89-
disconnect(m_currentGamepad, &QGamepad::buttonAChanged, this, &Controller::controllerButtonAChanged);
90-
}
91-
9276
void Controller::connectGamepad(int id)
9377
{
9478
disconnectGamepad();
9579
m_currentGamepad = new QGamepad(id, this);
9680

97-
toggleDpad(true);
81+
connect(m_currentGamepad, &QGamepad::axisLeftYChanged, this, &Controller::controllerYAxisChanged);
82+
connect(m_currentGamepad, &QGamepad::axisLeftXChanged, this, &Controller::controllerXAxisChanged);
9883
connect(m_currentGamepad, &QGamepad::buttonBChanged, this, &Controller::controllerButtonBChanged);
9984
connect(m_currentGamepad, &QGamepad::buttonAChanged, this, &Controller::controllerButtonAChanged);
10085
}
10186

102-
void Controller::controllerButtonUpChanged(bool value)
103-
{
104-
if (!value || m_dpadDebounceTimer->isActive())
105-
{
106-
return;
107-
}
108-
109-
toggleDpad(false);
110-
m_dpadDebounceTimer->start();
111-
emit triggerUpAction();
112-
}
113-
114-
void Controller::controllerButtonDownChanged(bool value)
115-
{
116-
if (!value || m_dpadDebounceTimer->isActive())
117-
{
118-
return;
119-
}
120-
121-
toggleDpad(false);
122-
m_dpadDebounceTimer->start();
123-
emit triggerDownAction();
124-
}
125-
126-
void Controller::controllerButtonLeftChanged(bool value)
87+
void Controller::controllerYAxisChanged(double value)
12788
{
128-
if (!value || m_dpadDebounceTimer->isActive())
89+
if (!m_dpadDebounceTimer->isActive())
12990
{
130-
return;
91+
if (value > 0)
92+
{
93+
m_dpadDebounceTimer->start();
94+
emit triggerDownAction();
95+
}
96+
else if (value < 0)
97+
{
98+
m_dpadDebounceTimer->start();
99+
emit triggerUpAction();
100+
}
131101
}
132-
133-
toggleDpad(false);
134-
m_dpadDebounceTimer->start();
135-
emit triggerLeftAction();
136102
}
137103

138-
void Controller::controllerButtonRightChanged(bool value)
104+
void Controller::controllerXAxisChanged(double value)
139105
{
140-
if (!value || m_dpadDebounceTimer->isActive())
106+
if (!m_dpadDebounceTimer->isActive())
141107
{
142-
return;
108+
if (value > 0)
109+
{
110+
m_dpadDebounceTimer->start();
111+
emit triggerRightAction();
112+
}
113+
else if (value < 0)
114+
{
115+
m_dpadDebounceTimer->start();
116+
emit triggerLeftAction();
117+
}
143118
}
144-
145-
toggleDpad(false);
146-
m_dpadDebounceTimer->start();
147-
emit triggerRightAction();
148119
}
149120

150121
void Controller::controllerButtonAChanged(bool value)
151122
{
152-
if (!value || m_faceBtnDebounceTimer->isActive())
123+
if (value && !m_faceBtnDebounceTimer->isActive())
153124
{
154-
return;
125+
m_faceBtnDebounceTimer->start();
126+
emit triggerConfirmAction();
155127
}
156-
157-
m_faceBtnDebounceTimer->start();
158-
emit triggerConfirmAction();
159128
}
160129

161130
void Controller::controllerButtonBChanged(bool value)
162131
{
163-
if (!value || m_faceBtnDebounceTimer->isActive())
132+
if (value && !m_faceBtnDebounceTimer->isActive())
164133
{
165-
return;
134+
m_faceBtnDebounceTimer->start();
135+
emit triggerBackAction();
166136
}
167-
168-
m_faceBtnDebounceTimer->start();
169-
emit triggerBackAction();
170137
}
171138

172139
void Controller::connectedGamepadsChanged()

src/core/controller.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,8 @@ public slots:
3232

3333
private slots:
3434
void connectedGamepadsChanged();
35-
void controllerButtonUpChanged(bool value);
36-
void controllerButtonDownChanged(bool value);
37-
void controllerButtonLeftChanged(bool value);
38-
void controllerButtonRightChanged(bool value);
35+
void controllerYAxisChanged(double value);
36+
void controllerXAxisChanged(double value);
3937
void controllerButtonAChanged(bool value);
4038
void controllerButtonBChanged(bool value);
4139

0 commit comments

Comments
 (0)