X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=1866e7ae79d00373ecab208209ad6cd5765c596b;hb=eae2f3467caaaf64a9370c1acd8cecf11fd58328;hp=b0022c351eb70247a9683d6d4ca48080ad513b9b;hpb=78ec772d11cb8823d8dca05c227b472da8708a07;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index b0022c35..1866e7ae 100644 --- a/src/events.c +++ b/src/events.c @@ -68,7 +68,8 @@ void EventLoop(void) if (game_status != PLAYING) { XSync(display, FALSE); - Delay(10); + if (!XPending(display)) /* delay only if no pending events */ + Delay(10); } /* refresh window contents from drawing buffer, if needed */ @@ -355,7 +356,7 @@ void HandleButton(int mx, int my, int button) break; case HALLOFFAME: - HandleHallOfFame(button); + HandleHallOfFame(0,0, 0,0, button); break; case LEVELED: @@ -476,7 +477,8 @@ void HandleKey(KeySym key, int key_status) if (key_status == KEY_RELEASED) return; - if (key == XK_Return && game_status == PLAYING && AllPlayersGone) + if ((key == XK_Return || key == XK_space) && + game_status == PLAYING && AllPlayersGone) { CloseDoor(DOOR_CLOSE_1); game_status = MAINMENU; @@ -487,16 +489,6 @@ void HandleKey(KeySym key, int key_status) /* allow quick escape to the main menu with the Escape key */ if (key == XK_Escape && game_status != MAINMENU) { - if (game_status == LEVELED) - { - /* draw smaller door */ - XCopyArea(display, pix[PIX_DOOR], drawto, gc, - DOOR_GFX_PAGEX7, 64, - 108, 64, - EX - 4, EY - 12); - redraw_mask |= REDRAW_ALL; - } - CloseDoor(DOOR_CLOSE_1 | DOOR_OPEN_2 | DOOR_NO_DELAY); game_status = MAINMENU; DrawMainMenu(); @@ -529,6 +521,7 @@ void HandleKey(KeySym key, int key_status) switch(key) { case XK_Return: + case XK_space: if (game_status == MAINMENU) HandleMainMenu(0,0, 0,0, MB_MENU_CHOICE); else if (game_status == CHOOSELEVEL) @@ -539,6 +532,16 @@ void HandleKey(KeySym key, int key_status) HandleSetupInputScreen(0,0, 0,0, MB_MENU_CHOICE); break; + case XK_Page_Up: + if (game_status == CHOOSELEVEL) + HandleChooseLevel(0,0, 0,-SCR_FIELDY, MB_MENU_MARK); + break; + + case XK_Page_Down: + if (game_status == CHOOSELEVEL) + HandleChooseLevel(0,0, 0,SCR_FIELDY, MB_MENU_MARK); + break; + default: break; } @@ -552,11 +555,20 @@ void HandleKey(KeySym key, int key_status) switch(key) { case XK_Return: + case XK_space: game_status = MAINMENU; DrawMainMenu(); BackToFront(); break; + case XK_Page_Up: + HandleHallOfFame(0,0, 0,-SCR_FIELDY, MB_MENU_MARK); + break; + + case XK_Page_Down: + HandleHallOfFame(0,0, 0,SCR_FIELDY, MB_MENU_MARK); + break; + default: break; } @@ -769,7 +781,7 @@ void HandleJoystick() } case HALLOFFAME: - HandleHallOfFame(!newbutton); + HandleHallOfFame(0,0, dx,dy, !newbutton); break; case HELPSCREEN: