Wire season flow: map screen, progress save, win recording, next stage
SaveRepository (versioned JSON over prefs) with best-result merging and unlock walking; ContentRepository loads the bundled pack; SeasonFlow/ Progress notifiers orchestrate stage start -> win record -> advance. Season map grid with stars/locks, Home -> Map -> Game navigation, close button, next-stage action on the win overlay. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import '../data/save_repository.dart';
|
||||
import 'providers.dart';
|
||||
|
||||
/// Exposes saved progress as immutable state so screens rebuild when stars
|
||||
/// land; persistence goes through [SaveRepository].
|
||||
class ProgressNotifier extends Notifier<Map<String, StageProgress>> {
|
||||
@override
|
||||
Map<String, StageProgress> build() =>
|
||||
ref.read(saveRepositoryProvider).snapshot();
|
||||
|
||||
Future<void> record({
|
||||
required String seasonId,
|
||||
required String stageId,
|
||||
required int stars,
|
||||
required int score,
|
||||
}) async {
|
||||
final repo = ref.read(saveRepositoryProvider);
|
||||
await repo.recordResult(
|
||||
seasonId: seasonId,
|
||||
stageId: stageId,
|
||||
stars: stars,
|
||||
score: score,
|
||||
);
|
||||
state = repo.snapshot();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user