cleanup of screen fading code
authorHolger Schemel <info@artsoft.org>
Tue, 9 Jun 2015 22:01:16 +0000 (00:01 +0200)
committerHolger Schemel <info@artsoft.org>
Tue, 9 Jun 2015 22:01:16 +0000 (00:01 +0200)
src/editor.c
src/game.c
src/libgame/system.c
src/libgame/system.h
src/screens.c
src/screens.h
src/tools.c

index 6414dbd4b5619682cb9771fe62c231819d7d9597..9f8182d6702911351761230e8e86c9580140e5b3 100644 (file)
@@ -7612,8 +7612,6 @@ void InitZoomLevelSettings()
   MAX_ED_FIELDY = getMaxEdFieldY(FALSE);
 }
 
-static boolean playfield_area_changed = FALSE;
-
 void DrawLevelEd()
 {
   int fade_mask = REDRAW_FIELD;
@@ -7652,8 +7650,6 @@ void DrawLevelEd()
 
   InitZoomLevelSettings();
 
-  playfield_area_changed = DrawingAreaChanged();
-
   OpenDoor(DOOR_OPEN_1 | DOOR_OPEN_2 | DOOR_NO_DELAY);
 
 #if DEBUG
@@ -7712,11 +7708,6 @@ void DrawLevelEd()
 
   DrawEditModeWindow();
 
-  fade_mask = (playfield_area_changed ? REDRAW_ALL : REDRAW_FIELD);
-
-  if (CheckIfRedrawGlobalBorderIsNeeded())
-    fade_mask = REDRAW_ALL;
-
   FadeIn(fade_mask);
 
   /* copy actual editor door content to door double buffer for OpenDoor() */
@@ -12291,7 +12282,7 @@ void RequestExitLevelEditor(boolean ask_if_level_has_changed,
 
     game_status = GAME_MODE_MAIN;
 
-    DrawAndFadeInMainMenu(playfield_area_changed ? REDRAW_ALL : REDRAW_FIELD);
+    DrawMainMenu();
   }
   else
   {
index 1f0270d9051fbd850bbae2b27fd1deb94b8b82d8..73505d24269569b52cb9927acfbd9a36a62f18a1 100644 (file)
@@ -4424,7 +4424,7 @@ void GameEnd()
   {
     game_status = GAME_MODE_MAIN;
 
-    DrawAndFadeInMainMenu(REDRAW_FIELD);
+    DrawMainMenu();
 
     return;
   }
@@ -4435,7 +4435,7 @@ void GameEnd()
 
     game_status = GAME_MODE_MAIN;
 
-    DrawAndFadeInMainMenu(REDRAW_FIELD);
+    DrawMainMenu();
 
     return;
   }
@@ -4454,9 +4454,6 @@ void GameEnd()
   {
     game_status = GAME_MODE_SCORES;
 
-    /* needed if different viewport properties defined for scores */
-    ChangeViewportPropertiesIfNeeded();
-
     DrawHallOfFame(hi_pos);
 
     if (raise_level)
@@ -4477,7 +4474,7 @@ void GameEnd()
       TapeErase();
     }
 
-    DrawAndFadeInMainMenu(REDRAW_FIELD);
+    DrawMainMenu();
   }
 }
 
@@ -14489,13 +14486,13 @@ void RequestQuitGameExt(boolean skip_request, boolean quick_quit, char *message)
 
        game_status = GAME_MODE_MAIN;
 
-       DrawAndFadeInMainMenu(REDRAW_FIELD);
+       DrawMainMenu();
       }
       else
       {
        game_status = GAME_MODE_MAIN;
 
-       DrawAndFadeInMainMenu(REDRAW_FIELD);
+       DrawMainMenu();
       }
     }
   }
index 3bd825fd6fd36c6077ef1bc2de5b8db933b72948..2efe6dd991da2d4c8d380aca2f2ddcbc2dd9d4e8 100644 (file)
@@ -171,8 +171,6 @@ void InitGfxFieldInfo(int sx, int sy, int sxsize, int sysize,
 
   gfx.field_save_buffer = field_save_buffer;
 
-  gfx.drawing_area_changed = FALSE;
-
   SetDrawDeactivationMask(REDRAW_NONE);                /* do not deactivate drawing */
   SetDrawBackgroundMask(REDRAW_NONE);          /* deactivate masked drawing */
 }
@@ -501,16 +499,6 @@ boolean DrawingOnBackground(int x, int y)
          CheckDrawingArea(x, y, 1, 1, gfx.draw_background_mask));
 }
 
