Fix the mouse for Unreal tormnet 2004, it is working now have not test it to 100%. But hoppfull it is last fix, geting games that need dinput working now with opengl. Modified: trunk/reactos/lib/dinput/mouse.c _____
Modified: trunk/reactos/lib/dinput/mouse.c --- trunk/reactos/lib/dinput/mouse.c 2005-03-12 22:42:38 UTC (rev 13986) +++ trunk/reactos/lib/dinput/mouse.c 2005-03-13 00:13:07 UTC (rev 13987) @@ -733,7 +733,7 @@
- + if (poll_mouse==1) filp=0; if (filp==2) filp=0; if (filp==0) { @@ -865,34 +865,28 @@ int count=0; DWORD count_ent=0; static DWORD time=0; -static int save_x; -static int save_y; -static int save_z; -static int save_b0; -static int save_b1; -static int save_b2; -static int save_b3; -static int save_b4; -static int save_b5; -static int save_b6; -int calc; +static POINT save_point; +static int save_b[5]; +static int b[5]; +static POINT point; +int count_button; #endif
TRACE("(%p)->(dods=%ld,entries=%ld,fl=0x%08lx)\n",This,dodsize,*entries, flags);
#ifdef __REACTOS__ -save_x = This->m_state.lX; -save_y = This->m_state.lY; -save_z = This->m_state.lZ; -save_b0 = This->m_state.rgbButtons[0]; -save_b1 = This->m_state.rgbButtons[1]; -save_b2 = This->m_state.rgbButtons[2]; -save_b3 = This->m_state.rgbButtons[3]; -save_b4 = This->m_state.rgbButtons[4]; -save_b5 = This->m_state.rgbButtons[5]; -save_b6 = This->m_state.rgbButtons[6]; -getmousesvalue(iface); + +if (flags != DIGDD_PEEK) +{ +b[0] = ((GetKeyState(VK_LBUTTON) & 0x80) ? 0xFF : 0x00); +b[1] = ((GetKeyState(VK_RBUTTON) & 0x80) ? 0xFF : 0x00); +b[2] = ((GetKeyState(VK_MBUTTON) & 0x80) ? 0xFF : 0x00); +b[3] = ((GetKeyState(VK_XBUTTON1) & 0x80) ? 0xFF : 0x00); +b[4] = ((GetKeyState(VK_XBUTTON2) & 0x80) ? 0xFF : 0x00); +GetCursorPos( &point ); +} + #endif
// windows does not get any data if @@ -913,103 +907,72 @@ #ifdef __REACTOS__
- FIXME("This is broken in Tribes, need right implant of the buffer!!!!!!!!\n"); + FIXME("This is broken in Tribes ??, need right implant of the buffer!!!!!!!!\n");
if (GetTickCount()-time <50) { return DI_OK; } + time = GetTickCount(); if (*entries == 0) return DIERR_INVALIDPARAM;
- + last_event++; + for (count=0;count<*entries;count++) { - if (save_x != This->m_state.lX) { - dod[count].dwOfs = DIMOFS_X; - dod[count].dwData = This->m_state.lX - This->offset_array[0]; + if (save_point.x != point.x) { + dod[count_ent].dwOfs = DIMOFS_X; + dod[count_ent].dwData = point.x - save_point.x; + dod[count].dwTimeStamp = time +1; dod[count].dwSequence = last_event++; count_ent++; + save_point.x = point.x; }
- if (save_y != This->m_state.lY) { + if (save_point.y != point.y) { dod[count].dwOfs = DIMOFS_Y; - dod[count].dwData = This->m_state.lY; - dod[count].dwTimeStamp = time +1; - dod[count].dwSequence = last_event++; - count_ent++; - } - if (save_z != This->m_state.lZ) { - dod[count].dwOfs = DIMOFS_Z; - dod[count].dwData = This->m_state.lZ; - dod[count].dwTimeStamp = time +1; - dod[count].dwSequence = last_event++; - count_ent++; - } - - if (save_b0 != This->m_state.rgbButtons[0]) { - dod[count].dwOfs = DIMOFS_BUTTON0; - dod[count].dwData = This->m_state.rgbButtons[0]; - dod[count].dwTimeStamp = time +1; - dod[count].dwSequence = last_event++; - count_ent++; - } + dod[count].dwData = point.y - save_point.y;
- if (save_b1 != This->m_state.rgbButtons[1]) { - dod[count].dwOfs = DIMOFS_BUTTON1; - dod[count].dwData = This->m_state.rgbButtons[1]; dod[count].dwTimeStamp = time +1; dod[count].dwSequence = last_event++; count_ent++; + save_point.y = point.y; } + + for (count_button=0;count_button<5;count_button++) + { + if (save_b[count_button] != b[count_button]) { + if (count_button==0) { + dod[count].dwOfs = DIMOFS_BUTTON0; + }
- if (save_b2 != This->m_state.rgbButtons[2]) { - dod[count].dwOfs = DIMOFS_BUTTON2; - dod[count].dwData = This->m_state.rgbButtons[2]; - dod[count].dwTimeStamp = time +1; - dod[count].dwSequence = last_event++; - count_ent++; - } + if (count_button==1) { + dod[count].dwOfs = DIMOFS_BUTTON1; + } + if (count_button==2) { + dod[count].dwOfs = DIMOFS_BUTTON2; + } + if (count_button==3) { + dod[count].dwOfs = DIMOFS_BUTTON3; + } + if (count_button==4) { + dod[count].dwOfs = DIMOFS_BUTTON4; + }
- if (save_b3 != This->m_state.rgbButtons[3]) { - dod[count].dwOfs = DIMOFS_BUTTON3; - dod[count].dwData = This->m_state.rgbButtons[3]; + dod[count].dwData = b[count_button]; dod[count].dwTimeStamp = time +1; dod[count].dwSequence = last_event++; count_ent++; + save_b[count_button] = b[count_button]; } + }
- if (save_b4 != This->m_state.rgbButtons[4]) { - dod[count].dwOfs = DIMOFS_BUTTON4; - dod[count].dwData = This->m_state.rgbButtons[4]; - dod[count].dwTimeStamp = time +1; - dod[count].dwSequence = last_event++; - count_ent++; - } - - if (save_b5 != This->m_state.rgbButtons[5]) { - dod[count].dwOfs = DIMOFS_BUTTON5; - dod[count].dwData = This->m_state.rgbButtons[5]; - dod[count].dwTimeStamp = time +1; - dod[count].dwSequence = last_event++; - count_ent++; - } - - if (save_b6 != This->m_state.rgbButtons[6]) { - dod[count].dwOfs = DIMOFS_BUTTON6; - dod[count].dwData = This->m_state.rgbButtons[6]; - dod[count].dwTimeStamp = time +1; - dod[count].dwSequence = last_event++; - count_ent++; - } - } // end for
*entries = count_ent; - - #endif
#ifndef __REACTOS__