X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=8f4b35b231a081d8b7b30df1e843d5bc2ea2947a;hb=2c54d1765fec2db1ab23e2d5b5fba927efa463ce;hp=b7e4572ab1e14d4bf778983386847db50930aa5d;hpb=0d03b05bd2b0faf67444063af59c3b0fef45dd09;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index b7e4572a..8f4b35b2 100644 --- a/src/screens.c +++ b/src/screens.c @@ -1560,6 +1560,7 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) #endif #endif struct TitleControlInfo *tci; + struct TitleFadingInfo fading_default; struct TitleFadingInfo fading_last = fading; struct TitleFadingInfo fading_next; int sound, music; @@ -1614,11 +1615,24 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) else DrawTitleScreenMessage(tci->local_nr, tci->initial); + fading_default = (tci->initial ? title_initial_default : title_default); + fading = fading_next = getTitleFading(tci); +#if 1 +#if 1 + if (!(fading_last.fade_mode & FADE_TYPE_TRANSFORM) && + fading_next.fade_mode & FADE_TYPE_TRANSFORM) + { + fading.fade_mode = FADE_MODE_FADE; + fading.fade_delay = fading_default.fade_delay; + } +#else if (fading_last.fade_mode != FADE_MODE_CROSSFADE && fading_next.fade_mode == FADE_MODE_CROSSFADE) fading.fade_mode = FADE_MODE_FADE; +#endif +#endif #if 1 sound = getTitleSound(tci); @@ -1635,6 +1649,8 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) SetMouseCursor(CURSOR_NONE); + // printf("::: mode: %d, delay: %d\n", fading.fade_mode, fading.fade_delay); + #if 1 FadeIn(REDRAW_ALL); #endif @@ -1739,10 +1755,17 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) printf("::: %d -> %d\n", fading.fade_mode, fading_next.fade_mode); #endif +#if 1 + /* last screen already faded out, next screen has no animation */ + if (!(fading.fade_mode & FADE_TYPE_TRANSFORM) && + fading_next.fade_mode == FADE_MODE_NONE) + fading = fading_next; +#else /* last screen already faded out, next screen has no animation */ if (fading.fade_mode != FADE_MODE_CROSSFADE && fading_next.fade_mode == FADE_MODE_NONE) fading = fading_next; +#endif #if 1 FadeIn(REDRAW_ALL); @@ -2250,6 +2273,9 @@ static void DrawInfoScreen_Main(int redraw_mask, boolean do_fading) UnmapAllGadgets(); CloseDoor(DOOR_CLOSE_2); + /* (needed after displaying title screens which disable auto repeat) */ + KeyboardAutoRepeatOn(); + #if 1 FadeOut(redraw_mask); #endif