X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=10166129165a69d3708480c5ed4f4409fff4bfdc;hb=e8b94b38c4be1bf3ada57ade9eb3a96adb080775;hp=f478a86bee482edd481952a5cee3325d92fcb776;hpb=a765d70dda7da4500e7005ffa5913e24cd32c0fa;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index f478a86b..10166129 100644 --- a/src/events.c +++ b/src/events.c @@ -171,7 +171,9 @@ void EventLoop(void) has its own synchronization and is CPU friendly, too */ if (game_status == GAME_MODE_PLAYING) + { HandleGameActions(); + } else { SyncDisplay(); @@ -320,7 +322,7 @@ void HandleButtonEvent(ButtonEvent *event) else button_status = MB_RELEASED; - HandleButton(event->x, event->y, button_status); + HandleButton(event->x, event->y, button_status, event->button); } void HandleMotionEvent(MotionEvent *event) @@ -333,7 +335,7 @@ void HandleMotionEvent(MotionEvent *event) motion_status = TRUE; - HandleButton(event->x, event->y, button_status); + HandleButton(event->x, event->y, button_status, button_status); } void HandleKeyEvent(KeyEvent *event) @@ -394,7 +396,7 @@ void HandleClientMessageEvent(ClientMessageEvent *event) CloseAllAndExit(0); } -void HandleButton(int mx, int my, int button) +void HandleButton(int mx, int my, int button, int button_nr) { static int old_mx = 0, old_my = 0; @@ -416,10 +418,18 @@ void HandleButton(int mx, int my, int button) mx = my = -32; /* force mouse event to be outside screen tiles */ } - switch(game_status) + /* do not use scroll wheel button events for anything other than gadgets */ + if (IS_WHEEL_BUTTON(button_nr)) + return; + + switch (game_status) { + case GAME_MODE_TITLE: + HandleTitleScreen(mx, my, 0, 0, button); + break; + case GAME_MODE_MAIN: - HandleMainMenu(mx,my, 0,0, button); + HandleMainMenu(mx, my, 0, 0, button); break; case GAME_MODE_PSEUDO_TYPENAME: @@ -427,11 +437,11 @@ void HandleButton(int mx, int my, int button) break; case GAME_MODE_LEVELS: - HandleChooseLevel(mx,my, 0,0, button); + HandleChooseLevel(mx, my, 0, 0, button); break; case GAME_MODE_SCORES: - HandleHallOfFame(0,0, 0,0, button); + HandleHallOfFame(0, 0, 0, 0, button); break; case GAME_MODE_EDITOR: @@ -439,11 +449,11 @@ void HandleButton(int mx, int my, int button) break; case GAME_MODE_INFO: - HandleInfoScreen(mx,my, 0,0, button); + HandleInfoScreen(mx, my, 0, 0, button); break; case GAME_MODE_SETUP: - HandleSetupScreen(mx,my, 0,0, button); + HandleSetupScreen(mx, my, 0, 0, button); break; case GAME_MODE_PLAYING: @@ -466,7 +476,7 @@ static boolean is_string_suffix(char *string, char *suffix) if (suffix_len > string_len) return FALSE; - return (strcmp(&string[string_len - suffix_len], suffix) == 0); + return (strEqual(&string[string_len - suffix_len], suffix)); } #define MAX_CHEAT_INPUT_LEN 32 @@ -544,10 +554,7 @@ static void HandleKeysSpecial(Key key) { #ifdef DEBUG if (is_string_suffix(cheat_input, ".q")) - for (i = 0; i < MAX_INVENTORY_SIZE; i++) - if (local_player->inventory_size < MAX_INVENTORY_SIZE) - local_player->inventory_element[local_player->inventory_size++] = - EL_DYNAMITE; + DEBUG_SetMaximumDynamite(); #endif } else if (game_status == GAME_MODE_EDITOR) @@ -698,14 +705,28 @@ void HandleKey(Key key, int key_status) TapeTogglePause(TAPE_TOGGLE_MANUAL); } - if (game_status == GAME_MODE_PLAYING) + if (game_status == GAME_MODE_PLAYING && !network_playing) { - if (key == KSYM_5) - game.centered_player_nr_next = -1; + int centered_player_nr_next = -999; + + if (key == setup.shortcut.focus_player_all) + centered_player_nr_next = -1; else for (i = 0; i < MAX_PLAYERS; i++) - if (key == KSYM_1 + i) - game.centered_player_nr_next = i; + if (key == setup.shortcut.focus_player[i]) + centered_player_nr_next = i; + + if (centered_player_nr_next != -999) + { + game.centered_player_nr_next = centered_player_nr_next; + game.set_centered_player = TRUE; + + if (tape.recording) + { + tape.centered_player_nr_next = game.centered_player_nr_next; + tape.set_centered_player = TRUE; + } + } } HandleKeysSpecial(key); @@ -722,6 +743,7 @@ void HandleKey(Key key, int key_status) HandleTypeName(0, key); break; + case GAME_MODE_TITLE: case GAME_MODE_MAIN: case GAME_MODE_LEVELS: case GAME_MODE_SETUP: @@ -735,7 +757,9 @@ void HandleKey(Key key, int key_status) case KSYM_space: #endif case KSYM_Return: - if (game_status == GAME_MODE_MAIN) + if (game_status == GAME_MODE_TITLE) + HandleTitleScreen(0,0, 0,0, MB_MENU_CHOICE); + else if (game_status == GAME_MODE_MAIN) HandleMainMenu(0,0, 0,0, MB_MENU_CHOICE); else if (game_status == GAME_MODE_LEVELS) HandleChooseLevel(0,0, 0,0, MB_MENU_CHOICE); @@ -746,7 +770,9 @@ void HandleKey(Key key, int key_status) break; case KSYM_Escape: - if (game_status == GAME_MODE_LEVELS) + if (game_status == GAME_MODE_TITLE) + HandleTitleScreen(0,0, 0,0, MB_MENU_LEAVE); + else if (game_status == GAME_MODE_LEVELS) HandleChooseLevel(0,0, 0,0, MB_MENU_LEAVE); else if (game_status == GAME_MODE_SETUP) HandleSetupScreen(0,0, 0,0, MB_MENU_LEAVE); @@ -925,7 +951,8 @@ void HandleNoEvent() { if (button_status && game_status != GAME_MODE_PLAYING) { - HandleButton(0, 0, -button_status); + HandleButton(0, 0, -button_status, button_status); + return; } @@ -979,6 +1006,7 @@ void HandleJoystick() switch(game_status) { + case GAME_MODE_TITLE: case GAME_MODE_MAIN: case GAME_MODE_LEVELS: case GAME_MODE_SETUP: @@ -990,7 +1018,9 @@ void HandleJoystick() !DelayReached(&joystickmove_delay, GADGET_FRAME_DELAY)) newbutton = dx = dy = 0; - if (game_status == GAME_MODE_MAIN) + if (game_status == GAME_MODE_TITLE) + HandleTitleScreen(0,0,dx,dy,newbutton ? MB_MENU_CHOICE : MB_MENU_MARK); + else if (game_status == GAME_MODE_MAIN) HandleMainMenu(0,0,dx,dy,newbutton ? MB_MENU_CHOICE : MB_MENU_MARK); else if (game_status == GAME_MODE_LEVELS) HandleChooseLevel(0,0,dx,dy,newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);