@@ -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-
9276void 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
150121void 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
161130void 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
172139void Controller::connectedGamepadsChanged ()
0 commit comments