19 static struct mouseinfo {
20 struct mousebutton buttons[MOUSE_MAX_BUTTONS];
21 //added on 10/17/98 by Hans de Goede for mouse functionality
26 //end this section addition - Hans
29 //added on 10/17/98 by Hans de Goede for mouse functionality
30 void d_mouse_init(void)
32 memset(&Mouse,0,sizeof(Mouse));
35 //added/changed on 10/17/98 by Hans de Goede for mouse functionality
36 //void mouse_handler(SDL_MouseButtonEvent *mbe)
37 void mouse_button_handler(SDL_MouseButtonEvent *mbe)
39 // to bad, SDL buttons use a different mapping as descent expects,
40 // this is atleast true and tested for the first three buttons
41 int button_remap[11] = {
54 int button = button_remap[mbe->button - 1]; // -1 since SDL seems to start counting at 1
56 if (mbe->state == SDL_PRESSED) {
57 // Mouse.buttons[mbe->button].pressed = 1;
58 // Mouse.buttons[mbe->button].time_went_down = timer_get_fixed_seconds();
59 // Mouse.buttons[mbe->button].num_downs++;
60 Mouse.buttons[button].pressed = 1;
61 Mouse.buttons[button].time_went_down = timer_get_fixed_seconds();
62 Mouse.buttons[button].num_downs++;
64 // Mouse.buttons[mbe->button].pressed = 0;
65 // Mouse.buttons[mbe->button].time_held_down += timer_get_fixed_seconds() - Mouse.buttons[mbe->button].time_went_down;
66 // Mouse.buttons[mbe->button].num_ups++;
67 Mouse.buttons[button].pressed = 0;
68 Mouse.buttons[button].time_held_down += timer_get_fixed_seconds() - Mouse.buttons[mbe->button].time_went_down;
69 Mouse.buttons[button].num_ups++;
70 //end this section addition/change - Hans
74 //added on 10/17/98 by Hans de Goede for mouse functionality
75 void mouse_motion_handler(SDL_MouseMotionEvent *mme)
77 Mouse.delta_x += mme->xrel;
78 Mouse.delta_y += mme->yrel;
81 if (Mouse.x > Mouse.max_x) Mouse.x = Mouse.max_x;
82 else if (Mouse.x < Mouse.min_x) Mouse.x = Mouse.min_x;
83 if (Mouse.y > Mouse.max_y) Mouse.y = Mouse.max_y;
84 else if (Mouse.y < Mouse.min_y) Mouse.y = Mouse.min_y;
86 //end this section addition - Hans
89 int mouse_set_limits( int x1, int y1, int x2, int y2 )
91 //added on 10/17/98 by Hans de Goede for mouse functionality
92 //-killed- // Shrug...
93 //-killed- event_poll();
98 //end this section addition - Hans
102 void mouse_flush() // clears all mice events...
109 current_time = timer_get_fixed_seconds();
110 for (i=0; i<MOUSE_MAX_BUTTONS; i++)
112 Mouse.buttons[i].pressed=0;
113 Mouse.buttons[i].time_went_down=current_time;
114 Mouse.buttons[i].time_held_down=0;
115 Mouse.buttons[i].num_ups=0;
116 Mouse.buttons[i].num_downs=0;
118 //added on 10/17/98 by Hans de Goede for mouse functionality
123 //end this section addition - Hans
126 //========================================================================
127 void mouse_get_pos( int *x, int *y)
129 //added/changed on 10/17/98 by Hans de Goede for mouse functionality
130 //-killed- Uint16 lx,ly;
132 //-killed- SDL_GetMouseState(&lx,&ly);
133 //-killed- *x=(int)lx;
134 //-killed- *y=(int)ly;
137 //end this section change - Hans
140 void mouse_get_delta( int *dx, int *dy )
142 //added/changed on 10/17/98 by Hans de Goede for mouse functionality
143 //-killed- static int lastx, lasty;
147 //-killed- mouse_get_pos(&x,&y);
148 //-killed- *dx = x - lastx;
149 //-killed- *dy = y - lasty;
150 //-killed- lastx = x;
151 //-killed- lasty = y;
156 //end this section change - Hans
167 for (i=0; i<MOUSE_MAX_BUTTONS; i++ )
169 if (Mouse.buttons[i].pressed)
176 void mouse_set_pos( int x, int y)
179 //added/changed on 10/17/98 by Hans de Goede for mouse functionality
180 //-killed- SDL_WarpMouse(x,y);
183 if (Mouse.x > Mouse.max_x) Mouse.x = Mouse.max_x;
184 else if (Mouse.x < Mouse.min_x) Mouse.x = Mouse.min_x;
185 if (Mouse.y > Mouse.max_y) Mouse.y = Mouse.max_y;
186 else if (Mouse.y < Mouse.min_y) Mouse.y = Mouse.min_y;
187 //end this section change - Hans
190 void mouse_get_cyberman_pos( int *x, int *y )
196 // Returns how long this button has been down since last call.
197 fix mouse_button_down_time(int button)
203 if (!Mouse.buttons[button].pressed) {
204 time_down = Mouse.buttons[button].time_held_down;
205 Mouse.buttons[button].time_held_down = 0;
207 time = timer_get_fixed_seconds();
208 time_down = time - Mouse.buttons[button].time_held_down;
209 Mouse.buttons[button].time_held_down = time;
214 // Returns how many times this button has went down since last call
215 int mouse_button_down_count(int button)
221 count = Mouse.buttons[button].num_downs;
222 Mouse.buttons[button].num_downs = 0;
227 // Returns 1 if this button is currently down
228 int mouse_button_state(int button)
231 return Mouse.buttons[button].pressed;