Этот работает как задумано:
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;
но этот,
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;
.. иногда "теряет его", и если некоторые из "кнопок мыши" (в этом коде) не нажимаются, если они нажимаются слишком быстро.
Во всяком случае, актуальность самого кода, я думаю, мала.
Почему эти фрагменты кода не делают одно и то же?