X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=0e8122853385e642df43e2dae3711a2b12b0d318;hb=5d50a7e10873581345ee63a5afafd43dbd45809b;hp=60a6ceb3080efa7866519fd7c0de30d1efe2e6c9;hpb=20e58eb6573a45a41c25958e17e8d9c20f738edc;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index 60a6ceb3..0e812285 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 */ @@ -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; @@ -519,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) @@ -529,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; } @@ -542,6 +555,7 @@ void HandleKey(KeySym key, int key_status) switch(key) { case XK_Return: + case XK_space: game_status = MAINMENU; DrawMainMenu(); BackToFront();