13 #define MOUSE_MAX_BUTTONS 8
23 static struct mouseinfo {
24 struct mousebutton buttons[MOUSE_MAX_BUTTONS];
25 //added on 10/17/98 by Hans de Goede for mouse functionality
30 //end this section addition - Hans
33 //added on 10/17/98 by Hans de Goede for mouse functionality
34 void d_mouse_init(void)
36 memset(&Mouse,0,sizeof(Mouse));
39 //added/changed on 10/17/98 by Hans de Goede for mouse functionality
40 //void mouse_handler(SDL_MouseButtonEvent *mbe)
41 void mouse_button_handler(SDL_MouseButtonEvent *mbe)
43 // to bad, SDL buttons use a different mapping as descent expects,
44 // this is atleast true and tested for the first three buttons
45 int button_remap[11] = {
58 int button = button_remap[mbe->button - 1]; // -1 since SDL seems to start counting at 1
60 if (mbe->state == SDL_PRESSED) {
61 // Mouse.buttons[mbe->button].pressed = 1;
62 // Mouse.buttons[mbe->button].time_went_down = timer_get_fixed_seconds();
63 // Mouse.buttons[mbe->button].num_downs++;
64 Mouse.buttons[button].pressed = 1;
65 Mouse.buttons[button].time_went_down = timer_get_fixed_seconds();
66 Mouse.buttons[button].num_downs++;
68 // Mouse.buttons[mbe->button].pressed = 0;
69 // Mouse.buttons[mbe->button].time_held_down += timer_get_fixed_seconds() - Mouse.buttons[mbe->button].time_went_down;
70 // Mouse.buttons[mbe->button].num_ups++;
71 Mouse.buttons[button].pressed = 0;
72 Mouse.buttons[button].time_held_down += timer_get_fixed_seconds() - Mouse.buttons[mbe->button].time_went_down;
73 Mouse.buttons[button].num_ups++;
74 //end this section addition/change - Hans
78 //added on 10/17/98 by Hans de Goede for mouse functionality
79 void mouse_motion_handler(SDL_MouseMotionEvent *mme)
81 Mouse.delta_x += mme->xrel;
82 Mouse.delta_y += mme->yrel;
85 if (Mouse.x > Mouse.max_x) Mouse.x = Mouse.max_x;
86 else if (Mouse.x < Mouse.min_x) Mouse.x = Mouse.min_x;
87 if (Mouse.y > Mouse.max_y) Mouse.y = Mouse.max_y;
88 else if (Mouse.y < Mouse.min_y) Mouse.y = Mouse.min_y;
90 //end this section addition - Hans
93 mouse_set_limits( int x1, int y1, int x2, int y2 )
95 //added on 10/17/98 by Hans de Goede for mouse functionality
96 //-killed- // Shrug...
97 //-killed- event_poll();
102 //end this section addition - Hans
105 void mouse_flush() // clears all mice events...
112 current_time = timer_get_fixed_seconds();
113 for (i=0; i<MOUSE_MAX_BUTTONS; i++)
115 Mouse.buttons[i].pressed=0;
116 Mouse.buttons[i].time_went_down=current_time;
117 Mouse.buttons[i].time_held_down=0;
118 Mouse.buttons[i].num_ups=0;
119 Mouse.buttons[i].num_downs=0;
121 //added on 10/17/98 by Hans de Goede for mouse functionality
126 //end this section addition - Hans
129 //========================================================================
130 void mouse_get_pos( int *x, int *y)
132 //added/changed on 10/17/98 by Hans de Goede for mouse functionality
133 //-killed- Uint16 lx,ly;
135 //-killed- SDL_GetMouseState(&lx,&ly);
136 //-killed- *x=(int)lx;
137 //-killed- *y=(int)ly;
140 //end this section change - Hans
143 void mouse_get_delta( int *dx, int *dy )
145 //added/changed on 10/17/98 by Hans de Goede for mouse functionality
146 //-killed- static int lastx, lasty;
150 //-killed- mouse_get_pos(&x,&y);
151 //-killed- *dx = x - lastx;
152 //-killed- *dy = y - lasty;
153 //-killed- lastx = x;
154 //-killed- lasty = y;
159 //end this section change - Hans
170 for (i=0; i<MOUSE_MAX_BUTTONS; i++ )
172 if (Mouse.buttons[i].pressed)
179 void mouse_set_pos( int x, int y)
182 //added/changed on 10/17/98 by Hans de Goede for mouse functionality
183 //-killed- SDL_WarpMouse(x,y);
186 if (Mouse.x > Mouse.max_x) Mouse.x = Mouse.max_x;
187 else if (Mouse.x < Mouse.min_x) Mouse.x = Mouse.min_x;
188 if (Mouse.y > Mouse.max_y) Mouse.y = Mouse.max_y;
189 else if (Mouse.y < Mouse.min_y) Mouse.y = Mouse.min_y;
190 //end this section change - Hans
193 void mouse_get_cyberman_pos( int *x, int *y )
199 // Returns how long this button has been down since last call.
200 fix mouse_button_down_time(int button)
206 if (!Mouse.buttons[button].pressed) {
207 time_down = Mouse.buttons[button].time_held_down;
208 Mouse.buttons[button].time_held_down = 0;
210 time = timer_get_fixed_seconds();
211 time_down = time - Mouse.buttons[button].time_held_down;
212 Mouse.buttons[button].time_held_down = time;
217 // Returns how many times this button has went down since last call
218 int mouse_button_down_count(int button)
224 count = Mouse.buttons[button].num_downs;
225 Mouse.buttons[button].num_downs = 0;
230 // Returns 1 if this button is currently down
231 int mouse_button_state(int button)
234 return Mouse.buttons[button].pressed;