-boolean DrawingAreaChanged()
-{
-  int drawing_area_changed = gfx.drawing_area_changed;
-
-  // reset flag for change of drawing area after querying it
-  gfx.drawing_area_changed = FALSE;
-
-  return drawing_area_changed;
-}
-
 static boolean InClippedRectangle(Bitmap *bitmap, int *x, int *y,
                                  int *width, int *height, boolean is_dest)
 {
index df223fe7d0e89b5124d223b246487524ed21b21b..6eca6f9b5e105b88d3840dbdf5bbb149a7379b9a 100644 (file)
@@ -786,8 +786,6 @@ struct GfxInfo
   int draw_deactivation_mask;
   int draw_background_mask;
 
-  boolean drawing_area_changed;
-
   Bitmap *field_save_buffer;
 
   Bitmap *background_bitmap;
index 99dedcefa3c9d446f5538bf5e8b5aa5b73700da4..83e508ea3af63c962b4004828b9ae75add0f0d1d 100644 (file)
@@ -174,10 +174,8 @@ static void HandleChooseTree(int, int, int, int, int, TreeInfo **);
 static void DrawChooseLevelSet(void);
 static void DrawChooseLevelNr(void);
 static void DrawInfoScreen(void);
-static void DrawAndFadeInInfoScreen(int);
 static void DrawSetupScreen(void);
 
-static void DrawInfoScreenExt(int, int);
 static void DrawInfoScreen_NotAvailable(char *, char *);
 static void DrawInfoScreen_HelpAnim(int, int, boolean);
 static void DrawInfoScreen_HelpText(int, int, int, int);
@@ -1368,10 +1366,11 @@ boolean CheckTitleScreen(boolean levelset_has_changed)
   return (show_titlescreen && num_title_screens > 0);
 }
 
-void DrawMainMenuExt(int fade_mask, boolean do_fading)
+void DrawMainMenu()
 {
   static LevelDirTree *leveldir_last_valid = NULL;
   boolean levelset_has_changed = FALSE;
+  int fade_mask = REDRAW_FIELD;
 
   LimitScreenUpdates(FALSE);
 
@@ -1440,9 +1439,6 @@ void DrawMainMenuExt(int fade_mask, boolean do_fading)
 
   SetDrawtoField(DRAW_BACKBUFFER);
 
-  /* reset drawing area change flag */
-  DrawingAreaChanged();
-
   if (CheckTitleScreen(levelset_has_changed))
   {
     game_status = GAME_MODE_TITLE;
@@ -1521,16 +1517,6 @@ void DrawMainMenuExt(int fade_mask, boolean do_fading)
   OpenDoor(DOOR_CLOSE_1 | DOOR_OPEN_2);
 }
 
-void DrawAndFadeInMainMenu(int fade_mask)
-{
-  DrawMainMenuExt(fade_mask, TRUE);
-}
-
-void DrawMainMenu()
-{
-  DrawMainMenuExt(REDRAW_ALL, FALSE);
-}
-
 static void gotoTopLevelDir()
 {
   /* move upwards until inside (but not above) top level directory */
@@ -1567,7 +1553,6 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button)
   static int title_screen_nr = 0;
   static int last_sound = -1, last_music = -1;
   boolean return_to_main_menu = FALSE;
-  boolean use_fading_main_menu = TRUE;
   struct TitleControlInfo *tci;
   struct TitleFadingInfo fading_default;
   struct TitleFadingInfo fading_last = fading;
@@ -1642,7 +1627,6 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button)
   if (button == MB_MENU_LEAVE)
   {
     return_to_main_menu = TRUE;
-    use_fading_main_menu = FALSE;
   }
   else if (button == MB_MENU_CHOICE)
   {
@@ -1651,7 +1635,7 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button)
       FadeSetEnterScreen();
 
       info_mode = INFO_MODE_MAIN;
-      DrawAndFadeInInfoScreen(REDRAW_FIELD);
+      DrawInfoScreen();
 
       return;
     }
@@ -1712,19 +1696,20 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button)
   {
     SetMouseCursor(CURSOR_DEFAULT);
 
+    /* force full menu screen redraw after displaying title screens */
+    redraw_mask = REDRAW_ALL;
+
     if (game_status == GAME_MODE_INFO)
     {
-      int fade_mask = (num_title_screens == 0 ? REDRAW_FIELD : REDRAW_ALL);
-
       info_mode = INFO_MODE_MAIN;
 
-      DrawInfoScreenExt(fade_mask, use_fading_main_menu);
+      DrawInfoScreen();
     }
     else       /* default: return to main menu */
     {
       game_status = GAME_MODE_MAIN;
 
-      DrawMainMenuExt(REDRAW_ALL, use_fading_main_menu);
+      DrawMainMenu();
     }
   }
 }
@@ -1904,13 +1889,6 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
       {
        game_status = GAME_MODE_SCORES;
 
-#if 1
-       /* required before door position may be changed in next step */
-       CloseDoor(DOOR_CLOSE_ALL);
-#endif
-
-       ChangeViewportPropertiesIfNeeded();
-
        DrawHallOfFame(-1);
       }
       else if (pos == MAIN_CONTROL_EDITOR)
@@ -2025,7 +2003,7 @@ static void execExitInfo()
 {
   game_status = GAME_MODE_MAIN;
 
-  DrawMainMenuExt(REDRAW_FIELD, FALSE);
+  DrawMainMenu();
 }
 
 static struct TokenInfo info_info_main[] =
@@ -2143,10 +2121,14 @@ static void drawMenuInfoList(int first_entry, int num_page_entries,
   }
 }
 
-static void DrawInfoScreen_Main(int fade_mask, boolean do_fading)
+static void DrawInfoScreen_Main()
 {
+  int fade_mask = REDRAW_FIELD;
   int i;
 
+  if (redraw_mask & REDRAW_ALL)
+    fade_mask = REDRAW_ALL;
+
   if (CheckIfRedrawGlobalBorderIsNeeded())
     fade_mask = REDRAW_ALL;
 
@@ -2749,7 +2731,7 @@ void HandleInfoScreen_Elements(int button)
       FadeSoundsAndMusic();
 
       info_mode = INFO_MODE_MAIN;
-      DrawAndFadeInInfoScreen(REDRAW_FIELD);
+      DrawInfoScreen();
 
       return;
     }
@@ -2848,7 +2830,7 @@ void HandleInfoScreen_Music(int button)
       FadeSoundsAndMusic();
 
       info_mode = INFO_MODE_MAIN;
-      DrawAndFadeInInfoScreen(REDRAW_FIELD);
+      DrawInfoScreen();
 
       return;
     }
@@ -3152,7 +3134,7 @@ void HandleInfoScreen_Credits(int button)
       FadeSoundsAndMusic();
 
       info_mode = INFO_MODE_MAIN;
-      DrawAndFadeInInfoScreen(REDRAW_FIELD);
+      DrawInfoScreen();
 
       return;
     }
@@ -3231,7 +3213,7 @@ void HandleInfoScreen_Program(int button)
     FadeSoundsAndMusic();
 
     info_mode = INFO_MODE_MAIN;
-    DrawAndFadeInInfoScreen(REDRAW_FIELD);
+    DrawInfoScreen();
   }
   else
   {
@@ -3406,7 +3388,7 @@ void HandleInfoScreen_Version(int button)
     FadeSoundsAndMusic();
 
     info_mode = INFO_MODE_MAIN;
-    DrawAndFadeInInfoScreen(REDRAW_FIELD);
+    DrawInfoScreen();
   }
   else
   {
@@ -3494,7 +3476,7 @@ void HandleInfoScreen_LevelSet(int button)
     FadeSoundsAndMusic();
 
     info_mode = INFO_MODE_MAIN;
-    DrawAndFadeInInfoScreen(REDRAW_FIELD);
+    DrawInfoScreen();
   }
   else
   {
@@ -3502,7 +3484,7 @@ void HandleInfoScreen_LevelSet(int button)
   }
 }
 
-static void DrawInfoScreenExt(int fade_mask, boolean do_fading)
+static void DrawInfoScreen()
 {
   SetMainBackgroundImage(IMG_BACKGROUND_INFO);
 
@@ -3521,7 +3503,7 @@ static void DrawInfoScreenExt(int fade_mask, boolean do_fading)
   else if (info_mode == INFO_MODE_LEVELSET)
     DrawInfoScreen_LevelSet();
   else
-    DrawInfoScreen_Main(fade_mask, do_fading);
+    DrawInfoScreen_Main();
 
   if (info_mode != INFO_MODE_MAIN &&
       info_mode != INFO_MODE_TITLE &&
@@ -3532,16 +3514,6 @@ static void DrawInfoScreenExt(int fade_mask, boolean do_fading)
   }
 }
 
