From 6b6e824860d5a145aac4dd7477c3d153632287ee Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Wed, 30 Apr 2025 14:34:14 +0200 Subject: [PATCH] Impementing toJson() and fromJson() Method in GameSession and Round class --- lib/data/game_session.dart | 24 ++++++++++++++++++++++++ lib/data/round.dart | 17 +++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/lib/data/game_session.dart b/lib/data/game_session.dart index 0403822..d021ceb 100644 --- a/lib/data/game_session.dart +++ b/lib/data/game_session.dart @@ -38,6 +38,30 @@ class GameSession { 'winner: $winner]'); } + /// Converts the GameSession object to a JSON map. + Map toJson() => { + 'gameTitle': gameTitle, + 'gameHasPointLimit': gameHasPointLimit, + 'players': players, + 'playerScores': playerScores, + 'roundNumber': roundNumber, + 'isGameFinished': isGameFinished, + 'winner': winner, + 'roundList': roundList.map((e) => e.toJson()).toList() + }; + + /// Creates a GameSession object from a JSON map. + GameSession.fromJson(Map json) + : gameTitle = json['gameTitle'], + gameHasPointLimit = json['gameHasPointLimit'], + players = List.from(json['players']), + playerScores = List.from(json['playerScores']), + roundNumber = json['roundNumber'], + isGameFinished = json['isGameFinished'], + winner = json['winner'], + roundList = + (json['roundList'] as List).map((e) => Round.fromJson(e)).toList(); + /// Returns the length of all player names combined. int getLengthOfPlayerNames() { int length = 0; diff --git a/lib/data/round.dart b/lib/data/round.dart index 1f03b33..d98a4f4 100644 --- a/lib/data/round.dart +++ b/lib/data/round.dart @@ -1,3 +1,5 @@ +import 'package:cabo_counter/data/game_session.dart'; + /// This class represents a single round in the game. /// It is stored within the [GameSession] class. /// [roundNum] is the number of the round its reppresenting. @@ -16,4 +18,19 @@ class Round { required this.scores, required this.scoreUpdates, this.kamikazePlayerIndex}); + + /// Converts the Round object to a JSON map. + Map toJson() => { + 'roundNum': roundNum, + 'scores': scores, + 'scoreUpdates': scoreUpdates, + 'kamikazePlayerIndex': kamikazePlayerIndex, + }; + + /// Creates a Round object from a JSON map. + Round.fromJson(Map json) + : roundNum = json['roundNum'], + scores = List.from(json['scores']), + scoreUpdates = List.from(json['scoreUpdates']), + kamikazePlayerIndex = json['kamikazePlayerIndex']; }