diff --git a/lib/ui/screens/game_screen.dart b/lib/ui/screens/game_screen.dart index 8c58745..e8da014 100644 --- a/lib/ui/screens/game_screen.dart +++ b/lib/ui/screens/game_screen.dart @@ -117,6 +117,7 @@ class _GameScreenState extends ConsumerState void _onSessionChange(GameViewState? prev, GameViewState? next) { if (next == null) return; + if (prev == null) ref.read(adServiceProvider).onRoundStart(); final audio = ref.read(audioServiceProvider); if (prev?.fxTick != next.fxTick && next.lastPlacement != null) { final placement = next.lastPlacement!; @@ -153,6 +154,9 @@ class _GameScreenState extends ConsumerState if (next.phase != GamePhase.playing) { ref.read(tutorialProvider.notifier).skip(); } + if (next.phase == GamePhase.won || next.phase == GamePhase.lost) { + ref.read(adServiceProvider).onStageCompleted(); + } if (next.phase == GamePhase.won) { audio.play(Sfx.win); // recordResult keeps the best run, so re-entry is harmless. @@ -393,7 +397,10 @@ class _GameScreenState extends ConsumerState [ if (!view.rescueUsed) FilledButton( - onPressed: () { + onPressed: () async { + final earned = + await ref.read(adServiceProvider).showRewarded(); + if (!earned) return; ref.read(analyticsProvider).rescueUsed(type: 'extra_moves'); notifier.addExtraMoves(); }, @@ -416,7 +423,10 @@ class _GameScreenState extends ConsumerState [ if (!view.rescueUsed) FilledButton( - onPressed: () { + onPressed: () async { + final earned = + await ref.read(adServiceProvider).showRewarded(); + if (!earned) return; ref.read(analyticsProvider).rescueUsed(type: 'continue'); notifier.useContinue(); },