Files
cabo-counter/lib/data/game_session.dart
2025-04-19 12:14:42 +02:00

64 lines
2.0 KiB
Dart

class GameSession {
final String gameTitle;
final List<String> players;
final int gameMode;
int round = 1;
String? winner;
GameSession({
required this.gameTitle,
required this.players,
required this.winner,
required this.gameMode,
});
List<List<int>> playerScores = [
[7, 1, 4, 2],
[7, 0, 3, 4],
[5, 5, 0, 0],
[10, 3, 3, 2],
[30, 10, 15, 5]
];
@override
String toString() {
return ('GameSession: [gameTitle: $gameTitle, '
'players: $players, winner: $winner, '
'round: $round, gameMode: $gameMode, '
'playerScores: $playerScores]');
}
/// Expands the player score lists by adding a new score of 0 for each player.
/// This method is called when a new round starts so the lists in the
/// active game view expands
void expandPlayerScoreLists() {
for (int i = 0; i < playerScores.length; i++) {
playerScores[i].add(0);
}
}
/// Sets the scores of the players for a specific round.
/// This method takes a list of round scores and a round number as parameters.
/// It then replaces the values for the given [roundNumber] in the playerScores.
/// Its important that each index of the [roundScores] list corresponds to the
/// index of the player in the [playerScores] list.
void addRoundScoresToScoreList(List<int> roundScores, int roundNumber) {
for (int i = 0; i < roundScores.length; i++) {
playerScores[i][roundNumber] = (roundScores[i]);
}
}
/// Summarizes the points of all players in the first index of their score list.
/// The method clears the first index of each player score list and then sums up
/// the points from the second index to the last index. It then stores the
/// result in the first index.
/// This method is used to update the total points of each player after a round.
void sumPoints() {
for (int i = 0; i < playerScores.length; i++) {
playerScores[i][0] = 0;
for (int j = 1; j < playerScores[i].length; j++) {
playerScores[i][0] += playerScores[i][j];
}
}
}
}