void Mouse_ButtonReleased(Bit8u button) { switch (button) { #if (MOUSE_BUTTONS >= 1) case 0: mouse.buttons&=~1; Mouse_AddEvent(MOUSE_LEFT_RELEASED); break; #endif #if (MOUSE_BUTTONS >= 2) case 1: mouse.buttons&=~2; Mouse_AddEvent(MOUSE_RIGHT_RELEASED); break; #endif #if (MOUSE_BUTTONS >= 3) case 2: mouse.buttons&=~4; Mouse_AddEvent(MOUSE_MIDDLE_RELEASED); break; #endif default: return; } mouse.times_released[button]++; mouse.last_released_x[button]=POS_X; mouse.last_released_y[button]=POS_Y; }
void Mouse_ButtonPressed(Bit8u button) { switch (button) { #if (MOUSE_BUTTONS >= 1) case 0: mouse.buttons|=1; Mouse_AddEvent(MOUSE_LEFT_PRESSED); break; #endif #if (MOUSE_BUTTONS >= 2) case 1: mouse.buttons|=2; Mouse_AddEvent(MOUSE_RIGHT_PRESSED); break; #endif #if (MOUSE_BUTTONS >= 3) case 2: mouse.buttons|=4; Mouse_AddEvent(MOUSE_MIDDLE_PRESSED); break; #endif default: return; } mouse.times_pressed[button]++; mouse.last_pressed_x[button]=POS_X; mouse.last_pressed_y[button]=POS_Y; }
void Mouse_ButtonReleased(Bit8u button) { switch (button) { case 0: mouse.buttons&=~1; Mouse_AddEvent(MOUSE_LEFT_RELEASED); break; case 1: mouse.buttons&=~2; Mouse_AddEvent(MOUSE_RIGHT_RELEASED); break; case 2: mouse.buttons&=~4; Mouse_AddEvent(MOUSE_MIDDLE_RELEASED); break; } mouse.times_released[button]++; mouse.last_released_x[button]=POS_X; mouse.last_released_y[button]=POS_Y; }
void Mouse_ButtonPressed(Bit8u button) { switch (button) { case 0: mouse.buttons|=1; Mouse_AddEvent(MOUSE_LEFT_PRESSED); break; case 1: mouse.buttons|=2; Mouse_AddEvent(MOUSE_RIGHT_PRESSED); break; case 2: mouse.buttons|=4; Mouse_AddEvent(MOUSE_MIDDLE_PRESSED); break; } mouse.times_pressed[button]++; mouse.last_pressed_x[button]=POS_X; mouse.last_pressed_y[button]=POS_Y; }
void Mouse_CursorMoved(float xrel,float yrel,float x,float y,bool emulate) { float dx = xrel * mouse.pixelPerMickey_x; float dy = yrel * mouse.pixelPerMickey_y; if((fabs(xrel) > 1.0) || (mouse.senv_x < 1.0)) dx *= mouse.senv_x; if((fabs(yrel) > 1.0) || (mouse.senv_y < 1.0)) dy *= mouse.senv_y; if (useps2callback) dy *= 2; mouse.mickey_x += dx; mouse.mickey_y += dy; if (emulate) { mouse.x += dx; mouse.y += dy; } else { if (CurMode->type == M_TEXT) { mouse.x = x*CurMode->swidth; mouse.y = y*CurMode->sheight * 8 / CurMode->cheight; } else if ((mouse.max_x < 2048) || (mouse.max_y < 2048) || (mouse.max_x != mouse.max_y)) { if ((mouse.max_x > 0) && (mouse.max_y > 0)) { mouse.x = x*mouse.max_x; mouse.y = y*mouse.max_y; } else { mouse.x += xrel; mouse.y += yrel; } } else { // Games faking relative movement through absolute coordinates. Quite surprising that this actually works.. mouse.x += xrel; mouse.y += yrel; } } /* ignore constraints if using PS2 mouse callback in the bios */ if (!useps2callback) { if (mouse.x > mouse.max_x) mouse.x = mouse.max_x; if (mouse.x < mouse.min_x) mouse.x = mouse.min_x; if (mouse.y > mouse.max_y) mouse.y = mouse.max_y; if (mouse.y < mouse.min_y) mouse.y = mouse.min_y; } Mouse_AddEvent(MOUSE_HAS_MOVED); DrawCursor(); }