fixed bug with handling networking packets if request dialog is active
[rocksndiamonds.git] / src / tools.c
index db2e193a86e80c45197cc96773c87ce532c51b24..e9d11c13c2a1f29398e6b88a8e957781206ac372 100644 (file)
@@ -166,7 +166,7 @@ static struct DoorPartControlInfo door_part_controls[] =
 
 
 /* forward declaration for internal use */
-static void UnmapToolButtons();
+static void UnmapToolButtons(void);
 static void HandleToolButtons(struct GadgetInfo *);
 static int el_act_dir2crm(int, int, int);
 static int el_act2crm(int, int);
@@ -208,7 +208,7 @@ int correctLevelPosY_EM(int ly)
   return ly;
 }
 
-static int getFieldbufferOffsetX_RND()
+static int getFieldbufferOffsetX_RND(void)
 {
   int full_lev_fieldx = lev_fieldx + (BorderElement != EL_EMPTY ? 2 : 0);
   int dx = (ScreenMovDir & (MV_LEFT | MV_RIGHT) ? ScreenGfxPos : 0);
@@ -240,7 +240,7 @@ static int getFieldbufferOffsetX_RND()
   return fx;
 }
 
-static int getFieldbufferOffsetY_RND()
+static int getFieldbufferOffsetY_RND(void)
 {
   int full_lev_fieldy = lev_fieldy + (BorderElement != EL_EMPTY ? 2 : 0);
   int dy = (ScreenMovDir & (MV_UP | MV_DOWN)    ? ScreenGfxPos : 0);
@@ -479,7 +479,7 @@ void SetDrawtoField(int mode)
   }
 }
 
-static void RedrawPlayfield_RND()
+static void RedrawPlayfield_RND(void)
 {
   if (game.envelope_active)
     return;
@@ -488,7 +488,7 @@ static void RedrawPlayfield_RND()
   DrawAllPlayers();
 }
 
-void RedrawPlayfield()
+void RedrawPlayfield(void)
 {
   if (game_status != GAME_MODE_PLAYING)
     return;
@@ -592,7 +592,7 @@ static void DrawMaskedBorderExt(int redraw_mask, int draw_target)
   }
 }
 
-void DrawMaskedBorder_FIELD()
+void DrawMaskedBorder_FIELD(void)
 {
   DrawMaskedBorderExt_FIELD(DRAW_TO_BACKBUFFER);
 }
@@ -711,7 +711,7 @@ void BlitScreenToBitmap(Bitmap *target_bitmap)
   redraw_mask |= REDRAW_FIELD;
 }
 
-void DrawFramesPerSecond()
+static void DrawFramesPerSecond(void)
 {
   char text[100];
   int font_nr = FONT_TEXT_2;
@@ -737,7 +737,7 @@ void DrawFramesPerSecond()
 }
 
 #if DEBUG_FRAME_TIME
-static void PrintFrameTimeDebugging()
+static void PrintFrameTimeDebugging(void)
 {
   static unsigned int last_counter = 0;
   unsigned int counter = Counter();
@@ -790,7 +790,7 @@ static boolean equalRedrawMasks(int mask_1, int mask_2)
   return unifiedRedrawMask(mask_1) == unifiedRedrawMask(mask_2);
 }
 
-void BackToFront()
+void BackToFront(void)
 {
   static int last_redraw_mask = REDRAW_NONE;
 
@@ -982,10 +982,10 @@ static void FadeExt(int fade_mask, int fade_mode, int fade_type)
 
   redraw_mask &= ~fade_mask;
 
-  ClearEventQueue();
+  ClearAutoRepeatKeyEvents();
 }
 
-static void SetScreenStates_BeforeFadingIn()
+static void SetScreenStates_BeforeFadingIn(void)
 {
   // temporarily set screen mode for animations to screen after fading in
   global.anim_status = global.anim_status_next;
@@ -998,7 +998,7 @@ static void SetScreenStates_BeforeFadingIn()
   global.anim_status = GAME_MODE_PSEUDO_FADING;
 }
 
-static void SetScreenStates_AfterFadingIn()
+static void SetScreenStates_AfterFadingIn(void)
 {
   // store new source screen (to use correct masked border for fading)
   gfx.fade_border_source_status = global.border_status;
@@ -1006,7 +1006,7 @@ static void SetScreenStates_AfterFadingIn()
   global.anim_status = global.anim_status_next;
 }
 
-static void SetScreenStates_BeforeFadingOut()
+static void SetScreenStates_BeforeFadingOut(void)
 {
   // store new target screen (to use correct masked border for fading)
   gfx.fade_border_target_status = game_status;
@@ -1019,7 +1019,7 @@ static void SetScreenStates_BeforeFadingOut()
     PrepareFadeBitmap(DRAW_TO_FADE_SOURCE);
 }
 
-static void SetScreenStates_AfterFadingOut()
+static void SetScreenStates_AfterFadingOut(void)
 {
   global.border_status = game_status;
 }
@@ -1086,28 +1086,28 @@ static void FadeSetLeaveNext(struct TitleFadingInfo fading_leave, boolean set)
     fading = fading_leave_stored;
 }
 
-void FadeSetEnterMenu()
+void FadeSetEnterMenu(void)
 {
   fading = menu.enter_menu;
 
   FadeSetLeaveNext(fading, TRUE);      /* (keep same fade mode) */
 }
 
-void FadeSetLeaveMenu()
+void FadeSetLeaveMenu(void)
 {
   fading = menu.leave_menu;
 
   FadeSetLeaveNext(fading, TRUE);      /* (keep same fade mode) */
 }
 
-void FadeSetEnterScreen()
+void FadeSetEnterScreen(void)
 {
   fading = menu.enter_screen[game_status];
 
   FadeSetLeaveNext(menu.leave_screen[game_status], TRUE);      /* store */
 }
 
-void FadeSetNextScreen()
+void FadeSetNextScreen(void)
 {
   fading = menu.next_screen[game_status];
 
@@ -1115,7 +1115,7 @@ void FadeSetNextScreen()
   // FadeSetLeaveNext(fading, TRUE);   /* (keep same fade mode) */
 }
 
-void FadeSetLeaveScreen()
+void FadeSetLeaveScreen(void)
 {
   FadeSetLeaveNext(menu.leave_screen[game_status], FALSE);     /* recall */
 }
@@ -1130,24 +1130,24 @@ void FadeSetFromType(int type)
     FadeSetLeaveMenu();
 }
 
-void FadeSetDisabled()
+void FadeSetDisabled(void)
 {
   static struct TitleFadingInfo fading_none = { FADE_MODE_NONE, -1, -1, -1 };
 
   fading = fading_none;
 }
 
-void FadeSkipNextFadeIn()
+void FadeSkipNextFadeIn(void)
 {
   FadeExt(0, FADE_MODE_SKIP_FADE_IN, FADE_TYPE_SKIP);
 }
 
-void FadeSkipNextFadeOut()
+void FadeSkipNextFadeOut(void)
 {
   FadeExt(0, FADE_MODE_SKIP_FADE_OUT, FADE_TYPE_SKIP);
 }
 
-Bitmap *getBitmapFromGraphicOrDefault(int graphic, int default_graphic)
+static Bitmap *getBitmapFromGraphicOrDefault(int graphic, int default_graphic)
 {
   boolean redefined = getImageListEntryFromImageID(graphic)->redefined;
 
@@ -1157,12 +1157,12 @@ Bitmap *getBitmapFromGraphicOrDefault(int graphic, int default_graphic)
          graphic_info[default_graphic].bitmap);
 }
 
-Bitmap *getBackgroundBitmap(int graphic)
+static Bitmap *getBackgroundBitmap(int graphic)
 {
   return getBitmapFromGraphicOrDefault(graphic, IMG_BACKGROUND);
 }
 
-Bitmap *getGlobalBorderBitmap(int graphic)
+static Bitmap *getGlobalBorderBitmap(int graphic)
 {
   return getBitmapFromGraphicOrDefault(graphic, IMG_GLOBAL_BORDER);
 }
@@ -1213,7 +1213,7 @@ void SetDoorBackgroundImage(int graphic)
   SetDoorBackgroundBitmap(getBackgroundBitmap(graphic));
 }
 
