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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user