21 static struct mouseinfo {
22 struct mousebutton buttons[MOUSE_MAX_BUTTONS];
23 //added on 10/17/98 by Hans de Goede for mouse functionality
28 //end this section addition - Hans
31 //added on 10/17/98 by Hans de Goede for mouse functionality
32 void d_mouse_init(void)
34 memset(&Mouse,0,sizeof(Mouse));
37 //added/changed on 10/17/98 by Hans de Goede for mouse functionality
38 //void mouse_handler(SDL_MouseButtonEvent *mbe)
39 void mouse_button_handler(SDL_MouseButtonEvent *mbe)
41 // to bad, SDL buttons use a different mapping as descent expects,
42 // this is atleast true and tested for the first three buttons
43 int button_remap[11] = {
56 int button = button_remap[mbe->button - 1]; // -1 since SDL seems to start counting at 1
58 if (mbe->state == SDL_PRESSED) {
59 // Mouse.buttons[mbe->button].pressed = 1;
60 // Mouse.buttons[mbe->button].time_went_down = timer_get_fixed_seconds();
61 // Mouse.buttons[mbe->button].num_downs++;
62 Mouse.buttons[button].pressed = 1;
63 Mouse.buttons[button].time_went_down = timer_get_fixed_seconds();
64 Mouse.buttons[button].num_downs++;
66 // Mouse.buttons[mbe->button].pressed = 0;
67 // Mouse.buttons[mbe->button].time_held_down += timer_get_fixed_seconds() - Mouse.buttons[mbe->button].time_went_down;
68 // Mouse.buttons[mbe->button].num_ups++;
69 Mouse.buttons[button].pressed = 0;
70 Mouse.buttons[button].time_held_down += timer_get_fixed_seconds() - Mouse.buttons[mbe->button].time_went_down;
71 Mouse.buttons[button].num_ups++;
72 //end this section addition/change - Hans
76 //added on 10/17/98 by Hans de Goede for mouse functionality
77 void mouse_motion_handler(SDL_MouseMotionEvent *mme)
79 Mouse.delta_x += mme->xrel;
80 Mouse.delta_y += mme->yrel;
83 if (Mouse.x > Mouse.max_x) Mouse.x = Mouse.max_x;
84 else if (Mouse.x < Mouse.min_x) Mouse.x = Mouse.min_x;
85 if (Mouse.y > Mouse.max_y) Mouse.y = Mouse.max_y;
86 else if (Mouse.y < Mouse.min_y) Mouse.y = Mouse.min_y;
88 //end this section addition - Hans
91 int mouse_set_limits( int x1, int y1, int x2, int y2 )
93 //added on 10/17/98 by Hans de Goede for mouse functionality
94 //-killed- // Shrug...
95 //-killed- event_poll();
100 //end this section addition - Hans
104 void mouse_flush() // clears all mice events...
111 current_time = timer_get_fixed_seconds();
112 for (i=0; i<MOUSE_MAX_BUTTONS; i++)
114 Mouse.buttons[i].pressed=0;
115 Mouse.buttons[i].time_went_down=current_time;
116 Mouse.buttons[i].time_held_down=0;
117 Mouse.buttons[i].num_ups=0;
118 Mouse.buttons[i].num_downs=0;
120 //added on 10/17/98 by Hans de Goede for mouse functionality
125 //end this section addition - Hans
128 //========================================================================
129 void mouse_get_pos( int *x, int *y)
131 //added/changed on 10/17/98 by Hans de Goede for mouse functionality
132 //-killed- Uint16 lx,ly;
134 //-killed- SDL_GetMouseState(&lx,&ly);
135 //-killed- *x=(int)lx;
136 //-killed- *y=(int)ly;
139 //end this section change - Hans
142 void mouse_get_delta( int *dx, int *dy )
144 //added/changed on 10/17/98 by Hans de Goede for mouse functionality
145 //-killed- static int lastx, lasty;
149 //-killed- mouse_get_pos(&x,&y);
150 //-killed- *dx = x - lastx;
151 //-killed- *dy = y - lasty;
152 //-killed- lastx = x;
153 //-killed- lasty = y;
158 //end this section change - Hans
169 for (i=0; i<MOUSE_MAX_BUTTONS; i++ )
171 if (Mouse.buttons[i].pressed)
178 void mouse_set_pos( int x, int y)
181 //added/changed on 10/17/98 by Hans de Goede for mouse functionality
182 //-killed- SDL_WarpMouse(x,y);
185 if (Mouse.x > Mouse.max_x) Mouse.x = Mouse.max_x;
186 else if (Mouse.x < Mouse.min_x) Mouse.x = Mouse.min_x;
187 if (Mouse.y > Mouse.max_y) Mouse.y = Mouse.max_y;
188 else if (Mouse.y < Mouse.min_y) Mouse.y = Mouse.min_y;
189 //end this section change - Hans
192 void mouse_get_cyberman_pos( int *x, int *y )
198 // Returns how long this button has been down since last call.
199 fix mouse_button_down_time(int button)
205 if (!Mouse.buttons[button].pressed) {
206 time_down = Mouse.buttons[button].time_held_down;
207 Mouse.buttons[button].time_held_down = 0;
209 time = timer_get_fixed_seconds();
210 time_down = time - Mouse.buttons[button].time_held_down;
211 Mouse.buttons[button].time_held_down = time;
216 // Returns how many times this button has went down since last call
217 int mouse_button_down_count(int button)
223 count = Mouse.buttons[button].num_downs;
224 Mouse.buttons[button].num_downs = 0;
229 // Returns 1 if this button is currently down
230 int mouse_button_state(int button)
233 return Mouse.buttons[button].pressed;