X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=033c75be1efafb6ed6f743b956d9ab2eb5773e59;hb=a4d4e8e444b21b58dcc88b52ff22726c545142a4;hp=84b651c9895e014d1900bbbecfb9be46a0197fe5;hpb=e5c5bf5c4a76a04f9bf64e92227bf2ef969fd25c;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 84b651c9..033c75be 100644 --- a/src/tools.c +++ b/src/tools.c @@ -1381,24 +1381,16 @@ boolean Request(char *text, unsigned int req_state) button_status = MB_RELEASED; - while(result<0) + while(result < 0) { - DoAnimation(); - Delay(10); - if (XPending(display)) { XEvent event; XNextEvent(display, &event); + switch(event.type) { - case Expose: - HandleExposeEvent((XExposeEvent *) &event); - break; - case UnmapNotify: - SleepWhileUnmapped(); - break; case ButtonPress: case ButtonRelease: case MotionNotify: @@ -1440,6 +1432,7 @@ boolean Request(char *text, unsigned int req_state) case BUTTON_CONFIRM: result = TRUE | FALSE; break; + case BUTTON_PLAYER_1: result = 1; break; @@ -1452,11 +1445,13 @@ boolean Request(char *text, unsigned int req_state) case BUTTON_PLAYER_4: result = 4; break; + default: break; } break; } + case KeyPress: switch(XLookupKeysym((XKeyEvent *)&event, ((XKeyEvent *)&event)->state)) @@ -1464,24 +1459,24 @@ boolean Request(char *text, unsigned int req_state) case XK_Return: result = 1; break; + case XK_Escape: result = 0; break; + + default: + break; } if (req_state & REQ_PLAYER) result = 0; break; + case KeyRelease: key_joystick_mapping = 0; break; - case FocusIn: - case FocusOut: - HandleFocusEvent((XFocusChangeEvent *) &event); - break; - case ClientMessage: - HandleClientMessageEvent((XClientMessageEvent *) &event); - break; + default: + HandleOtherEvents(&event); break; } } @@ -1494,6 +1489,11 @@ boolean Request(char *text, unsigned int req_state) else if (joy & JOY_BUTTON_2) result = 0; } + + DoAnimation(); + + /* don't eat all CPU time */ + Delay(10); } if (game_status != MAINMENU) @@ -1676,6 +1676,9 @@ unsigned int MoveDoor(unsigned int door_state) } } + if (setup.quick_doors) + StopSound(SND_OEFFNEN); + if (door_state & DOOR_ACTION_1) door1 = door_state & DOOR_ACTION_1; if (door_state & DOOR_ACTION_2)