-void SetPanelBackground()
+void SetPanelBackground(void)
 {
   struct GraphicInfo *gfx = &graphic_info[IMG_BACKGROUND_PANEL];
 
@@ -1270,7 +1270,7 @@ static int vxsize_last = -1, vysize_last = -1;
 static int ex_last = -1, ey_last = -1;
 static int exsize_last = -1, eysize_last = -1;
 
-boolean CheckIfGlobalBorderHasChanged()
+boolean CheckIfGlobalBorderHasChanged(void)
 {
   // if game status has not changed, global border has not changed either
   if (game_status == game_status_last)
@@ -1282,7 +1282,10 @@ boolean CheckIfGlobalBorderHasChanged()
   return (global_border_bitmap_last != global_border_bitmap);
 }
 
-boolean CheckIfGlobalBorderRedrawIsNeeded()
+#define ONLY_REDRAW_GLOBAL_BORDER_IF_NEEDED            0
+
+#if ONLY_REDRAW_GLOBAL_BORDER_IF_NEEDED
+static boolean CheckIfGlobalBorderRedrawIsNeeded(void)
 {
   // if game status has not changed, nothing has to be redrawn
   if (game_status == game_status_last)
@@ -1318,8 +1321,9 @@ boolean CheckIfGlobalBorderRedrawIsNeeded()
 
   return FALSE;
 }
+#endif
 
-void RedrawGlobalBorderFromBitmap(Bitmap *bitmap)
+static void RedrawGlobalBorderFromBitmap(Bitmap *bitmap)
 {
   if (bitmap)
     BlitBitmap(bitmap, backbuffer, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
@@ -1327,7 +1331,7 @@ void RedrawGlobalBorderFromBitmap(Bitmap *bitmap)
     ClearRectangle(backbuffer, 0, 0, WIN_XSIZE, WIN_YSIZE);
 }
 
-void RedrawGlobalBorder()
+void RedrawGlobalBorder(void)
 {
   Bitmap *bitmap = getGlobalBorderBitmapFromStatus(game_status);
 
@@ -1336,9 +1340,7 @@ void RedrawGlobalBorder()
   redraw_mask = REDRAW_ALL;
 }
 
-#define ONLY_REDRAW_GLOBAL_BORDER_IF_NEEDED            0
-
-static void RedrawGlobalBorderIfNeeded()
+static void RedrawGlobalBorderIfNeeded(void)
 {
 #if ONLY_REDRAW_GLOBAL_BORDER_IF_NEEDED
   if (game_status == game_status_last)
@@ -1417,7 +1419,7 @@ static void RedrawGlobalBorderIfNeeded()
   eysize_last = EYSIZE;
 }
 
-void ClearField()
+void ClearField(void)
 {
   RedrawGlobalBorderIfNeeded();
 
@@ -1442,7 +1444,7 @@ void MarkTileDirty(int x, int y)
   redraw_mask |= REDRAW_FIELD;
 }
 
-void SetBorderElement()
+void SetBorderElement(void)
 {
   int x, y;
 
@@ -1974,8 +1976,8 @@ static void DrawGraphicShifted(int x, int y, int dx, int dy,
     DrawGraphicShiftedNormal(x, y, dx, dy, graphic, frame, cut_mode,mask_mode);
 }
 
-void DrawGraphicShiftedThruMask(int x, int y, int dx, int dy, int graphic,
-                               int frame, int cut_mode)
+static void DrawGraphicShiftedThruMask(int x, int y, int dx, int dy,
+                                      int graphic, int frame, int cut_mode)
 {
   DrawGraphicShifted(x, y, dx, dy, graphic, frame, cut_mode, USE_MASKING);
 }
@@ -2627,15 +2629,15 @@ void DrawSizedWallParts_MM(int x, int y, int element, int tilesize,
                      element, tilesize, el2edimg, masked, element_bits_draw);
 }
 
-void DrawSizedWall_MM(int dst_x, int dst_y, int element, int tilesize,
-                     int (*el2img_function)(int))
+static void DrawSizedWall_MM(int dst_x, int dst_y, int element, int tilesize,
+                            int (*el2img_function)(int))
 {
   DrawSizedWallExt_MM(dst_x, dst_y, element, tilesize, el2img_function, FALSE,
                      0x000f);
 }
 
-void DrawSizedElementExt(int x, int y, int element, int tilesize,
-                        boolean masked)
+static void DrawSizedElementExt(int x, int y, int element, int tilesize,
+                               boolean masked)
 {
   if (IS_MM_WALL(element))
   {
@@ -2696,9 +2698,9 @@ void DrawMiniElementOrWall(int sx, int sy, int scroll_x, int scroll_y)
     DrawMiniGraphic(sx, sy, el2edimg(getBorderElement(x, y)));
 }
 
-void DrawEnvelopeBackgroundTiles(int graphic, int startx, int starty,
-                                int x, int y, int xsize, int ysize,
-                                int tile_width, int tile_height)
+static void DrawEnvelopeBackgroundTiles(int graphic, int startx, int starty,
+                                       int x, int y, int xsize, int ysize,
+                                       int tile_width, int tile_height)
 {
   Bitmap *src_bitmap;
   int src_x, src_y;
@@ -2735,8 +2737,9 @@ void DrawEnvelopeBackgroundTiles(int graphic, int startx, int starty,
               dst_x, dst_y);
 }
 
-void DrawEnvelopeBackground(int graphic, int startx, int starty,
-                           int x, int y, int xsize, int ysize, int font_nr)
+static void DrawEnvelopeBackground(int graphic, int startx, int starty,
+                                  int x, int y, int xsize, int ysize,
+                                  int font_nr)
 {
   int font_width  = getFontWidth(font_nr);
   int font_height = getFontHeight(font_nr);
@@ -2745,7 +2748,7 @@ void DrawEnvelopeBackground(int graphic, int startx, int starty,
                              font_width, font_height);
 }
 
-void AnimateEnvelope(int envelope_nr, int anim_mode, int action)
+static void AnimateEnvelope(int envelope_nr, int anim_mode, int action)
 {
   int graphic = IMG_BACKGROUND_ENVELOPE_1 + envelope_nr;
   Bitmap *src_bitmap = graphic_info[graphic].bitmap;
@@ -2803,7 +2806,7 @@ void AnimateEnvelope(int envelope_nr, int anim_mode, int action)
     SkipUntilDelayReached(&anim_delay, anim_delay_value, &i, last_frame);
   }
 
-  ClearEventQueue();
+  ClearAutoRepeatKeyEvents();
 }
 
 void ShowEnvelope(int envelope_nr)
@@ -2917,7 +2920,7 @@ static void setRequestPosition(int *x, int *y, boolean add_border_size)
   setRequestPositionExt(x, y, request.width, request.height, add_border_size);
 }
 
-void DrawEnvelopeRequest(char *text)
+static void DrawEnvelopeRequest(char *text)
 {
   char *text_final = text;
   char *text_door_style = NULL;
@@ -3004,7 +3007,7 @@ void DrawEnvelopeRequest(char *text)
     free(text_door_style);
 }
 
-void AnimateEnvelopeRequest(int anim_mode, int action)
+static void AnimateEnvelopeRequest(int anim_mode, int action)
 {
   int graphic = IMG_BACKGROUND_REQUEST;
   boolean draw_masked = graphic_info[graphic].draw_masked;
@@ -3088,10 +3091,10 @@ void AnimateEnvelopeRequest(int anim_mode, int action)
     SkipUntilDelayReached(&anim_delay, anim_delay_value, &i, last_frame);
   }
 
-  ClearEventQueue();
+  ClearAutoRepeatKeyEvents();
 }
 
