Skip to content

Commit 470c580

Browse files
committed
refactor(input): Replace mouse button state change flags with MBS_None enum
1 parent 5e91796 commit 470c580

File tree

8 files changed

+20
-68
lines changed

8 files changed

+20
-68
lines changed

Generals/Code/GameEngine/Include/GameClient/Mouse.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ enum GameMode CPP_11(: Int);
6262

6363
enum MouseButtonState CPP_11(: Int)
6464
{
65+
MBS_None = -1, // No button event
6566
MBS_Up = 0,
6667
MBS_Down,
6768
MBS_DoubleClick,
@@ -105,17 +106,14 @@ struct MouseIO
105106
user while - is down/toward user */
106107
ICoord2D deltaPos; ///< overall change in mouse pointer this frame
107108

108-
MouseButtonState leftState; // button state: Up, Down, DoubleClick (Which is also down)
109+
MouseButtonState leftState; // button state: None (no event), Up, Down, DoubleClick
109110
Int leftEvent; // Most important event this frame
110-
Bool leftStateChanged; // TRUE if button state changed for a given mouse event
111111

112112
MouseButtonState rightState;
113113
Int rightEvent;
114-
Bool rightStateChanged; // TRUE if button state changed for a given mouse event
115114

116115
MouseButtonState middleState;
117116
Int middleEvent;
118-
Bool middleStateChanged; // TRUE if button state changed for a given mouse event
119117
};
120118

121119
class CursorInfo

Generals/Code/GameEngine/Source/GameClient/Input/Mouse.cpp

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ void Mouse::processMouseEvent( Int index )
218218
m_currMouse.wheelPos += m_mouseEvents[ index ].wheelPos;
219219

220220
// Check Left Mouse State
221-
if( m_mouseEvents[ index ].leftStateChanged )
221+
if( m_mouseEvents[ index ].leftState != MBS_None )
222222
{
223223
if( m_currMouse.leftState != m_mouseEvents[ index ].leftState )
224224
{
@@ -228,21 +228,18 @@ void Mouse::processMouseEvent( Int index )
228228
// Mouse Down
229229
m_currMouse.leftEvent = GWM_LEFT_DOWN;
230230
m_currMouse.leftState = MBS_Down;
231-
m_currMouse.leftStateChanged = TRUE;
232231
}
233232
else if ( m_mouseEvents[ index ].leftState == MBS_DoubleClick )
234233
{
235234
// Mouse Double Click
236235
m_currMouse.leftEvent = GWM_LEFT_DOUBLE_CLICK;
237236
m_currMouse.leftState = MBS_DoubleClick;
238-
m_currMouse.leftStateChanged = TRUE;
239237
}
240238
else
241239
{
242240
// Mouse Up
243241
m_currMouse.leftEvent = GWM_LEFT_UP;
244242
m_currMouse.leftState = MBS_Up;
245-
m_currMouse.leftStateChanged = TRUE;
246243
}
247244
}
248245
}
@@ -254,7 +251,7 @@ void Mouse::processMouseEvent( Int index )
254251
}
255252

256253
// Check Right Mouse State
257-
if( m_mouseEvents[ index ].rightStateChanged )
254+
if( m_mouseEvents[ index ].rightState != MBS_None )
258255
{
259256
if( m_currMouse.rightState != m_mouseEvents[ index ].rightState )
260257
{
@@ -264,21 +261,18 @@ void Mouse::processMouseEvent( Int index )
264261
// Mouse Down
265262
m_currMouse.rightEvent = GWM_RIGHT_DOWN;
266263
m_currMouse.rightState = MBS_Down;
267-
m_currMouse.rightStateChanged = TRUE;
268264
}
269265
else if( m_mouseEvents[ index ].rightState == MBS_DoubleClick )
270266
{
271267
// Mouse Double Click
272268
m_currMouse.rightEvent = GWM_RIGHT_DOUBLE_CLICK;
273269
m_currMouse.rightState = MBS_DoubleClick;
274-
m_currMouse.rightStateChanged = TRUE;
275270
}
276271
else
277272
{
278273
// Mouse Up
279274
m_currMouse.rightEvent = GWM_RIGHT_UP;
280275
m_currMouse.rightState = MBS_Up;
281-
m_currMouse.rightStateChanged = TRUE;
282276
}
283277
}
284278
}
@@ -290,7 +284,7 @@ void Mouse::processMouseEvent( Int index )
290284
}
291285

