X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=d08de9edf5ce16d679d5667756b4a70aca33bcad;hb=2dfebdae62bb9c56904025e6bfb9f1f931745ac0;hp=4cb4b1098cf4986948122441f566b1f508cb25cd;hpb=f7704e2d22e9499efe6380e0c916c2bd4918e4be;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index 4cb4b109..d08de9ed 100644 --- a/src/events.c +++ b/src/events.c @@ -1,7 +1,7 @@ /*********************************************************** * Rocks'n'Diamonds -- McDuffin Strikes Back! * *----------------------------------------------------------* -* (c) 1995-2002 Artsoft Entertainment * +* (c) 1995-2006 Artsoft Entertainment * * Holger Schemel * * Detmolder Strasse 189 * * 33604 Bielefeld * @@ -24,6 +24,9 @@ #include "network.h" +#define DEBUG_EVENTS 0 + + static boolean cursor_inside_playfield = FALSE; static boolean playfield_cursor_set = FALSE; static unsigned long playfield_cursor_delay = 0; @@ -124,7 +127,7 @@ void EventLoop(void) while (NextValidEvent(&event)) { - switch(event.type) + switch (event.type) { case EVENT_BUTTONPRESS: case EVENT_BUTTONRELEASE: @@ -191,7 +194,7 @@ void EventLoop(void) void HandleOtherEvents(Event *event) { - switch(event->type) + switch (event->type) { case EVENT_EXPOSE: HandleExposeEvent((ExposeEvent *) event); @@ -235,14 +238,18 @@ void ClearEventQueue() NextEvent(&event); - switch(event.type) + switch (event.type) { case EVENT_BUTTONRELEASE: button_status = MB_RELEASED; break; case EVENT_KEYRELEASE: +#if 1 + ClearPlayerAction(); +#else key_joystick_mapping = 0; +#endif break; default: @@ -274,7 +281,7 @@ void SleepWhileUnmapped() NextEvent(&event); - switch(event.type) + switch (event.type) { case EVENT_BUTTONRELEASE: button_status = MB_RELEASED; @@ -315,7 +322,7 @@ void HandleExposeEvent(ExposeEvent *event) void HandleButtonEvent(ButtonEvent *event) { -#if 0 +#if DEBUG_EVENTS printf("::: BUTTON EVENT: button %d %s\n", event->button, event->type == EVENT_BUTTONPRESS ? "pressed" : "released"); #endif @@ -350,7 +357,7 @@ void HandleKeyEvent(KeyEvent *event) Key key = GetEventKey(event, with_modifiers); Key keymod = (with_modifiers ? GetEventKey(event, FALSE) : key); -#if 0 +#if DEBUG_EVENTS printf("::: KEY EVENT: %d %s\n", GetEventKey(event, TRUE), event->type == EVENT_KEYPRESS ? "pressed" : "released"); #endif @@ -512,7 +519,7 @@ static void HandleKeysSpecial(Key key) cheat_input[cheat_input_len++] = letter; cheat_input[cheat_input_len] = '\0'; -#if 0 +#if DEBUG_EVENTS printf("::: '%s' [%d]\n", cheat_input, cheat_input_len); #endif @@ -660,8 +667,18 @@ void HandleKey(Key key, int key_status) element_dropped[pnr] = FALSE; } } +#if 1 + else if (tape.recording && tape.pausing) + { + /* prevent key release events from un-pausing a paused game */ + if (key_status == KEY_PRESSED && + (key_action & KEY_ACTION)) + TapeTogglePause(TAPE_TOGGLE_MANUAL); + } +#else else if (tape.recording && tape.pausing && (key_action & KEY_ACTION)) TapeTogglePause(TAPE_TOGGLE_MANUAL); +#endif } } else @@ -694,19 +711,21 @@ void HandleKey(Key key, int key_status) ToggleFullscreenIfNeeded(); + if (game_status == GAME_MODE_SETUP) + RedrawSetupScreenAfterFullscreenToggle(); + return; } +#if 0 + if (game_status == GAME_MODE_PLAYING && local_player->LevelSolved_GameEnd && + (key == KSYM_Return || key == setup.shortcut.toggle_pause)) +#else if (game_status == GAME_MODE_PLAYING && AllPlayersGone && (key == KSYM_Return || key == setup.shortcut.toggle_pause)) +#endif { -#if 1 GameEnd(); -#else - CloseDoor(DOOR_CLOSE_1); - game_status = GAME_MODE_MAIN; - DrawMainMenu(); -#endif return; } @@ -761,7 +780,7 @@ void HandleKey(Key key, int key_status) key = KSYM_UNDEFINED; } - switch(game_status) + switch (game_status) { case GAME_MODE_PSEUDO_TYPENAME: HandleTypeName(0, key); @@ -773,7 +792,7 @@ void HandleKey(Key key, int key_status) case GAME_MODE_SETUP: case GAME_MODE_INFO: case GAME_MODE_SCORES: - switch(key) + switch (key) { case KSYM_space: case KSYM_Return: @@ -837,38 +856,6 @@ void HandleKey(Key key, int key_status) } break; -#if 0 - case GAME_MODE_SCORES: - switch(key) - { - case KSYM_space: - case KSYM_Return: - HandleHallOfFame(0, 0, 0, 0, MB_MENU_CHOICE); - break; - - case KSYM_Escape: -#if 1 - HandleHallOfFame(0, 0, 0, 0, MB_MENU_LEAVE); -#else - game_status = GAME_MODE_MAIN; - DrawMainMenu(); -#endif - break; - - case KSYM_Page_Up: - HandleHallOfFame(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK); - break; - - case KSYM_Page_Down: - HandleHallOfFame(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK); - break; - - default: - break; - } - break; -#endif - case GAME_MODE_EDITOR: if (!anyTextGadgetActiveOrJustFinished || key == KSYM_Escape) HandleLevelEditorKeyInput(key); @@ -876,7 +863,7 @@ void HandleKey(Key key, int key_status) case GAME_MODE_PLAYING: { - switch(key) + switch (key) { case KSYM_Escape: RequestQuitGame(setup.ask_on_escape); @@ -1041,7 +1028,7 @@ void HandleJoystick() int dx = (left ? -1 : right ? 1 : 0); int dy = (up ? -1 : down ? 1 : 0); - switch(game_status) + switch (game_status) { case GAME_MODE_TITLE: case GAME_MODE_MAIN: @@ -1080,15 +1067,13 @@ void HandleJoystick() if (tape.playing || keyboard) newbutton = ((joy & JOY_BUTTON) != 0); +#if 0 + if (local_player->LevelSolved_GameEnd && newbutton) +#else if (AllPlayersGone && newbutton) +#endif { -#if 1 GameEnd(); -#else - CloseDoor(DOOR_CLOSE_1); - game_status = GAME_MODE_MAIN; - DrawMainMenu(); -#endif return; }