-void ShowEnvelopeRequest(char *text, unsigned int req_state, int action)
+static void ShowEnvelopeRequest(char *text, unsigned int req_state, int action)
 {
   int graphic = IMG_BACKGROUND_REQUEST;
   int sound_opening = SND_REQUEST_OPENING;
@@ -3172,7 +3175,7 @@ void ShowEnvelopeRequest(char *text, unsigned int req_state, int action)
     SetDrawtoField(DRAW_TO_FIELDBUFFER);
 }
 
-void DrawPreviewElement(int dst_x, int dst_y, int element, int tilesize)
+static void DrawPreviewElement(int dst_x, int dst_y, int element, int tilesize)
 {
   if (IS_MM_WALL(element))
   {
@@ -3510,7 +3513,7 @@ static void DrawPreviewLevelExt(boolean restart)
   }
 }
 
-void DrawPreviewPlayers()
+static void DrawPreviewPlayers(void)
 {
   if (game_status != GAME_MODE_MAIN)
     return;
@@ -3585,13 +3588,13 @@ void DrawPreviewPlayers()
   }
 }
 
-void DrawPreviewLevelInitial()
+void DrawPreviewLevelInitial(void)
 {
   DrawPreviewLevelExt(TRUE);
   DrawPreviewPlayers();
 }
 
