Changeset 645
- Timestamp:
- May 13, 2011, 1:36:00 PM (11 years ago)
- Location:
- abuse/trunk/src
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
abuse/trunk/src/demo.cpp
r643 r645 61 61 62 62 int event_waiting() 63 { return wm-> event_waiting(); }63 { return wm->IsPending(); } 64 64 65 65 -
abuse/trunk/src/director.cpp
r643 r645 177 177 178 178 wm->flush_screen(); 179 while (wm-> event_waiting())179 while (wm->IsPending()) 180 180 { 181 181 Event ev; -
abuse/trunk/src/endgame.cpp
r644 r645 363 363 } 364 364 365 if (wm-> event_waiting())365 if (wm->IsPending()) 366 366 wm->get_event(ev); 367 367 … … 394 394 time_marker now; while (now.diff_time(&start)<0.18) now.get_time(); start.get_time(); 395 395 396 while (wm-> event_waiting() && ev.type!=EV_KEY) wm->get_event(ev);396 while (wm->IsPending() && ev.type!=EV_KEY) wm->get_event(ev); 397 397 } 398 398 … … 458 458 wm->flush_screen(); 459 459 time_marker now; while (now.diff_time(&start)<0.18) now.get_time(); start.get_time(); 460 while (wm-> event_waiting() && ev.type!=EV_KEY) wm->get_event(ev);460 while (wm->IsPending() && ev.type!=EV_KEY) wm->get_event(ev); 461 461 } 462 462 … … 508 508 wm->flush_screen(); 509 509 time_marker now; while (now.diff_time(&start)<0.18) now.get_time(); start.get_time(); 510 while (wm-> event_waiting() && ev.type!=EV_KEY) wm->get_event(ev);510 while (wm->IsPending() && ev.type!=EV_KEY) wm->get_event(ev); 511 511 } 512 512 -
abuse/trunk/src/game.cpp
r644 r645 1299 1299 time_marker now; 1300 1300 1301 while(wm-> event_waiting() && ev.type != EV_KEY)1301 while(wm->IsPending() && ev.type != EV_KEY) 1302 1302 wm->get_event(ev); 1303 1303 -
abuse/trunk/src/imlib/event.h
r643 r645 72 72 JCMouse *mouse; 73 73 sprite *mouse_sprite() { return mouse->mouse_sprite(); } 74 int event_waiting();74 int IsPending(); 75 75 void Get(Event &ev); 76 76 void add_redraw(int X1, int Y1, int X2, int Y2, void *Start); … … 93 93 94 94 linked_list m_events; 95 int mhere, ewaiting, last_keystat, last_key;95 int mhere, m_pending, last_keystat, last_key; 96 96 sprite_controller sc; 97 97 }; -
abuse/trunk/src/imlib/mouse.h
r643 r645 11 11 #ifndef __MOUSE_HPP_ 12 12 #define __MOUSE_HPP_ 13 13 14 #include "image.h" 14 15 #include "sprite.h" … … 16 17 class JCMouse 17 18 { 18 int here,but; 19 sprite *sp; 20 image *screen; 21 int lx,ly,lbut,mx,my; 22 int cx,cy; // center of mouse cursor 23 public : 24 JCMouse(image *Screen, palette *pal); 25 void set_shape(image *im, int centerx=0, int centery=0); 26 void update(int newx=-1, int newy=-1, int new_but=-1); 27 void set_shape(image *im) { if (here) sp->change_visual(im); } 28 int x() { if (here) return mx; else return 0; } 29 int y() { if (here) return my; else return 0; } 30 int drawx() { return mx-cx; } 31 int drawy() { return my-cy; } 32 int lastx() { if (here) return lx; else return 0; } 33 int lasty() { if (here) return ly; else return 0; } 34 int last_button() { if (here) return lbut; else return 0; } 35 int button() { return but; } 36 int exists() { return here; } 37 sprite *mouse_sprite() { return sp; } 38 void set_position(int new_mx, int new_my); 39 ~JCMouse(); 19 public: 20 JCMouse(image *screen, palette *pal); 21 ~JCMouse(); 22 23 void set_shape(image *im, int centerx = 0, int centery = 0); 24 void update(int newx = -1, int newy = -1, int new_but = -1); 25 void set_shape(image *im) { if (here) sp->change_visual(im); } 26 sprite *mouse_sprite() { return sp; } 27 void set_position(int new_mx, int new_my); 28 29 int x() { return here ? mx : 0; } 30 int y() { return here ? my : 0; } 31 int drawx() { return mx - cx; } 32 int drawy() { return my - cy; } 33 int lastx() { return here ? lx : 0; } 34 int lasty() { return here ? ly : 0; } 35 int last_button() { return here ? lbut : 0; } 36 int button() { return but; } 37 int exists() { return here; } 40 38 41 39 #ifdef __POWERPC__ 42 40 int set_button(int b) { return (but = b); } 43 41 #endif 44 } ; 42 43 private: 44 int here, but; 45 sprite *sp; 46 image *m_screen; 47 int lx, ly, lbut, mx, my; 48 int cx, cy; // center of mouse cursor 49 }; 45 50 46 51 #endif -
abuse/trunk/src/innet.cpp
r643 r645 605 605 { 606 606 service_net_request(); 607 if (wm-> event_waiting())607 if (wm->IsPending()) 608 608 { 609 609 Event ev; … … 617 617 } 618 618 619 } while (wm-> event_waiting());619 } while (wm->IsPending()); 620 620 621 621 wm->flush_screen(); … … 705 705 if (abort) 706 706 { 707 if (wm-> event_waiting())707 if (wm->IsPending()) 708 708 { 709 709 Event ev; … … 716 716 base->input_state=INPUT_PROCESSING; 717 717 } 718 } while (wm-> event_waiting());718 } while (wm->IsPending()); 719 719 720 720 wm->flush_screen(); -
abuse/trunk/src/menu.cpp
r644 r645 193 193 { 194 194 wm->flush_screen(); 195 if (wm-> event_waiting())195 if (wm->IsPending()) 196 196 { 197 197 wm->get_event(ev); … … 292 292 wm->get_event(ev); 293 293 } 294 while(ev.type == EV_MOUSE_MOVE && wm-> event_waiting());294 while(ev.type == EV_MOUSE_MOVE && wm->IsPending()); 295 295 296 296 wm->flush_screen(); … … 676 676 time_marker new_time; 677 677 678 if (wm-> event_waiting())678 if (wm->IsPending()) 679 679 { 680 680 do 681 681 { 682 682 wm->get_event(ev); 683 } while (ev.type==EV_MOUSE_MOVE && wm-> event_waiting());683 } while (ev.type==EV_MOUSE_MOVE && wm->IsPending()); 684 684 inm->handle_event(ev,NULL); 685 685 if (ev.type==EV_KEY && ev.key==JK_ESC) -
abuse/trunk/src/netcfg.cpp
r644 r645 70 70 { 71 71 wm->flush_screen(); 72 do { wm->get_event(ev); } while (ev.type==EV_MOUSE_MOVE && wm-> event_waiting());72 do { wm->get_event(ev); } while (ev.type==EV_MOUSE_MOVE && wm->IsPending()); 73 73 } while (ev.type!=EV_MESSAGE || ev.message.id!=CFG_ERR_OK || ev.type==EV_CLOSE_WINDOW || (ev.type==EV_KEY && ev.key==JK_ESC)); 74 74 wm->close_window(j); … … 193 193 { 194 194 wm->flush_screen(); 195 do { wm->get_event(ev); } while (ev.type==EV_MOUSE_MOVE && wm-> event_waiting());195 do { wm->get_event(ev); } while (ev.type==EV_MOUSE_MOVE && wm->IsPending()); 196 196 if (ev.type==EV_MESSAGE) 197 197 { … … 250 250 { 251 251 wm->flush_screen(); 252 do { wm->get_event(ev); } while (ev.type==EV_MOUSE_MOVE && wm-> event_waiting());252 do { wm->get_event(ev); } while (ev.type==EV_MOUSE_MOVE && wm->IsPending()); 253 253 if (ev.type==EV_MESSAGE && ev.message.id==NET_OK && confirm_inputs(nw,state==RESTART_SERVER)) 254 254 done=1; … … 308 308 { 309 309 wm->flush_screen(); 310 do { wm->get_event(ev); } while (ev.type==EV_MOUSE_MOVE && wm-> event_waiting());310 do { wm->get_event(ev); } while (ev.type==EV_MOUSE_MOVE && wm->IsPending()); 311 311 inm.handle_event(ev,NULL); 312 312 if ((ev.type==EV_KEY && (ev.key==JK_ESC || ev.key==JK_ENTER)) || … … 428 428 { 429 429 wm->flush_screen(); 430 do { wm->get_event(ev); } while (ev.type==EV_MOUSE_MOVE && wm-> event_waiting());430 do { wm->get_event(ev); } while (ev.type==EV_MOUSE_MOVE && wm->IsPending()); 431 431 inm.handle_event(ev,NULL); 432 432 if (ev.type==EV_MESSAGE) … … 491 491 do 492 492 { 493 if (wm-> event_waiting())493 if (wm->IsPending()) 494 494 { 495 do { wm->get_event(ev); } while (ev.type==EV_MOUSE_MOVE && wm-> event_waiting());495 do { wm->get_event(ev); } while (ev.type==EV_MOUSE_MOVE && wm->IsPending()); 496 496 inm.handle_event(ev,NULL); 497 497 if (ev.type==EV_MESSAGE) -
abuse/trunk/src/sdlport/event.cpp
r643 r645 41 41 42 42 // Pre-declarations 43 void handle_mouse(Event &ev);43 static void handle_mouse(Event &ev); 44 44 45 45 // … … 52 52 mhere = mouse->exists(); 53 53 last_keystat = get_key_flags(); 54 ewaiting = 0;54 m_pending = 0; 55 55 56 56 // Ignore activate events … … 64 64 int EventHandler::get_key_flags() 65 65 { 66 SDLMod key_flag; 67 68 key_flag = SDL_GetModState(); 66 SDLMod key_flag = SDL_GetModState(); 69 67 70 68 return ((key_flag & KMOD_SHIFT) != 0) << 3 | … … 74 72 75 73 // 76 // event_waiting()74 // IsPending() 77 75 // Are there any events in the queue? 78 76 // 79 int EventHandler::event_waiting() 80 { 81 if(ewaiting) 82 { 83 return 1; 84 } 85 if(SDL_PollEvent(NULL)) 86 { 87 ewaiting = 1; 88 } 89 return ewaiting; 77 int EventHandler::IsPending() 78 { 79 if (!m_pending && SDL_PollEvent(NULL)) 80 m_pending = 1; 81 82 return m_pending; 90 83 } 91 84 … … 96 89 void EventHandler::Get(Event &ev) 97 90 { 98 Event *ep; 99 while(!ewaiting) 100 { 101 event_waiting(); 102 103 if (!ewaiting) 91 while(!m_pending) 92 { 93 IsPending(); 94 95 if (!m_pending) 104 96 { 105 97 // Sleep for 1 millisecond if there are no events … … 108 100 } 109 101 110 ep = (Event *)m_events.first();102 Event *ep = (Event *)m_events.first(); 111 103 if(ep) 112 104 { … … 114 106 m_events.unlink(ep); 115 107 delete ep; 116 ewaiting = m_events.first() != NULL; 117 } 118 else 119 { 120 // NOTE : that the mouse status should be known 121 // even if another event has occurred. 122 ev.mouse_move.x = mouse->x(); 123 ev.mouse_move.y = mouse->y(); 124 ev.mouse_button = mouse->button(); 125 126 // Gather events 127 SDL_Event Event; 128 if(SDL_PollEvent(&Event)) 108 m_pending = m_events.first() != NULL; 109 return; 110 } 111 112 // No more events 113 m_pending = 0; 114 115 // NOTE : that the mouse status should be known 116 // even if another event has occurred. 117 ev.mouse_move.x = mouse->x(); 118 ev.mouse_move.y = mouse->y(); 119 ev.mouse_button = mouse->button(); 120 121 // Gather events 122 SDL_Event sdlev; 123 if (SDL_PollEvent(&sdlev)) 124 { 125 // always sort the mouse out 126 handle_mouse(ev); 127 mouse->update(ev.mouse_move.x, ev.mouse_move.y, ev.mouse_button); 128 129 switch(sdlev.type) 129 130 { 130 // always sort the mouse out 131 handle_mouse(ev); 132 mouse->update(ev.mouse_move.x, ev.mouse_move.y, ev.mouse_button); 133 134 switch(Event.type) 131 case SDL_QUIT: 135 132 { 136 case SDL_QUIT: 137 { 138 exit(0); 139 break; 140 } 141 case SDL_MOUSEBUTTONUP: 142 { 143 switch(Event.button.button) 144 { 145 case 4: // Mouse wheel goes up... 133 exit(0); 134 break; 135 } 136 case SDL_MOUSEBUTTONUP: 137 { 138 switch(sdlev.button.button) 139 { 140 case 4: // Mouse wheel goes up... 141 { 142 ev.key = get_key_binding("b4", 0); 143 ev.type = EV_KEYRELEASE; 144 break; 145 } 146 case 5: // Mouse wheel goes down... 147 { 148 ev.key = get_key_binding("b3", 0); 149 ev.type = EV_KEYRELEASE; 150 break; 151 } 152 } 153 break; 154 } 155 case SDL_MOUSEBUTTONDOWN: 156 { 157 switch(sdlev.button.button) 158 { 159 case 4: // Mouse wheel goes up... 160 { 161 ev.key = get_key_binding("b4", 0); 162 ev.type = EV_KEY; 163 break; 164 } 165 case 5: // Mouse wheel goes down... 166 { 167 ev.key = get_key_binding("b3", 0); 168 ev.type = EV_KEY; 169 break; 170 } 171 } 172 break; 173 } 174 case SDL_KEYDOWN: 175 case SDL_KEYUP: 176 { 177 // Default to EV_SPURIOUS 178 ev.key = EV_SPURIOUS; 179 if(sdlev.type == SDL_KEYDOWN) 180 { 181 ev.type = EV_KEY; 182 } 183 else 184 { 185 ev.type = EV_KEYRELEASE; 186 } 187 switch(sdlev.key.keysym.sym) 188 { 189 case SDLK_DOWN: ev.key = JK_DOWN; break; 190 case SDLK_UP: ev.key = JK_UP; break; 191 case SDLK_LEFT: ev.key = JK_LEFT; break; 192 case SDLK_RIGHT: ev.key = JK_RIGHT; break; 193 case SDLK_LCTRL: ev.key = JK_CTRL_L; break; 194 case SDLK_RCTRL: ev.key = JK_CTRL_R; break; 195 case SDLK_LALT: ev.key = JK_ALT_L; break; 196 case SDLK_RALT: ev.key = JK_ALT_R; break; 197 case SDLK_LSHIFT: ev.key = JK_SHIFT_L; break; 198 case SDLK_RSHIFT: ev.key = JK_SHIFT_R; break; 199 case SDLK_NUMLOCK: ev.key = JK_NUM_LOCK; break; 200 case SDLK_HOME: ev.key = JK_HOME; break; 201 case SDLK_END: ev.key = JK_END; break; 202 case SDLK_BACKSPACE: ev.key = JK_BACKSPACE; break; 203 case SDLK_TAB: ev.key = JK_TAB; break; 204 case SDLK_RETURN: ev.key = JK_ENTER; break; 205 case SDLK_SPACE: ev.key = JK_SPACE; break; 206 case SDLK_CAPSLOCK: ev.key = JK_CAPS; break; 207 case SDLK_ESCAPE: ev.key = JK_ESC; break; 208 case SDLK_F1: ev.key = JK_F1; break; 209 case SDLK_F2: ev.key = JK_F2; break; 210 case SDLK_F3: ev.key = JK_F3; break; 211 case SDLK_F4: ev.key = JK_F4; break; 212 case SDLK_F5: ev.key = JK_F5; break; 213 case SDLK_F6: ev.key = JK_F6; break; 214 case SDLK_F7: ev.key = JK_F7; break; 215 case SDLK_F8: ev.key = JK_F8; break; 216 case SDLK_F9: ev.key = JK_F9; break; 217 case SDLK_F10: ev.key = JK_F10; break; 218 case SDLK_INSERT: ev.key = JK_INSERT; break; 219 case SDLK_KP0: ev.key = JK_INSERT; break; 220 case SDLK_PAGEUP: ev.key = JK_PAGEUP; break; 221 case SDLK_PAGEDOWN: ev.key = JK_PAGEDOWN; break; 222 case SDLK_KP8: ev.key = JK_UP; break; 223 case SDLK_KP2: ev.key = JK_DOWN; break; 224 case SDLK_KP4: ev.key = JK_LEFT; break; 225 case SDLK_KP6: ev.key = JK_RIGHT; break; 226 case SDLK_F11: 227 { 228 // Only handle key down 229 if(ev.type == EV_KEY) 146 230 { 147 ev.key = get_key_binding("b4", 0); 148 ev.type = EV_KEYRELEASE; 149 break; 231 // Toggle fullscreen 232 SDL_WM_ToggleFullScreen(SDL_GetVideoSurface()); 150 233 } 151 case 5: // Mouse wheel goes down... 234 ev.key = EV_SPURIOUS; 235 break; 236 } 237 case SDLK_F12: 238 { 239 // Only handle key down 240 if(ev.type == EV_KEY) 152 241 { 153 ev.key = get_key_binding("b3", 0); 154 ev.type = EV_KEYRELEASE; 155 break; 242 // Toggle grab mouse 243 if(SDL_WM_GrabInput(SDL_GRAB_QUERY) == SDL_GRAB_ON) 244 { 245 the_game->show_help("Grab Mouse: OFF\n"); 246 SDL_WM_GrabInput(SDL_GRAB_OFF); 247 } 248 else 249 { 250 the_game->show_help("Grab Mouse: ON\n"); 251 SDL_WM_GrabInput(SDL_GRAB_ON); 252 } 156 253 } 157 } 158 break; 159 } 160 case SDL_MOUSEBUTTONDOWN: 161 { 162 switch(Event.button.button) 163 { 164 case 4: // Mouse wheel goes up... 254 ev.key = EV_SPURIOUS; 255 break; 256 } 257 case SDLK_PRINT: // print-screen key 258 { 259 // Only handle key down 260 if(ev.type == EV_KEY) 165 261 { 166 ev.key = get_key_binding("b4", 0);167 ev.type = EV_KEY;168 break;262 // Grab a screenshot 263 SDL_SaveBMP(SDL_GetVideoSurface(), "screenshot.bmp"); 264 the_game->show_help("Screenshot saved to: screenshot.bmp.\n"); 169 265 } 170 case 5: // Mouse wheel goes down... 266 ev.key = EV_SPURIOUS; 267 break; 268 } 269 default: 270 { 271 ev.key = (int)sdlev.key.keysym.sym; 272 // Need to handle the case of shift being pressed 273 // There has to be a better way 274 if((sdlev.key.keysym.mod & KMOD_SHIFT) != 0) 171 275 { 172 ev.key = get_key_binding("b3", 0); 173 ev.type = EV_KEY; 174 break; 276 if(sdlev.key.keysym.sym >= SDLK_a && 277 sdlev.key.keysym.sym <= SDLK_z) 278 { 279 ev.key -= 32; 280 } 281 else if(sdlev.key.keysym.sym >= SDLK_1 && 282 sdlev.key.keysym.sym <= SDLK_5) 283 { 284 ev.key -= 16; 285 } 286 else 287 { 288 switch(sdlev.key.keysym.sym) 289 { 290 case SDLK_6: 291 ev.key = SDLK_CARET; break; 292 case SDLK_7: 293 case SDLK_9: 294 case SDLK_0: 295 ev.key -= 17; break; 296 case SDLK_8: 297 ev.key = SDLK_ASTERISK; break; 298 case SDLK_MINUS: 299 ev.key = SDLK_UNDERSCORE; break; 300 case SDLK_EQUALS: 301 ev.key = SDLK_PLUS; break; 302 case SDLK_COMMA: 303 ev.key = SDLK_LESS; break; 304 case SDLK_PERIOD: 305 ev.key = SDLK_GREATER; break; 306 case SDLK_SLASH: 307 ev.key = SDLK_QUESTION; break; 308 case SDLK_SEMICOLON: 309 ev.key = SDLK_COLON; break; 310 case SDLK_QUOTE: 311 ev.key = SDLK_QUOTEDBL; break; 312 default: 313 break; 314 } 315 } 175 316 } 176 317 } 177 break; 178 } 179 case SDL_KEYDOWN: 180 case SDL_KEYUP: 181 { 182 // Default to EV_SPURIOUS 183 ev.key = EV_SPURIOUS; 184 if(Event.type == SDL_KEYDOWN) 185 { 186 ev.type = EV_KEY; 187 } 188 else 189 { 190 ev.type = EV_KEYRELEASE; 191 } 192 switch(Event.key.keysym.sym) 193 { 194 case SDLK_DOWN: ev.key = JK_DOWN; break; 195 case SDLK_UP: ev.key = JK_UP; break; 196 case SDLK_LEFT: ev.key = JK_LEFT; break; 197 case SDLK_RIGHT: ev.key = JK_RIGHT; break; 198 case SDLK_LCTRL: ev.key = JK_CTRL_L; break; 199 case SDLK_RCTRL: ev.key = JK_CTRL_R; break; 200 case SDLK_LALT: ev.key = JK_ALT_L; break; 201 case SDLK_RALT: ev.key = JK_ALT_R; break; 202 case SDLK_LSHIFT: ev.key = JK_SHIFT_L; break; 203 case SDLK_RSHIFT: ev.key = JK_SHIFT_R; break; 204 case SDLK_NUMLOCK: ev.key = JK_NUM_LOCK; break; 205 case SDLK_HOME: ev.key = JK_HOME; break; 206 case SDLK_END: ev.key = JK_END; break; 207 case SDLK_BACKSPACE: ev.key = JK_BACKSPACE; break; 208 case SDLK_TAB: ev.key = JK_TAB; break; 209 case SDLK_RETURN: ev.key = JK_ENTER; break; 210 case SDLK_SPACE: ev.key = JK_SPACE; break; 211 case SDLK_CAPSLOCK: ev.key = JK_CAPS; break; 212 case SDLK_ESCAPE: ev.key = JK_ESC; break; 213 case SDLK_F1: ev.key = JK_F1; break; 214 case SDLK_F2: ev.key = JK_F2; break; 215 case SDLK_F3: ev.key = JK_F3; break; 216 case SDLK_F4: ev.key = JK_F4; break; 217 case SDLK_F5: ev.key = JK_F5; break; 218 case SDLK_F6: ev.key = JK_F6; break; 219 case SDLK_F7: ev.key = JK_F7; break; 220 case SDLK_F8: ev.key = JK_F8; break; 221 case SDLK_F9: ev.key = JK_F9; break; 222 case SDLK_F10: ev.key = JK_F10; break; 223 case SDLK_INSERT: ev.key = JK_INSERT; break; 224 case SDLK_KP0: ev.key = JK_INSERT; break; 225 case SDLK_PAGEUP: ev.key = JK_PAGEUP; break; 226 case SDLK_PAGEDOWN: ev.key = JK_PAGEDOWN; break; 227 case SDLK_KP8: ev.key = JK_UP; break; 228 case SDLK_KP2: ev.key = JK_DOWN; break; 229 case SDLK_KP4: ev.key = JK_LEFT; break; 230 case SDLK_KP6: ev.key = JK_RIGHT; break; 231 case SDLK_F11: 232 { 233 // Only handle key down 234 if(ev.type == EV_KEY) 235 { 236 // Toggle fullscreen 237 SDL_WM_ToggleFullScreen(SDL_GetVideoSurface()); 238 } 239 ev.key = EV_SPURIOUS; 240 break; 241 } 242 case SDLK_F12: 243 { 244 // Only handle key down 245 if(ev.type == EV_KEY) 246 { 247 // Toggle grab mouse 248 if(SDL_WM_GrabInput(SDL_GRAB_QUERY) == SDL_GRAB_ON) 249 { 250 the_game->show_help("Grab Mouse: OFF\n"); 251 SDL_WM_GrabInput(SDL_GRAB_OFF); 252 } 253 else 254 { 255 the_game->show_help("Grab Mouse: ON\n"); 256 SDL_WM_GrabInput(SDL_GRAB_ON); 257 } 258 } 259 ev.key = EV_SPURIOUS; 260 break; 261 } 262 case SDLK_PRINT: // print-screen key 263 { 264 // Only handle key down 265 if(ev.type == EV_KEY) 266 { 267 // Grab a screenshot 268 SDL_SaveBMP(SDL_GetVideoSurface(), "screenshot.bmp"); 269 the_game->show_help("Screenshot saved to: screenshot.bmp.\n"); 270 } 271 ev.key = EV_SPURIOUS; 272 break; 273 } 274 default: 275 { 276 ev.key = (int)Event.key.keysym.sym; 277 // Need to handle the case of shift being pressed 278 // There has to be a better way 279 if((Event.key.keysym.mod & KMOD_SHIFT) != 0) 280 { 281 if(Event.key.keysym.sym >= SDLK_a && 282 Event.key.keysym.sym <= SDLK_z) 283 { 284 ev.key -= 32; 285 } 286 else if(Event.key.keysym.sym >= SDLK_1 && 287 Event.key.keysym.sym <= SDLK_5) 288 { 289 ev.key -= 16; 290 } 291 else 292 { 293 switch(Event.key.keysym.sym) 294 { 295 case SDLK_6: 296 ev.key = SDLK_CARET; break; 297 case SDLK_7: 298 case SDLK_9: 299 case SDLK_0: 300 ev.key -= 17; break; 301 case SDLK_8: 302 ev.key = SDLK_ASTERISK; break; 303 case SDLK_MINUS: 304 ev.key = SDLK_UNDERSCORE; break; 305 case SDLK_EQUALS: 306 ev.key = SDLK_PLUS; break; 307 case SDLK_COMMA: 308 ev.key = SDLK_LESS; break; 309 case SDLK_PERIOD: 310 ev.key = SDLK_GREATER; break; 311 case SDLK_SLASH: 312 ev.key = SDLK_QUESTION; break; 313 case SDLK_SEMICOLON: 314 ev.key = SDLK_COLON; break; 315 case SDLK_QUOTE: 316 ev.key = SDLK_QUOTEDBL; break; 317 default: 318 break; 319 } 320 } 321 } 322 } 323 } 324 break; 325 } 318 } 319 break; 326 320 } 327 321 } 328 // No more events329 ewaiting = 0;330 322 } 331 323 } … … 337 329 // able to detect that. 338 330 // 339 void handle_mouse(Event &ev)331 static void handle_mouse(Event &ev) 340 332 { 341 333 Uint8 buttons; -
abuse/trunk/src/sdlport/mouse.cpp
r579 r645 50 50 // Constructor 51 51 // 52 JCMouse::JCMouse( image *Screen, palette *pal)52 JCMouse::JCMouse(image *screen, palette *pal) 53 53 { 54 54 image *im; … … 58 58 cx = cy = 0; 59 59 here = 1; 60 sp = NULL;61 60 62 screen = Screen;61 m_screen = screen; 63 62 br = pal->brightest( 1 ); 64 63 dr = pal->darkest( 1 ); … … 77 76 JCMouse::~JCMouse() 78 77 { 79 if( sp ) 80 { 81 delete sp->visual; 82 delete sp; 83 } 78 delete sp->visual; 79 delete sp; 84 80 } 85 81 … … 88 84 // Set the shape of the mouse cursor 89 85 // 90 void JCMouse::set_shape( image *im, int centerx, int centery)86 void JCMouse::set_shape(image *im, int centerx, int centery) 91 87 { 92 sp->change_visual( im, 1);88 sp->change_visual(im, 1); 93 89 cx = -centerx; 94 90 cy = -centery; … … 99 95 // Set the position of the mouse cursor 100 96 // 101 void JCMouse::set_position( int new_mx, int new_my)97 void JCMouse::set_position(int new_mx, int new_my) 102 98 { 103 99 // Make sure the values we are given are sensible. 104 if( new_mx > screen->Size().x - 1 ) 105 { 106 new_mx = screen->Size().x - 1; 107 } 108 if( new_my > screen->Size().y - 1 ) 109 { 110 new_my = screen->Size().y - 1; 111 } 100 mx = Min(new_mx, m_screen->Size().x - 1); 101 my = Min(new_my, m_screen->Size().y - 1); 112 102 113 103 // Set the new position 114 mx = new_mx; 115 my = new_my; 116 SDL_WarpMouse( new_mx, new_my ); 104 SDL_WarpMouse(mx, my); 117 105 } 118 106 119 107 // 120 108 // update() 121 // Update the mouse s position and buttonsstates109 // Update the mouse position and button states 122 110 // 123 void JCMouse::update( int newx, int newy, int new_but)111 void JCMouse::update(int newx, int newy, int new_but) 124 112 { 125 if ( newx < 0)113 if (newx < 0) 126 114 { 127 Uint8 mask;128 129 115 lx = mx; 130 116 ly = my; 131 117 lbut = but; 132 mask = SDL_GetMouseState( &mx, &my ); 133 but = ( ( mask & SDL_BUTTON(1) ) != 0 ) | 134 ( ( mask & SDL_BUTTON(2) ) != 0 ) << 2 | 135 ( ( mask & SDL_BUTTON(3) ) != 0 ) << 1; 118 119 uint8_t mask = SDL_GetMouseState(&mx, &my); 120 but = ((mask & SDL_BUTTON(1)) != 0) | 121 ((mask & SDL_BUTTON(2)) != 0) << 2 | 122 ((mask & SDL_BUTTON(3)) != 0) << 1; 136 123 } 137 124 else … … 142 129 } 143 130 } 131
Note: See TracChangeset
for help on using the changeset viewer.