292286
// Check Middle Mouse State
293-
if( m_mouseEvents[ index ].middleStateChanged )
287+
if( m_mouseEvents[ index ].middleState != MBS_None )
294288
{
295289
if( m_currMouse.middleState != m_mouseEvents[index].middleState )
296290
{
@@ -299,20 +293,17 @@ void Mouse::processMouseEvent( Int index )
299293
{
300294
m_currMouse.middleEvent = GWM_MIDDLE_DOWN;
301295
m_currMouse.middleState = MBS_Down;
302-
m_currMouse.middleStateChanged = TRUE;
303296
}
304297
else if( m_mouseEvents[index].middleState == MBS_DoubleClick )
305298
{
306299
m_currMouse.middleEvent = GWM_MIDDLE_DOUBLE_CLICK;
307300
m_currMouse.middleState = MBS_DoubleClick;
308-
m_currMouse.middleStateChanged = TRUE;
309301
}
310302
else
311303
{
312304
// Mouse Up
313305
m_currMouse.middleEvent = GWM_MIDDLE_UP;
314306
m_currMouse.middleState = MBS_Up;
315-
m_currMouse.middleStateChanged = TRUE;
316307
}
317308
}
318309
}

Generals/Code/GameEngineDevice/Source/Win32Device/GameClient/Win32DIMouse.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ UnsignedByte DirectInputMouse::getMouseEvent( MouseIO *result, Bool flush )
202202

203203
/* set these to defaults */
204204
result->leftState = result->middleState = result->rightState = FALSE;
205-
result->leftStateChanged = result->middleStateChanged = result->rightStateChanged = FALSE;
205+
result->leftState = result->middleState = result->rightState = MBS_None;
206206
result->pos.x = result->pos.y = result->wheelPos = 0;
207207

