changed getting global border from game status to more generic approach
[rocksndiamonds.git] / src / tools.c
index b3938f5bde87ec6bdfb8ea2243d6ceb0dde3189d..053409c67ae6c09e139aa62d22617149e29cdc12 100644 (file)
@@ -291,7 +291,7 @@ void RedrawPlayfield()
 static void DrawMaskedBorderExt_Rect(int x, int y, int width, int height,
                                     int draw_target)
 {
-  Bitmap *bitmap = getGlobalBorderBitmapFromGameStatus();
+  Bitmap *bitmap = getGlobalBorderBitmapFromStatus(global.border_status);
 
   if (x == -1 && y == -1)
     return;
@@ -682,12 +682,11 @@ static void FadeExt(int fade_mask, int fade_mode, int fade_type)
   redraw_mask &= ~fade_mask;
 }
 
-static void SetAnimStatus_BeforeFadingOut()
+static void SetScreenStates_BeforeFadingIn()
 {
-  global.anim_status = GAME_MODE_PSEUDO_FADING;
 }
 
-static void SetAnimStatus_AfterFadingIn()
+static void SetScreenStates_AfterFadingIn()
 {
   global.anim_status = global.anim_status_next;
 
@@ -696,8 +695,20 @@ static void SetAnimStatus_AfterFadingIn()
   BackToFront();
 }
 
+static void SetScreenStates_BeforeFadingOut()
+{
+  global.anim_status = GAME_MODE_PSEUDO_FADING;
+}
+
+static void SetScreenStates_AfterFadingOut()
+{
+  global.border_status = game_status;
+}
+
 void FadeIn(int fade_mask)
 {
+  SetScreenStates_BeforeFadingIn();
+
 #if 1
   DrawMaskedBorder(REDRAW_ALL);
 #endif
@@ -712,12 +723,12 @@ void FadeIn(int fade_mask)
   FADE_SXSIZE = FULL_SXSIZE;
   FADE_SYSIZE = FULL_SYSIZE;
 
-  SetAnimStatus_AfterFadingIn();
+  SetScreenStates_AfterFadingIn();
 }
 
 void FadeOut(int fade_mask)
 {
-  SetAnimStatus_BeforeFadingOut();
+  SetScreenStates_BeforeFadingOut();
 
 #if 0
   DrawMaskedBorder(REDRAW_ALL);
@@ -728,7 +739,7 @@ void FadeOut(int fade_mask)
   else
     FadeExt(fade_mask, FADE_MODE_FADE_OUT, FADE_TYPE_FADE_OUT);
 
-  global.border_status = game_status;
+  SetScreenStates_AfterFadingOut();
 }
 
 static void FadeSetLeaveNext(struct TitleFadingInfo fading_leave, boolean set)
@@ -822,14 +833,14 @@ Bitmap *getGlobalBorderBitmap(int graphic)
   return getBitmapFromGraphicOrDefault(graphic, IMG_GLOBAL_BORDER);
 }
 
-Bitmap *getGlobalBorderBitmapFromGameStatus()
+Bitmap *getGlobalBorderBitmapFromStatus(int status)
 {
   int graphic =
-    (game_status == GAME_MODE_MAIN ||
-     game_status == GAME_MODE_PSEUDO_TYPENAME  ? IMG_GLOBAL_BORDER_MAIN :
-     game_status == GAME_MODE_SCORES           ? IMG_GLOBAL_BORDER_SCORES :
-     game_status == GAME_MODE_EDITOR           ? IMG_GLOBAL_BORDER_EDITOR :
-     game_status == GAME_MODE_PLAYING          ? IMG_GLOBAL_BORDER_PLAYING :
+    (status == GAME_MODE_MAIN ||
+     status == GAME_MODE_PSEUDO_TYPENAME       ? IMG_GLOBAL_BORDER_MAIN :
+     status == GAME_MODE_SCORES                        ? IMG_GLOBAL_BORDER_SCORES :
+     status == GAME_MODE_EDITOR                        ? IMG_GLOBAL_BORDER_EDITOR :
+     status == GAME_MODE_PLAYING               ? IMG_GLOBAL_BORDER_PLAYING :
      IMG_GLOBAL_BORDER);
 
   return getGlobalBorderBitmap(graphic);
@@ -930,7 +941,7 @@ boolean CheckIfGlobalBorderHasChanged()
     return FALSE;
 
   // determine and store new global border bitmap for current game status
-  global_border_bitmap = getGlobalBorderBitmapFromGameStatus();
+  global_border_bitmap = getGlobalBorderBitmapFromStatus(game_status);
 
   return (global_border_bitmap_last != global_border_bitmap);
 }
@@ -977,7 +988,7 @@ void RedrawGlobalBorderFromBitmap(Bitmap *bitmap)
 
 void RedrawGlobalBorder()
 {
-  Bitmap *bitmap = getGlobalBorderBitmapFromGameStatus();
+  Bitmap *bitmap = getGlobalBorderBitmapFromStatus(game_status);
 
   RedrawGlobalBorderFromBitmap(bitmap);