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__