208208
if( m_pMouseDevice )
@@ -282,18 +282,15 @@ void DirectInputMouse::mapDirectInputMouse( MouseIO *mouse,
282282
switch( mdat->dwOfs )
283283
{
284284
case DIMOFS_BUTTON0:
285-
mouse->leftState = (( mdat->dwData & 0x0080 ) ? TRUE : FALSE);
286-
mouse->leftStateChanged = TRUE;
285+
mouse->leftState = (( mdat->dwData & 0x0080 ) ? MBS_Down : MBS_Up);
287286
break;
288287

289288
case DIMOFS_BUTTON1:
290-
mouse->rightState = (( mdat->dwData & 0x0080 ) ? TRUE : FALSE);
291-
mouse->rightStateChanged = TRUE;
289+
mouse->rightState = (( mdat->dwData & 0x0080 ) ? MBS_Down : MBS_Up);
292290
break;
293291

294292
case DIMOFS_BUTTON2:
295-
mouse->middleState = (( mdat->dwData & 0x0080 ) ? TRUE : FALSE);
296-
mouse->middleStateChanged = TRUE;
293+
mouse->middleState = (( mdat->dwData & 0x0080 ) ? MBS_Down : MBS_Up);
297294
break;
298295

299296
case DIMOFS_BUTTON3:

Generals/Code/GameEngineDevice/Source/Win32Device/GameClient/Win32Mouse.cpp

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,7 @@ void Win32Mouse::translateEvent( UnsignedInt eventIndex, MouseIO *result )
8787
LPARAM lParam = m_eventBuffer[ eventIndex ].lParam;
8888

8989
// set these to defaults
90-
result->leftState = result->middleState = result->rightState = MBS_Up;
91-
result->leftStateChanged = result->middleStateChanged = result->rightStateChanged = FALSE;
90+
result->leftState = result->middleState = result->rightState = MBS_None;
9291
result->pos.x = result->pos.y = result->wheelPos = 0;
9392

9493
// Time is the same for all events
@@ -102,7 +101,6 @@ void Win32Mouse::translateEvent( UnsignedInt eventIndex, MouseIO *result )
102101
{
103102

104103
result->leftState = MBS_Down;
105-
result->leftStateChanged = TRUE;
106104
result->pos.x = LOWORD( lParam );
107105
result->pos.y = HIWORD( lParam );
108106
break;
@@ -114,7 +112,6 @@ void Win32Mouse::translateEvent( UnsignedInt eventIndex, MouseIO *result )
114112
{
115113

116114
result->leftState = MBS_Up;
117-
result->leftStateChanged = TRUE;
118115
result->pos.x = LOWORD( lParam );
119116
result->pos.y = HIWORD( lParam );
120117
break;
@@ -126,7 +123,6 @@ void Win32Mouse::translateEvent( UnsignedInt eventIndex, MouseIO *result )
126123
{
127124

128125
result->leftState = MBS_DoubleClick;
129-
result->leftStateChanged = TRUE;
130126
result->pos.x = LOWORD( lParam );
131127
result->pos.y = HIWORD( lParam );
132128
break;
@@ -138,7 +134,6 @@ void Win32Mouse::translateEvent( UnsignedInt eventIndex, MouseIO *result )
138134
{
139135

140136
result->middleState = MBS_Down;
141-
result->middleStateChanged = TRUE;
142137
result->pos.x = LOWORD( lParam );
143138
result->pos.y = HIWORD( lParam );
144139
break;
@@ -150,7 +145,6 @@ void Win32Mouse::translateEvent( UnsignedInt eventIndex, MouseIO *result )
150145
{
151146

152147
result->middleState = MBS_Up;
153-
result->middleStateChanged = TRUE;
154148
result->pos.x = LOWORD( lParam );
155149
result->pos.y = HIWORD( lParam );
156150
break;
@@ -162,7 +156,6 @@ void Win32Mouse::translateEvent( UnsignedInt eventIndex, MouseIO *result )
162156
{
163157

164158
result->middleState = MBS_DoubleClick;
165-
result->middleStateChanged = TRUE;
166159
result->pos.x = LOWORD( lParam );
167160
result->pos.y = HIWORD( lParam );
168161
break;
@@ -174,7 +167,6 @@ void Win32Mouse::translateEvent( UnsignedInt eventIndex, MouseIO *result )
174167
{
175168

176169
result->rightState = MBS_Down;
177-
result->rightStateChanged = TRUE;
178170
result->pos.x = LOWORD( lParam );
179171
result->pos.y = HIWORD( lParam );
180172
break;
@@ -186,7 +178,6 @@ void Win32Mouse::translateEvent( UnsignedInt eventIndex, MouseIO *result )
186178
{
187179

188180
result->rightState = MBS_Up;
189-
result->rightStateChanged = TRUE;
190181
result->pos.x = LOWORD( lParam );
191182
result->pos.y = HIWORD( lParam );
192183
break;
@@ -198,7 +189,6 @@ void Win32Mouse::translateEvent( UnsignedInt eventIndex, MouseIO *result )
198189
{
199190

200191
result->rightState = MBS_DoubleClick;
201-
result->rightStateChanged = TRUE;
202192
result->pos.x = LOWORD( lParam );
203193
result->pos.y = HIWORD( lParam );
204194
break;

GeneralsMD/Code/GameEngine/Include/GameClient/Mouse.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ enum GameMode CPP_11(: Int);
6262

6363
enum MouseButtonState CPP_11(: Int)
6464
{
65+
MBS_None = -1, // No button event
6566
MBS_Up = 0,
6667
MBS_Down,
6768
MBS_DoubleClick,
@@ -105,17 +106,14 @@ struct MouseIO
105106
user while - is down/toward user */
106107
ICoord2D deltaPos; ///< overall change in mouse pointer this frame
107108

108-
MouseButtonState leftState; // button state: Up, Down, DoubleClick (Which is also down)
109+
MouseButtonState leftState; // button state: None (no event), Up, Down, DoubleClick
109110
Int leftEvent; // Most important event this frame
110-
Bool leftStateChanged; // TRUE if button state changed for a given mouse event
111111

112112
MouseButtonState rightState;
113113
Int rightEvent;
114-
Bool rightStateChanged; // TRUE if button state changed for a given mouse event
115114

116115
MouseButtonState middleState;
117116
Int middleEvent;
118-
Bool middleStateChanged; // TRUE if button state changed for a given mouse event
119117
};
120118

121119
class CursorInfo

GeneralsMD/Code/GameEngine/Source/GameClient/Input/Mouse.cpp

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ void Mouse::processMouseEvent( Int index )
218218
m_currMouse.wheelPos += m_mouseEvents[ index ].wheelPos;
219219

220220
// Check Left Mouse State
221-
if( m_mouseEvents[ index ].leftStateChanged )
221+
if( m_mouseEvents[ index ].leftState != MBS_None )
222222
{
223223
if( m_currMouse.leftState != m_mouseEvents[ index ].leftState )
224224
{
@@ -228,21 +228,18 @@ void Mouse::processMouseEvent( Int index )
228228
// Mouse Down
229229
m_currMouse.leftEvent = GWM_LEFT_DOWN;
230230
m_currMouse.leftState = MBS_Down;
231-
m_currMouse.leftStateChanged = TRUE;
232231
}
233232
else if ( m_mouseEvents[ index ].leftState == MBS_DoubleClick )
234233
{
235234
// Mouse Double Click
236235
m_currMouse.leftEvent = GWM_LEFT_DOUBLE_CLICK;
237236
m_currMouse.leftState = MBS_DoubleClick;
238-
m_currMouse.leftStateChanged = TRUE;
239237
}
240238
else
241239
{
242240
// Mouse Up
243241
m_currMouse.leftEvent = GWM_LEFT_UP;
244242
m_currMouse.leftState = MBS_Up;
245-
m_currMouse.leftStateChanged = TRUE;
246243
}
247244
}
248245
}
@@ -254,7 +251,7 @@ void Mouse::processMouseEvent( Int index )
254251
}
255252

256253
// Check Right Mouse State
257-
if( m_mouseEvents[ index ].rightStateChanged )
254+
if( m_mouseEvents[ index ].rightState != MBS_None )
258255
{
259256
if( m_currMouse.rightState != m_mouseEvents[ index ].rightState )
260257
{
@@ -264,21 +261,18 @@ void Mouse::processMouseEvent( Int index )
264261
// Mouse Down
265262
m_currMouse.rightEvent = GWM_RIGHT_DOWN;
266263
m_currMouse.rightState = MBS_Down;
267-
m_currMouse.rightStateChanged = TRUE;
268264
}
269265
else if( m_mouseEvents[ index ].rightState == MBS_DoubleClick )
270266
{
271267
// Mouse Double Click
272268
m_currMouse.rightEvent = GWM_RIGHT_DOUBLE_CLICK;
273269
m_currMouse.rightState = MBS_DoubleClick;
274-
m_currMouse.rightStateChanged = TRUE;
275270
}
276271
else
277272
{
278273
// Mouse Up
279274
m_currMouse.rightEvent = GWM_RIGHT_UP;
280275
m_currMouse.rightState = MBS_Up;
281-
m_currMouse.rightStateChanged = TRUE;
282276
}
283277
}
284278
}
@@ -290,7 +284,7 @@ void Mouse::processMouseEvent( Int index )
290284
}
291285

292286
// Check Middle Mouse State
293-
if( m_mouseEvents[ index ].middleStateChanged )
287+
if( m_mouseEvents[ index ].middleState != MBS_None )
294288
{
295289
if( m_currMouse.middleState != m_mouseEvents[index].middleState )
296290
{
@@ -299,20 +293,17 @@ void Mouse::processMouseEvent( Int index )
299293
{
300294
m_currMouse.middleEvent = GWM_MIDDLE_DOWN;
301295
m_currMouse.middleState = MBS_Down;
302-
m_currMouse.middleStateChanged = TRUE;
303296
}
304297
else if( m_mouseEvents[index].middleState == MBS_DoubleClick )
305298
{
306299
m_currMouse.middleEvent = GWM_MIDDLE_DOUBLE_CLICK;
307300
m_currMouse.middleState = MBS_DoubleClick;
308-
m_currMouse.middleStateChanged = TRUE;
309301
}
310302
else
311303
{
312304
// Mouse Up
313305
m_currMouse.middleEvent = GWM_MIDDLE_UP;
314306
m_currMouse.middleState = MBS_Up;
315-
m_currMouse.middleStateChanged = TRUE;
316307
}
317308
}
318309
}

GeneralsMD/Code/GameEngineDevice/Source/Win32Device/GameClient/Win32DIMouse.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ UnsignedByte DirectInputMouse::getMouseEvent( MouseIO *result, Bool flush )
202202

203203
/* set these to defaults */
204204
result->leftState = result->middleState = result->rightState = FALSE;
205-
result->leftStateChanged = result->middleStateChanged = result->rightStateChanged = FALSE;
205+
result->leftState = result->middleState = result->rightState = MBS_None;
206206
result->pos.x = result->pos.y = result->wheelPos = 0;
207207

208208
if( m_pMouseDevice )
@@ -282,18 +282,15 @@ void DirectInputMouse::mapDirectInputMouse( MouseIO *mouse,
282282
switch( mdat->dwOfs )
283283
{
284284
case DIMOFS_BUTTON0:
285-
mouse->leftState = (( mdat->dwData & 0x0080 ) ? TRUE : FALSE);
286-
mouse->leftStateChanged = TRUE;
285+
mouse->leftState = (( mdat->dwData & 0x0080 ) ? MBS_Down : MBS_Up);
287286
break;
288287

289288
case DIMOFS_BUTTON1:
290-
mouse->rightState = (( mdat->dwData & 0x0080 ) ? TRUE : FALSE);
291-
mouse->rightStateChanged = TRUE;
289+
mouse->rightState = (( mdat->dwData & 0x0080 ) ? MBS_Down : MBS_Up);
292290
break;
293291

294292
case DIMOFS_BUTTON2:
295-
mouse->middleState = (( mdat->dwData & 0x0080 ) ? TRUE : FALSE);
296-
mouse->middleStateChanged = TRUE;
293+
mouse->middleState = (( mdat->dwData & 0x0080 ) ? MBS_Down : MBS_Up);
297294
break;
298295

299296
case DIMOFS_BUTTON3:

0 commit comments

Comments
 (0)