X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=a4b60829e90a139f35aeff1bc19a9cbfab278b3e;hb=2443a8a09966a9940e1420c91d24a297325c2a00;hp=fd8c35132206c56097d8a6bb099ca81ab23c972b;hpb=8932f698c0831ab0e4ae2e03d64a48be1aeee82a;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index fd8c3513..a4b60829 100644 --- a/src/events.c +++ b/src/events.c @@ -21,7 +21,6 @@ #include "editor.h" #include "files.h" #include "tape.h" -#include "joystick.h" #include "network.h" /* values for key_status */ @@ -223,38 +222,7 @@ void SleepWhileUnmapped() void HandleExposeEvent(ExposeEvent *event) { #ifndef TARGET_SDL - int x = event->x, y = event->y; - int width = event->width, height = event->height; - - if (setup.direct_draw && game_status==PLAYING) - { - int xx,yy; - int x1 = (x-SX)/TILEX, y1 = (y-SY)/TILEY; - int x2 = (x-SX+width)/TILEX, y2 = (y-SY+height)/TILEY; - - SetDrawtoField(DRAW_BACKBUFFER); - - for(xx=0; xx=x1 && xx<=x2 && yy>=y1 && yy<=y2) - DrawScreenField(xx,yy); - DrawAllPlayers(); - - SetDrawtoField(DRAW_DIRECT); - } - - if (setup.soft_scrolling && game_status == PLAYING) - { - int fx = FX, fy = FY; - - fx += (ScreenMovDir & (MV_LEFT|MV_RIGHT) ? ScreenGfxPos : 0); - fy += (ScreenMovDir & (MV_UP|MV_DOWN) ? ScreenGfxPos : 0); - - BlitBitmap(fieldbuffer, backbuffer, fx,fy, SXSIZE,SYSIZE, SX,SY); - } - - BlitBitmap(drawto, window, x,y, width,height, x,y); - + RedrawPlayfield(FALSE, event->x, event->y, event->width, event->height); FlushDisplay(); #endif } @@ -304,8 +272,8 @@ void HandleFocusEvent(FocusChangeEvent *event) int i; KeyboardAutoRepeatOn(); - old_joystick_status = joystick_status; - joystick_status = JOYSTICK_OFF; + old_joystick_status = joystick.status; + joystick.status = JOYSTICK_NOT_AVAILABLE; /* simulate key release events for still pressed keys */ key_joystick_mapping = 0; @@ -336,7 +304,7 @@ void HandleFocusEvent(FocusChangeEvent *event) KeyboardAutoRepeatOff(); } if (old_joystick_status != -1) - joystick_status = old_joystick_status; + joystick.status = old_joystick_status; } } @@ -393,10 +361,6 @@ void HandleButton(int mx, int my, int button) HandleSetupScreen(mx,my, 0,0, button); break; - case SETUPINPUT: - HandleSetupInputScreen(mx,my, 0,0, button); - break; - case PLAYING: #ifdef DEBUG if (button == MB_RELEASED) @@ -512,13 +476,25 @@ void HandleKey(Key key, int key_status) /* allow quick escape to the main menu with the Escape key */ if (key == KSYM_Escape && - game_status != MAINMENU && game_status != LEVELED) + game_status != MAINMENU && + game_status != PLAYING && + game_status != LEVELED && + game_status != CHOOSELEVEL && + game_status != SETUP) { game_status = MAINMENU; DrawMainMenu(); return; } + /* special shortcuts for quick game tape saving and loading */ + if (game_status == MAINMENU || game_status == PLAYING) + { + if (key == setup.shortcut.save_game) + TapeQuickSave(); + else if (key == setup.shortcut.load_game) + TapeQuickLoad(); + } #ifndef DEBUG @@ -541,7 +517,6 @@ void HandleKey(Key key, int key_status) case MAINMENU: case CHOOSELEVEL: case SETUP: - case SETUPINPUT: switch(key) { case KSYM_Return: @@ -552,8 +527,13 @@ void HandleKey(Key key, int key_status) HandleChooseLevel(0,0, 0,0, MB_MENU_CHOICE); else if (game_status == SETUP) HandleSetupScreen(0,0, 0,0, MB_MENU_CHOICE); - else if (game_status == SETUPINPUT) - HandleSetupInputScreen(0,0, 0,0, MB_MENU_CHOICE); + break; + + case KSYM_Escape: + if (game_status == CHOOSELEVEL) + HandleChooseLevel(0,0, 0,0, MB_MENU_LEAVE); + else if (game_status == SETUP) + HandleSetupScreen(0,0, 0,0, MB_MENU_LEAVE); break; case KSYM_Page_Up: @@ -613,6 +593,9 @@ void HandleKey(Key key, int key_status) { switch(key) { + case KSYM_Escape: + RequestQuitGame(); + break; #ifdef DEBUG case KSYM_0: @@ -818,7 +801,6 @@ void HandleJoystick() case MAINMENU: case CHOOSELEVEL: case SETUP: - case SETUPINPUT: { static unsigned long joystickmove_delay = 0; @@ -832,9 +814,6 @@ void HandleJoystick() HandleChooseLevel(0,0,dx,dy,newbutton ? MB_MENU_CHOICE : MB_MENU_MARK); else if (game_status==SETUP) HandleSetupScreen(0,0,dx,dy,newbutton ? MB_MENU_CHOICE : MB_MENU_MARK); - else if (game_status==SETUPINPUT) - HandleSetupInputScreen(0,0,dx,dy, - newbutton ? MB_MENU_CHOICE : MB_MENU_MARK); break; }