-void DrawPreviewLevelAnimation()
+void DrawPreviewLevelAnimation(void)
 {
   DrawPreviewLevelExt(FALSE);
 }
@@ -3612,7 +3615,7 @@ static void DrawNetworkPlayer(int x, int y, int player_nr, int tile_size,
   DrawText(x + xoffset_text, y + yoffset_text, player_name, font_nr);
 }
 
-void DrawNetworkPlayersExt(boolean force)
+static void DrawNetworkPlayersExt(boolean force)
 {
   if (game_status != GAME_MODE_MAIN)
     return;
@@ -3679,12 +3682,12 @@ void DrawNetworkPlayersExt(boolean force)
   }
 }
 
-void DrawNetworkPlayers()
+void DrawNetworkPlayers(void)
 {
   DrawNetworkPlayersExt(FALSE);
 }
 
-void ClearNetworkPlayers()
+void ClearNetworkPlayers(void)
 {
   DrawNetworkPlayersExt(TRUE);
 }
@@ -3826,7 +3829,7 @@ static boolean equalGraphics(int graphic1, int graphic2)
          g1->anim_mode   == g2->anim_mode);
 }
 
-void DrawAllPlayers()
+void DrawAllPlayers(void)
 {
   int i;
 
@@ -4177,7 +4180,7 @@ void DrawPlayer(struct PlayerInfo *player)
 
 /* ------------------------------------------------------------------------- */
 
-void WaitForEventToContinue()
+void WaitForEventToContinue(void)
 {
   boolean still_wait = TRUE;
 
@@ -4200,7 +4203,7 @@ void WaitForEventToContinue()
     {
       switch (event.type)
       {
-       case EVENT_BUTTONPRESS:
+       case EVENT_BUTTONRELEASE:
        case EVENT_KEYPRESS:
 #if defined(TARGET_SDL2)
         case SDL_CONTROLLERBUTTONDOWN:
@@ -4240,6 +4243,8 @@ static int RequestHandleEvents(unsigned int req_state)
   int sx, sy;
   int result;
 
+  game.request_active = TRUE;
+
   setRequestPosition(&sx, &sy, FALSE);
 
   button_status = MB_RELEASED;
@@ -4540,6 +4545,8 @@ static int RequestHandleEvents(unsigned int req_state)
     BackToFront();
   }
 
+  game.request_active = FALSE;
+
   return result;
 }
 
@@ -4552,7 +4559,7 @@ static boolean RequestDoor(char *text, unsigned int req_state)
   int result;
   int ty;
 
-  if (maxWordLengthInString(text) > MAX_REQUEST_LINE_FONT1_LEN)
+  if (maxWordLengthInRequestString(text) > MAX_REQUEST_LINE_FONT1_LEN)
   {
     max_request_line_len = MAX_REQUEST_LINE_FONT2_LEN;
     font_nr = FONT_TEXT_1;
@@ -4838,7 +4845,7 @@ static int compareDoorPartOrderInfo(const void *object1, const void *object2)
   return compare_result;
 }
 
-void InitGraphicCompatibilityInfo_Doors()
+void InitGraphicCompatibilityInfo_Doors(void)
 {
   struct
   {
@@ -4995,7 +5002,7 @@ void InitGraphicCompatibilityInfo_Doors()
   }
 }
 
-void InitDoors()
+void InitDoors(void)
 {
   int i;
 
@@ -5060,7 +5067,7 @@ unsigned int CloseDoor(unsigned int door_state)
   return MoveDoor(door_state);
 }
 
-unsigned int GetDoorState()
+unsigned int GetDoorState(void)
 {
   return MoveDoor(DOOR_GET_STATE);
 }
@@ -5070,7 +5077,7 @@ unsigned int SetDoorState(unsigned int door_state)
   return MoveDoor(door_state | DOOR_SET_STATE);
 }
 
-int euclid(int a, int b)
+static int euclid(int a, int b)
 {
   return (b ? euclid(b, a % b) : a);
 }
@@ -5429,12 +5436,12 @@ unsigned int MoveDoor(unsigned int door_state)
   DrawMaskedBorder(REDRAW_DOOR_1);
   DrawMaskedBorder(REDRAW_DOOR_2);
 
-  ClearEventQueue();
+  ClearAutoRepeatKeyEvents();
 
   return (door1 | door2);
 }
 
