feat: Implement fizzle fade transition effects for menus and intros, enhancing visual transitions

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
2026-03-23 11:00:48 +01:00
parent a84c677845
commit d63b316f1b
7 changed files with 815 additions and 33 deletions
@@ -223,6 +223,46 @@ void main() {
expect(manager.selectedMainIndex, 0);
});
test('menu transition defaults to normal fade and can opt into fizzle', () {
final manager = MenuManager();
manager.showMainMenu(hasResumableGame: false);
manager.startTransition(WolfMenuScreen.difficultySelect);
expect(manager.transitionEffect, WolfTransitionEffect.normalFade);
expect(manager.transitionPhase, WolfTransitionPhase.covering);
expect(manager.transitionPhaseProgress, 0.0);
expect(manager.activeMenu, WolfMenuScreen.mainMenu);
manager.tickTransition(MenuManager.transitionDurationMs ~/ 4);
expect(manager.transitionPhase, WolfTransitionPhase.covering);
expect(manager.transitionPhaseProgress, closeTo(0.5, 0.001));
expect(manager.activeMenu, WolfMenuScreen.mainMenu);
manager.tickTransition(MenuManager.transitionDurationMs ~/ 4);
expect(manager.transitionPhase, WolfTransitionPhase.revealing);
expect(manager.transitionPhaseProgress, 0.0);
expect(manager.activeMenu, WolfMenuScreen.difficultySelect);
manager.tickTransition(MenuManager.transitionDurationMs ~/ 4);
expect(manager.transitionPhase, WolfTransitionPhase.revealing);
expect(manager.transitionPhaseProgress, closeTo(0.5, 0.001));
manager.tickTransition(MenuManager.transitionDurationMs ~/ 4);
expect(manager.isTransitioning, isFalse);
expect(manager.transitionEffect, WolfTransitionEffect.none);
expect(manager.transitionPhase, WolfTransitionPhase.idle);
expect(manager.transitionPhaseProgress, 0.0);
manager.startTransition(
WolfMenuScreen.mainMenu,
effect: WolfTransitionEffect.fizzleFade,
);
expect(manager.transitionEffect, WolfTransitionEffect.fizzleFade);
expect(manager.transitionPhase, WolfTransitionPhase.covering);
});
test('quit selection triggers dedicated quit callback', () {
final input = _TestInput();
int quitCalls = 0;