patch guess langue issue

This commit is contained in:
Echalaye 2026-06-23 14:39:16 +02:00
parent 3d2f5be5e5
commit 8f93a18a70
2 changed files with 31 additions and 3 deletions

View File

@ -37,9 +37,15 @@ class GameEngine {
}
final normalizedGuess = _normalize(guess.trim().toLowerCase());
final normalizedActual = _normalize(pokemon.name.toLowerCase());
if (normalizedGuess == normalizedActual) {
// Accept the name in either language so a language switch mid-game never blocks the player.
final acceptedNames = <String>{
pokemon.name,
if (pokemon.nameFr != null) pokemon.nameFr!,
if (pokemon.nameEn != null) pokemon.nameEn!,
}.map((n) => _normalize(n.toLowerCase())).toSet();
if (acceptedNames.contains(normalizedGuess)) {
final newSession = s.sessionCorrectCount + 1;
final gained = s.isShiny ? AppConstants.pointsShiny : AppConstants.pointsNormal;
final newScore = s.currentScore + gained;

View File

@ -7,6 +7,7 @@ import '../../domain/game/game_engine.dart';
import '../../domain/game/game_state.dart';
import '../../core/logger.dart';
import 'gen_filter_provider.dart';
import 'locale_provider.dart';
import 'pokedex_provider.dart';
import 'repository_provider.dart';
@ -17,7 +18,28 @@ class GameNotifier extends Notifier<GameState> {
final _random = Random();
@override
GameState build() => const GameState();
GameState build() {
// Re-fetch the current Pokémon whenever the locale changes so the name
// (used for hints and the guess comparison) switches language instantly.
ref.listen(localeProvider, (_, __) => _reloadCurrentPokemon());
return const GameState();
}
Future<void> _reloadCurrentPokemon() async {
final current = state.currentPokemon;
if (current == null || state.status == GameStatus.loading) return;
try {
final updated = await ref.read(pokemonRepositoryProvider).getById(current.id);
if (updated != null) {
state = state.copyWith(
currentPokemon: updated.copyWith(
isCaught: current.isCaught,
isSeen: current.isSeen,
),
);
}
} catch (_) {}
}
Future<void> startNewGame() async {
state = _engine.newGame(state);