-static boolean useSpecialEditorDoor()
+static boolean useSpecialEditorDoor(void)
 {
   int graphic = IMG_GLOBAL_BORDER_EDITOR;
   boolean redefined = getImageListEntryFromImageID(graphic)->redefined;
@@ -5457,7 +5464,7 @@ static boolean useSpecialEditorDoor()
   return TRUE;
 }
 
-void DrawSpecialEditorDoor()
+void DrawSpecialEditorDoor(void)
 {
   struct GraphicInfo *gfx1 = &graphic_info[IMG_DOOR_2_TOP_BORDER_CORRECTION];
   int top_border_width = gfx1->width;
@@ -5480,7 +5487,7 @@ void DrawSpecialEditorDoor()
   redraw_mask |= REDRAW_ALL;
 }
 
-void UndrawSpecialEditorDoor()
+void UndrawSpecialEditorDoor(void)
 {
   struct GraphicInfo *gfx1 = &graphic_info[IMG_DOOR_2_TOP_BORDER_CORRECTION];
   int top_border_width = gfx1->width;
@@ -5555,7 +5562,7 @@ static struct
   }
 };
 
-void CreateToolButtons()
+void CreateToolButtons(void)
 {
   int i;
 
@@ -5651,7 +5658,7 @@ void CreateToolButtons()
   }
 }
 
-void FreeToolButtons()
+void FreeToolButtons(void)
 {
   int i;
 
@@ -5659,7 +5666,7 @@ void FreeToolButtons()
     FreeGadget(tool_gadget[i]);
 }
 
-static void UnmapToolButtons()
+static void UnmapToolButtons(void)
 {
   int i;
 
@@ -8113,7 +8120,7 @@ int getBeltSwitchElementFromBeltNrAndBeltDir(int belt_nr, int belt_dir)
   return getBeltSwitchElementFromBeltNrAndBeltDirNr(belt_nr, belt_dir_nr);
 }
 
-boolean getTeamMode_EM()
+boolean getTeamMode_EM(void)
 {
   return game.team_mode || network_playing;
 }
@@ -8290,10 +8297,12 @@ inline static void set_crumbled_graphics_EM(struct GraphicInfo_EM *g_em,
   }
 }
 
+#if 0
 void ResetGfxAnimation_EM(int x, int y, int tile)
 {
   GfxFrame[x][y] = 0;
 }
+#endif
 
 void SetGfxAnimation_EM(struct GraphicInfo_EM *g_em,
                        int tile, int frame_em, int x, int y)
@@ -9039,10 +9048,10 @@ void InitGraphicInfo_EM(void)
 #endif
 }
 
