feat(domain): add immutable GameState
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
4bc3948fed
commit
0d977e5cca
68
lib/domain/game/game_state.dart
Normal file
68
lib/domain/game/game_state.dart
Normal file
@ -0,0 +1,68 @@
|
||||
import '../../core/config/app_constants.dart';
|
||||
import '../entities/pokemon.dart';
|
||||
|
||||
/// Phase courante de la partie.
|
||||
enum GameStatus { loading, playing, roundWon, gameOver, error }
|
||||
|
||||
/// Résultat d'une soumission de réponse.
|
||||
enum GuessResult { correct, wrong, gameOver, invalid }
|
||||
|
||||
/// État immuable d'une partie.
|
||||
class GameState {
|
||||
final Pokemon? currentPokemon;
|
||||
final int lives;
|
||||
final int skips;
|
||||
final int hints;
|
||||
final int sessionCorrectCount;
|
||||
final int currentScore;
|
||||
final int bestScore;
|
||||
final bool isShiny;
|
||||
final bool isHintUsed;
|
||||
final GameStatus status;
|
||||
|
||||
const GameState({
|
||||
this.currentPokemon,
|
||||
this.lives = AppConstants.startingLives,
|
||||
this.skips = AppConstants.startingSkips,
|
||||
this.hints = AppConstants.startingHints,
|
||||
this.sessionCorrectCount = 0,
|
||||
this.currentScore = 0,
|
||||
this.bestScore = 0,
|
||||
this.isShiny = false,
|
||||
this.isHintUsed = false,
|
||||
this.status = GameStatus.loading,
|
||||
});
|
||||
|
||||
GameState copyWith({
|
||||
Pokemon? currentPokemon,
|
||||
int? lives,
|
||||
int? skips,
|
||||
int? hints,
|
||||
int? sessionCorrectCount,
|
||||
int? currentScore,
|
||||
int? bestScore,
|
||||
bool? isShiny,
|
||||
bool? isHintUsed,
|
||||
GameStatus? status,
|
||||
}) {
|
||||
return GameState(
|
||||
currentPokemon: currentPokemon ?? this.currentPokemon,
|
||||
lives: lives ?? this.lives,
|
||||
skips: skips ?? this.skips,
|
||||
hints: hints ?? this.hints,
|
||||
sessionCorrectCount: sessionCorrectCount ?? this.sessionCorrectCount,
|
||||
currentScore: currentScore ?? this.currentScore,
|
||||
bestScore: bestScore ?? this.bestScore,
|
||||
isShiny: isShiny ?? this.isShiny,
|
||||
isHintUsed: isHintUsed ?? this.isHintUsed,
|
||||
status: status ?? this.status,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// Issue d'un appel à GameEngine.submitGuess : nouvel état + nature du résultat.
|
||||
class GuessOutcome {
|
||||
final GameState state;
|
||||
final GuessResult result;
|
||||
const GuessOutcome(this.state, this.result);
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user