Ticket #8164: scummvm-analog-js.diff
File scummvm-analog-js.diff, 1.6 KB (added by , 22 years ago) |
---|
-
backends/sdl/sdl-common.cpp
old new 26 26 27 27 #include "scummvm.xpm" 28 28 29 #define JOY_DEADZONE 4000 30 #undef JOY_ANALOG 31 #define JOY_INVERT_Y 29 32 30 33 bool atexit_proc_installed = false; 31 34 void atexit_proc() { … … 461 464 462 465 bool OSystem_SDL_Common::poll_event(Event *event) { 463 466 SDL_Event ev; 467 int axis; 464 468 kbd_mouse(); 465 469 466 470 for(;;) { … … 666 670 return true; 667 671 668 672 case SDL_JOYAXISMOTION: 673 axis = ev.jaxis.value; 674 if (axis > JOY_DEADZONE) axis-=JOY_DEADZONE; 675 else if (axis < -JOY_DEADZONE) axis+=JOY_DEADZONE; 676 else axis=0; 677 669 678 if ( ev.jaxis.axis == 0) { 670 if (ev.jaxis.value < -3200) { // left 671 km.x_vel = -1; 672 km.x_down_count = 1; 673 } else if (ev.jaxis.value > 3200) { // right 674 km.x_vel = 1; 679 #ifdef JOY_ANALOG 680 km.x_vel = axis/2000; 681 km.x_down_count = 0; 682 #else 683 if (axis != 0) { 684 km.x_vel = (axis>0)?1:-1; 675 685 km.x_down_count = 1; 676 } else { // neither686 } else { 677 687 km.x_vel = 0; 678 688 km.x_down_count = 0; 679 689 } 680 681 690 #endif 682 691 } else if (ev.jaxis.axis == 1) { 683 if (ev.jaxis.value < -3200) { // up 684 km.y_vel = -1; 685 km.y_down_count = 1; 686 } else if (ev.jaxis.value > 3200) { // down 687 km.y_vel = 1; 692 #ifndef JOY_INVERT_Y 693 axis = -axis; 694 #endif 695 #ifdef JOY_ANALOG 696 km.y_vel = -axis/2000; 697 km.y_down_count = 0; 698 #else 699 if (axis != 0) { 700 km.y_vel = (axis>0)?1:-1; 688 701 km.y_down_count = 1; 689 702 } else { 690 703 km.y_vel = 0; 691 704 km.y_down_count = 0; 692 705 } 706 #endif 693 707 } 694 708 return true; 695 709