-void CheckSaveEngineSnapshot_EM(byte action[MAX_PLAYERS], int frame,
-                               boolean any_player_moving,
-                               boolean any_player_snapping,
-                               boolean any_player_dropping)
+static void CheckSaveEngineSnapshot_EM(byte action[MAX_PLAYERS], int frame,
+                                      boolean any_player_moving,
+                                      boolean any_player_snapping,
+                                      boolean any_player_dropping)
 {
   if (frame == 0 && !any_player_dropping)
   {
@@ -9060,8 +9069,8 @@ void CheckSaveEngineSnapshot_EM(byte action[MAX_PLAYERS], int frame,
   }
 }
 
-void CheckSaveEngineSnapshot_SP(boolean murphy_is_waiting,
-                               boolean murphy_is_dropping)
+static void CheckSaveEngineSnapshot_SP(boolean murphy_is_waiting,
+                                      boolean murphy_is_dropping)
 {
   if (murphy_is_waiting)
   {
@@ -9079,8 +9088,8 @@ void CheckSaveEngineSnapshot_SP(boolean murphy_is_waiting,
   }
 }
 
-void CheckSaveEngineSnapshot_MM(boolean element_clicked,
-                               boolean button_released)
+static void CheckSaveEngineSnapshot_MM(boolean element_clicked,
+                                      boolean button_released)
 {
   if (button_released)
   {
@@ -9169,7 +9178,7 @@ void PlayMenuSoundExt(int sound)
     PlaySound(sound);
 }
 
-void PlayMenuSound()
+void PlayMenuSound(void)
 {
   PlayMenuSoundExt(menu.sound[game_status]);
 }
@@ -9202,7 +9211,7 @@ void PlayMenuSoundIfLoopExt(int sound)
     PlaySoundLoop(sound);
 }
 
-void PlayMenuSoundIfLoop()
+void PlayMenuSoundIfLoop(void)
 {
   PlayMenuSoundIfLoopExt(menu.sound[game_status]);
 }
@@ -9215,10 +9224,13 @@ void PlayMenuMusicExt(int music)
   if (!setup.sound_music)
     return;
 
-  PlayMusic(music);
+  if (IS_LOOP_MUSIC(music))
+    PlayMusicLoop(music);
+  else
+    PlayMusic(music);
 }
 
-void PlayMenuMusic()
+void PlayMenuMusic(void)
 {
   char *curr_music = getCurrentlyPlayingMusicFilename();
   char *next_music = getMusicInfoEntryFilename(menu.music[game_status]);
@@ -9227,18 +9239,18 @@ void PlayMenuMusic()
     PlayMenuMusicExt(menu.music[game_status]);
 }
 
-void PlayMenuSoundsAndMusic()
+void PlayMenuSoundsAndMusic(void)
 {
   PlayMenuSound();
   PlayMenuMusic();
 }
 
-static void FadeMenuSounds()
+static void FadeMenuSounds(void)
 {
   FadeSounds();
 }
 
-static void FadeMenuMusic()
+static void FadeMenuMusic(void)
 {
   char *curr_music = getCurrentlyPlayingMusicFilename();
   char *next_music = getMusicInfoEntryFilename(menu.music[game_status]);
@@ -9247,27 +9259,27 @@ static void FadeMenuMusic()
     FadeMusic();
 }
 
-void FadeMenuSoundsAndMusic()
+void FadeMenuSoundsAndMusic(void)
 {
   FadeMenuSounds();
   FadeMenuMusic();
 }
 
-void PlaySoundActivating()
+void PlaySoundActivating(void)
 {
 #if 0
   PlaySound(SND_MENU_ITEM_ACTIVATING);
 #endif
 }
 
-void PlaySoundSelecting()
+void PlaySoundSelecting(void)
 {
 #if 0
   PlaySound(SND_MENU_ITEM_SELECTING);
 #endif
 }
 
-void ToggleFullscreenOrChangeWindowScalingIfNeeded()
+void ToggleFullscreenOrChangeWindowScalingIfNeeded(void)
 {
   boolean change_fullscreen = (setup.fullscreen !=
                               video.fullscreen_enabled);
@@ -9329,8 +9341,8 @@ void ToggleFullscreenOrChangeWindowScalingIfNeeded()
   }
 }
 
-void JoinRectangles(int *x, int *y, int *width, int *height,
-                   int x2, int y2, int width2, int height2)
+static void JoinRectangles(int *x, int *y, int *width, int *height,
+                          int x2, int y2, int width2, int height2)
 {
   // do not join with "off-screen" rectangle
   if (x2 == -1 || y2 == -1)
@@ -9386,12 +9398,19 @@ void SetFontStatus(int game_status_new)
   }
 }
 
-void ResetFontStatus()
+void ResetFontStatus(void)
 {
   SetFontStatus(-1);
 }
 
-boolean CheckIfPlayfieldViewportHasChanged()
+void SetLevelSetInfo(char *identifier, int level_nr)
+{
+  setString(&levelset.identifier, identifier);
+
+  levelset.level_nr = level_nr;
+}
+
+boolean CheckIfPlayfieldViewportHasChanged(void)
 {
   // if game status has not changed, playfield viewport has not changed either
   if (game_status == game_status_last)
@@ -9410,13 +9429,13 @@ boolean CheckIfPlayfieldViewportHasChanged()
          new_full_sysize != FULL_SYSIZE);
 }
 
-boolean CheckIfGlobalBorderOrPlayfieldViewportHasChanged()
+boolean CheckIfGlobalBorderOrPlayfieldViewportHasChanged(void)
 {
   return (CheckIfGlobalBorderHasChanged() ||
          CheckIfPlayfieldViewportHasChanged());
 }
 
-void ChangeViewportPropertiesIfNeeded()
+void ChangeViewportPropertiesIfNeeded(void)
 {
   boolean use_mini_tilesize = (level.game_engine_type == GAME_ENGINE_TYPE_MM ?
                               FALSE : setup.small_game_graphics);