-void DrawAndFadeInInfoScreen(int fade_mask)
-{
-  DrawInfoScreenExt(fade_mask, TRUE);
-}
-
-void DrawInfoScreen()
-{
-  DrawInfoScreenExt(REDRAW_FIELD, FALSE);
-}
-
 void HandleInfoScreen(int mx, int my, int dx, int dy, int button)
 {
   if (info_mode == INFO_MODE_TITLE)
@@ -3652,13 +3624,16 @@ void HandleTypeName(int newxpos, Key key)
 
 static void DrawChooseTree(TreeInfo **ti_ptr)
 {
-  int fade_mask = (DrawingAreaChanged() ? REDRAW_ALL : REDRAW_FIELD);
+  int fade_mask = REDRAW_FIELD;
+
+  if (CheckIfRedrawGlobalBorderIsNeeded())
+    fade_mask = REDRAW_ALL;
 
   if (strEqual((*ti_ptr)->subdir, STRING_TOP_DIRECTORY))
   {
     game_status = GAME_MODE_MAIN;
 
-    DrawMainMenuExt(REDRAW_FIELD, FALSE);
+    DrawMainMenu();
 
     return;
   }
@@ -3865,7 +3840,7 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button,
 
       game_status = GAME_MODE_MAIN;
 
-      DrawMainMenuExt(REDRAW_FIELD, FALSE);
+      DrawMainMenu();
     }
 
     return;
@@ -4148,7 +4123,16 @@ void HandleChooseLevelNr(int mx, int my, int dx, int dy, int button)
 
 void DrawHallOfFame(int highlight_position)
 {
-  int fade_mask = (DrawingAreaChanged() ? REDRAW_ALL : REDRAW_FIELD);
+  int fade_mask = REDRAW_FIELD;
+
+  /* required before door position may be changed in next step */
+  CloseDoor(DOOR_CLOSE_ALL);
+
+  /* needed if different viewport properties defined for scores */
+  ChangeViewportPropertiesIfNeeded();
+
+  if (CheckIfRedrawGlobalBorderIsNeeded())
+    fade_mask = REDRAW_ALL;
 
   UnmapAllGadgets();
   FadeSoundsAndMusic();
@@ -4161,8 +4145,6 @@ void DrawHallOfFame(int highlight_position)
   SetDrawDeactivationMask(REDRAW_NONE);
   SetDrawBackgroundMask(REDRAW_FIELD);
 
-  CloseDoor(DOOR_CLOSE_ALL);
-
   if (highlight_position < 0) 
     LoadScore(level_nr);
 
@@ -4278,7 +4260,7 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button)
 
     game_status = GAME_MODE_MAIN;
 
-    DrawAndFadeInMainMenu(REDRAW_FIELD);
+    DrawMainMenu();
   }
 
   if (game_status == GAME_MODE_SCORES)
@@ -5268,7 +5250,7 @@ static void execExitSetup()
 {
   game_status = GAME_MODE_MAIN;
 
-  DrawMainMenuExt(REDRAW_FIELD, FALSE);
+  DrawMainMenu();
 }
 
 static void execSaveAndExitSetup()
@@ -5754,7 +5736,7 @@ static void changeSetupValue(int screen_pos, int setup_info_pos_raw, int dx)
 
 static void DrawSetupScreen_Generic()
 {
-  int fade_mask = (DrawingAreaChanged() ? REDRAW_ALL : REDRAW_FIELD);
+  int fade_mask = REDRAW_FIELD;
   boolean redraw_all = FALSE;
   char *title_string = NULL;
   int i;
index c23c14e866187900d275b169c326e7265c98c79d..2ee562e698c552dc78ad806cecd6a89e298f3dca 100644 (file)
@@ -21,7 +21,7 @@
 
 int effectiveGameStatus();
 
-void DrawMainMenuExt(int, boolean);
+void DrawMainMenuExt(int);
 void DrawAndFadeInMainMenu(int);
 void DrawMainMenu(void);
 void DrawHallOfFame(int);
index a7867f87965b5b953e405fa9d0dab83e6cf641f6..da879fa684a8fdc6db2179cc52523c596d86d5f3 100644 (file)
@@ -8085,7 +8085,6 @@ void ChangeViewportPropertiesIfNeeded()
   boolean init_video_buffer = FALSE;
   boolean init_gadgets_and_toons = FALSE;
   boolean init_em_graphics = FALSE;
-  boolean drawing_area_changed = FALSE;
 
   if (viewport.window.width  != WIN_XSIZE ||
       viewport.window.height != WIN_YSIZE)
@@ -8144,19 +8143,6 @@ void ChangeViewportPropertiesIfNeeded()
       init_em_graphics = TRUE;
     }
 
-    if (new_sx != SX ||
-       new_sy != SY ||
-       new_sxsize != SXSIZE ||
-       new_sysize != SYSIZE ||
-       new_real_sx != REAL_SX ||
-       new_real_sy != REAL_SY ||
-       new_full_sxsize != FULL_SXSIZE ||
-       new_full_sysize != FULL_SYSIZE)
-    {
-      if (!init_video_buffer)
-       drawing_area_changed = TRUE;
-    }
-
     SX = new_sx;
     SY = new_sy;
     DX = new_dx;
@@ -8198,8 +8184,6 @@ void ChangeViewportPropertiesIfNeeded()
     SCR_FIELDX = new_scr_fieldx;
     SCR_FIELDY = new_scr_fieldy;
 
-    gfx.drawing_area_changed = drawing_area_changed;
-
     SetDrawDeactivationMask(REDRAW_NONE);
     SetDrawBackgroundMask(REDRAW_FIELD);
   }