7bc26447f7
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>
22 lines
661 B
Dart
22 lines
661 B
Dart
import 'dart:convert';
|
|
|
|
import 'package:flutter/services.dart';
|
|
|
|
import '../game/models/season.dart';
|
|
|
|
/// Resolves season content. Phase 3: bundled assets only; remote download
|
|
/// and caching land in Phase 4.
|
|
class ContentRepository {
|
|
static const bundledSeasonIds = ['season_001'];
|
|
|
|
Future<SeasonPack> loadBundledSeason(String seasonId) async {
|
|
final raw =
|
|
await rootBundle.loadString('assets/seasons/$seasonId/pack.json');
|
|
return SeasonPack.fromJson(jsonDecode(raw) as Map<String, dynamic>);
|
|
}
|
|
|
|
Future<List<SeasonPack>> availableSeasons() async => [
|
|
for (final id in bundledSeasonIds) await loadBundledSeason(id),
|
|
];
|
|
}
|