This one works as intended:
Code:
if (clu.raw.butsnum) {
int i;
for (i=0;i<clu.raw.butsnum;i++){
if (clu.raw.buts[i] & RI_MOUSE_BUTTON_1_DOWN)
Com_QueueEvent( 0, SE_KEY, K_MOUSE1, qtrue, 0, NULL );
if (clu.raw.buts[i] & RI_MOUSE_BUTTON_2_DOWN)
Com_QueueEvent( 0, SE_KEY, K_MOUSE2, qtrue, 0, NULL );
if (clu.raw.buts[i] & RI_MOUSE_BUTTON_3_DOWN)
Com_QueueEvent( 0, SE_KEY, K_MOUSE3, qtrue, 0, NULL );
if (clu.raw.buts[i] & RI_MOUSE_BUTTON_4_DOWN)
Com_QueueEvent( 0, SE_KEY, K_MOUSE4, qtrue, 0, NULL );
if (clu.raw.buts[i] & RI_MOUSE_BUTTON_5_DOWN)
Com_QueueEvent( 0, SE_KEY, K_MOUSE5, qtrue, 0, NULL );
if (clu.raw.buts[i] & RI_MOUSE_BUTTON_1_UP)
Com_QueueEvent( 0, SE_KEY, K_MOUSE1, qfalse, 0, NULL );
if (clu.raw.buts[i] & RI_MOUSE_BUTTON_2_UP)
Com_QueueEvent( 0, SE_KEY, K_MOUSE2, qfalse, 0, NULL );
if (clu.raw.buts[i] & RI_MOUSE_BUTTON_3_UP)
Com_QueueEvent( 0, SE_KEY, K_MOUSE3, qfalse, 0, NULL );
if (clu.raw.buts[i] & RI_MOUSE_BUTTON_4_UP)
Com_QueueEvent( 0, SE_KEY, K_MOUSE4, qfalse, 0, NULL );
if (clu.raw.buts[i] & RI_MOUSE_BUTTON_5_UP)
Com_QueueEvent( 0, SE_KEY, K_MOUSE5, qfalse, 0, NULL );
}
clu.raw.butsnum = 0;
}
but this one,
Code:
if (clu.raw.butsnum) {
short int down = qfalse;
int but = 0, i;
for (i = 0; i < clu.raw.butsnum; i++) {
switch( clu.raw.buts[i]) {
case RI_MOUSE_BUTTON_1_DOWN: down = qtrue; but = K_MOUSE1; break;
case RI_MOUSE_BUTTON_2_DOWN: down = qtrue; but = K_MOUSE2; break;
case RI_MOUSE_BUTTON_3_DOWN: down = qtrue; but = K_MOUSE3; break;
case RI_MOUSE_BUTTON_4_DOWN: down = qtrue; but = K_MOUSE4; break;
case RI_MOUSE_BUTTON_5_DOWN: down = qtrue; but = K_MOUSE5; break;
case RI_MOUSE_BUTTON_1_UP: down = qfalse; but = K_MOUSE1; break;
case RI_MOUSE_BUTTON_2_UP: down = qfalse; but = K_MOUSE2; break;
case RI_MOUSE_BUTTON_3_UP: down = qfalse; but = K_MOUSE3; break;
case RI_MOUSE_BUTTON_4_UP: down = qfalse; but = K_MOUSE4; break;
case RI_MOUSE_BUTTON_5_UP: down = qfalse; but = K_MOUSE5; break;
}
Com_QueueEvent( 0, SE_KEY, but, down, 0, NULL );
}
}
clu.raw.butsnum = 0;
..sometimes "loses it" and if some of the "mouse buttons" (in that code) aren't pressed if they are hit too fast.
Anyway, the relevance of the code itself I guess is little.
Why do those pieces of code don't do exactly the same thing?