From 68477158e5768519f59a58788c7e2e54f1931b2f Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Sun, 13 Jul 2025 23:57:15 +0200 Subject: [PATCH 1/7] Implemented bonus popup --- lib/data/game_session.dart | 11 +++-- lib/presentation/views/round_view.dart | 65 +++++++++++++++++++++++--- pubspec.yaml | 2 +- test/data/game_session_test.dart | 12 ++--- 4 files changed, 74 insertions(+), 16 deletions(-) diff --git a/lib/data/game_session.dart b/lib/data/game_session.dart index d40e105..54c095b 100644 --- a/lib/data/game_session.dart +++ b/lib/data/game_session.dart @@ -243,10 +243,11 @@ class GameSession extends ChangeNotifier { /// It then checks if any player has exceeded 100 points. If so, it sets /// isGameFinished to true and calls the _setWinner() method to determine /// the winner. - Future updatePoints() async { + List updatePoints() { + List bonusPlayers = []; _sumPoints(); if (isPointsLimitEnabled) { - _checkHundredPointsReached(); + bonusPlayers = _checkHundredPointsReached(); for (int i = 0; i < playerScores.length; i++) { if (playerScores[i] > pointLimit) { @@ -258,6 +259,7 @@ class GameSession extends ChangeNotifier { } } notifyListeners(); + return bonusPlayers; } @visibleForTesting @@ -278,15 +280,18 @@ class GameSession extends ChangeNotifier { /// Checks if a player has reached 100 points in the current round. /// If so, it updates the [scoreUpdate] List by subtracting 50 points from /// the corresponding round update. - void _checkHundredPointsReached() { + List _checkHundredPointsReached() { + List bonusPlayers = []; for (int i = 0; i < players.length; i++) { if (playerScores[i] == pointLimit) { + bonusPlayers.add(i); print('${players[i]} hat genau 100 Punkte erreicht und bekommt ' 'deswegen ${(pointLimit / 2).round()} Punkte abgezogen'); roundList[roundNumber - 1].scoreUpdates[i] -= (pointLimit / 2).round(); } } _sumPoints(); + return bonusPlayers; } /// Determines the winner of the game session. diff --git a/lib/presentation/views/round_view.dart b/lib/presentation/views/round_view.dart index 39e5cc8..602c702 100644 --- a/lib/presentation/views/round_view.dart +++ b/lib/presentation/views/round_view.dart @@ -287,8 +287,11 @@ class _RoundViewState extends State { children: [ CupertinoButton( onPressed: _areRoundInputsValid() - ? () { - _finishRound(); + ? () async { + List boni = _finishRound(); + if (boni.isNotEmpty) { + await _showBonusPopup(context, boni); + } LocalStorageService.saveGameSessions(); Navigator.pop(context); } @@ -298,8 +301,11 @@ class _RoundViewState extends State { if (!widget.gameSession.isGameFinished) CupertinoButton( onPressed: _areRoundInputsValid() - ? () { - _finishRound(); + ? () async { + List boni = _finishRound(); + if (boni.isNotEmpty) { + await _showBonusPopup(context, boni); + } LocalStorageService.saveGameSessions(); if (widget.gameSession.isGameFinished) { Navigator.pop(context); @@ -359,7 +365,7 @@ class _RoundViewState extends State { /// every player. If the round is the highest round played in this game, /// it expands the player score lists. At the end it updates the score /// array for the game. - void _finishRound() { + List _finishRound() { print('===================================='); print('Runde ${widget.roundNumber} beendet'); // The shown round is smaller than the newest round @@ -381,12 +387,59 @@ class _RoundViewState extends State { widget.gameSession.calculateScoredPoints( widget.roundNumber, roundScores, _caboPlayerIndex); } - widget.gameSession.updatePoints(); + List bonusPlayers = widget.gameSession.updatePoints(); if (widget.gameSession.isGameFinished == true) { print('Das Spiel ist beendet'); } else if (widget.roundNumber == widget.gameSession.roundNumber) { widget.gameSession.increaseRound(); } + return bonusPlayers; + } + + /// Shows a popup dialog with the bonus information. + Future _showBonusPopup( + BuildContext context, List bonusPlayers) async { + print('Bonus Popup wird angezeigt'); + int pointLimit = widget.gameSession.pointLimit; + int bonusPoints = (pointLimit / 2).round(); + + String resultText = _getPopupString(pointLimit, bonusPoints, bonusPlayers); + + await showCupertinoDialog( + context: context, + builder: (context) => CupertinoAlertDialog( + title: const Text('Bonus!'), + content: Text(resultText), + actions: [ + CupertinoDialogAction( + child: const Text('OK'), + onPressed: () => Navigator.of(context).pop(true), + ), + ], + ), + ); + return true; + } + + /// Generates the string for the bonus popup. + /// It takes the [pointLimit], [bonusPoints] and the list of [bonusPlayers] + /// and returns a formatted string. + String _getPopupString( + int pointLimit, int bonusPoints, List bonusPlayers) { + List nameList = + bonusPlayers.map((i) => widget.gameSession.players[i]).toList(); + String resultText = ''; + if (nameList.length == 1) { + resultText = + '${nameList.first} hat exakt das Punktelimit von $pointLimit Punkten erreicht und bekommt deshalb $bonusPoints Punkte abgezogen!'; + } else { + resultText = nameList.length == 2 + ? '${nameList[0]} & ${nameList[1]}' + : '${nameList.sublist(0, nameList.length - 1).join(', ')} & ${nameList.last}'; + resultText += + ' haben exakt das Punktelimit von $pointLimit Punkten erreicht und bekommen deshalb $bonusPoints Punkte abgezogen!'; + } + return resultText; } @override diff --git a/pubspec.yaml b/pubspec.yaml index 7946bbb..f2b4949 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: cabo_counter description: "Mobile app for the card game Cabo" publish_to: 'none' -version: 0.4.4+486 +version: 0.4.4+488 environment: sdk: ^3.5.4 diff --git a/test/data/game_session_test.dart b/test/data/game_session_test.dart index de4e284..4ca2158 100644 --- a/test/data/game_session_test.dart +++ b/test/data/game_session_test.dart @@ -114,15 +114,15 @@ void main() { expect(session.roundList[0].caboPlayerIndex, 0); }); - test('updatePoints - game not finished', () async { + test('updatePoints - game not finished', () { session.addRoundScoresToList(1, [10, 20, 30], [10, 20, 30], 0); - await session.updatePoints(); + session.updatePoints(); expect(session.isGameFinished, isFalse); }); - test('updatePoints - game finished', () async { + test('updatePoints - game finished', () { session.addRoundScoresToList(1, [101, 20, 30], [101, 20, 30], 0); - await session.updatePoints(); + session.updatePoints(); expect(session.isGameFinished, isTrue); }); @@ -154,9 +154,9 @@ void main() { expect(session.playerScores, equals([50, 0, 30])); }); - test('_setWinner via updatePoints', () async { + test('_setWinner via updatePoints', () { session.addRoundScoresToList(1, [101, 20, 30], [101, 0, 30], 1); - await session.updatePoints(); + session.updatePoints(); expect(session.winner, 'Bob'); // Bob has lowest score (20) }); }); From 0a0da96a3f68b939177c403825077e8e4b06052c Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Mon, 14 Jul 2025 10:01:11 +0200 Subject: [PATCH 2/7] Created Strings for popup --- lib/l10n/arb/app_de.arb | 16 +++++++++++++++ lib/l10n/arb/app_en.arb | 16 +++++++++++++++ lib/l10n/generated/app_localizations.dart | 13 ++++++++++++ lib/l10n/generated/app_localizations_de.dart | 17 ++++++++++++++++ lib/l10n/generated/app_localizations_en.dart | 17 ++++++++++++++++ lib/presentation/views/round_view.dart | 21 ++++++++++---------- pubspec.yaml | 2 +- 7 files changed, 91 insertions(+), 11 deletions(-) diff --git a/lib/l10n/arb/app_de.arb b/lib/l10n/arb/app_de.arb index b072d63..355ab43 100644 --- a/lib/l10n/arb/app_de.arb +++ b/lib/l10n/arb/app_de.arb @@ -73,6 +73,22 @@ "kamikaze": "Kamikaze", "done": "Fertig", "next_round": "Nächste Runde", + "bonus_points_title": "Bonus-Punkte!", + "bonus_points_message": "{playerCount, plural, =1{{names} hat exakt das Punktelimit von {pointLimit} Punkten erreicht und bekommt deshalb {bonusPoints} Punkte abgezogen!} other{{names} haben exakt das Punktelimit von {pointLimit} Punkten erreicht und bekommen deshalb jeweils {bonusPoints} Punkte abgezogen!}}", + "@bonus_points_message": { + "placeholders": { + "names": { + "type": "String" + }, + "pointLimit": { + "type": "int" + }, + "bonusPoints": { + "type": "int" + } + } + }, + "end_game": "Spiel beenden", "delete_game": "Spiel löschen", diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index a649362..08072f1 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -73,6 +73,22 @@ "kamikaze": "Kamikaze", "done": "Done", "next_round": "Next Round", + "bonus_points_title": "Bonus-Points!", + "bonus_points_message": "{playerCount, plural, =1{{names} has reached exactly the point limit of {pointLimit} points and therefore gets {bonusPoints} points deducted!} other{{names} have reached exactly the point limit of {pointLimit} points and therefore get {bonusPoints} points deducted!}}", + "@bonus_points_message": { + "placeholders": { + "names": { + "type": "String" + }, + "pointLimit": { + "type": "int" + }, + "bonusPoints": { + "type": "int" + } + } + }, + "end_game": "End Game", "delete_game": "Delete Game", diff --git a/lib/l10n/generated/app_localizations.dart b/lib/l10n/generated/app_localizations.dart index 2059f1b..5c91414 100644 --- a/lib/l10n/generated/app_localizations.dart +++ b/lib/l10n/generated/app_localizations.dart @@ -416,6 +416,19 @@ abstract class AppLocalizations { /// **'Nächste Runde'** String get next_round; + /// No description provided for @bonus_points_title. + /// + /// In de, this message translates to: + /// **'Bonus-Punkte!'** + String get bonus_points_title; + + /// No description provided for @bonus_points_message. + /// + /// In de, this message translates to: + /// **'{playerCount, plural, =1{{names} hat exakt das Punktelimit von {pointLimit} Punkten erreicht und bekommt deshalb {bonusPoints} Punkte abgezogen!} other{{names} haben exakt das Punktelimit von {pointLimit} Punkten erreicht und bekommen deshalb jeweils {bonusPoints} Punkte abgezogen!}}'** + String bonus_points_message( + String names, int pointLimit, int bonusPoints, num playerCount); + /// No description provided for @end_game. /// /// In de, this message translates to: diff --git a/lib/l10n/generated/app_localizations_de.dart b/lib/l10n/generated/app_localizations_de.dart index 068711f..2007e48 100644 --- a/lib/l10n/generated/app_localizations_de.dart +++ b/lib/l10n/generated/app_localizations_de.dart @@ -178,6 +178,23 @@ class AppLocalizationsDe extends AppLocalizations { @override String get next_round => 'Nächste Runde'; + @override + String get bonus_points_title => 'Bonus-Punkte!'; + + @override + String bonus_points_message( + String names, int pointLimit, int bonusPoints, num playerCount) { + String _temp0 = intl.Intl.pluralLogic( + playerCount, + locale: localeName, + other: + '$names haben exakt das Punktelimit von $pointLimit Punkten erreicht und bekommen deshalb jeweils $bonusPoints Punkte abgezogen!', + one: + '$names hat exakt das Punktelimit von $pointLimit Punkten erreicht und bekommt deshalb $bonusPoints Punkte abgezogen!', + ); + return '$_temp0'; + } + @override String get end_game => 'Spiel beenden'; diff --git a/lib/l10n/generated/app_localizations_en.dart b/lib/l10n/generated/app_localizations_en.dart index 06b5c03..0830f23 100644 --- a/lib/l10n/generated/app_localizations_en.dart +++ b/lib/l10n/generated/app_localizations_en.dart @@ -175,6 +175,23 @@ class AppLocalizationsEn extends AppLocalizations { @override String get next_round => 'Next Round'; + @override + String get bonus_points_title => 'Bonus-Points!'; + + @override + String bonus_points_message( + String names, int pointLimit, int bonusPoints, num playerCount) { + String _temp0 = intl.Intl.pluralLogic( + playerCount, + locale: localeName, + other: + '$names have reached exactly the point limit of $pointLimit points and therefore get $bonusPoints points deducted!', + one: + '$names has reached exactly the point limit of $pointLimit points and therefore gets $bonusPoints points deducted!', + ); + return '$_temp0'; + } + @override String get end_game => 'End Game'; diff --git a/lib/presentation/views/round_view.dart b/lib/presentation/views/round_view.dart index 602c702..fdf2b13 100644 --- a/lib/presentation/views/round_view.dart +++ b/lib/presentation/views/round_view.dart @@ -403,17 +403,18 @@ class _RoundViewState extends State { int pointLimit = widget.gameSession.pointLimit; int bonusPoints = (pointLimit / 2).round(); - String resultText = _getPopupString(pointLimit, bonusPoints, bonusPlayers); + String resultText = + _getBonusPopupMessageString(pointLimit, bonusPoints, bonusPlayers); await showCupertinoDialog( context: context, builder: (context) => CupertinoAlertDialog( - title: const Text('Bonus!'), + title: Text(AppLocalizations.of(context).bonus_points_title), content: Text(resultText), actions: [ CupertinoDialogAction( - child: const Text('OK'), - onPressed: () => Navigator.of(context).pop(true), + child: Text(AppLocalizations.of(context).ok), + onPressed: () => Navigator.of(context).pop(), ), ], ), @@ -421,23 +422,23 @@ class _RoundViewState extends State { return true; } - /// Generates the string for the bonus popup. + /// Generates the message string for the bonus popup. /// It takes the [pointLimit], [bonusPoints] and the list of [bonusPlayers] /// and returns a formatted string. - String _getPopupString( + String _getBonusPopupMessageString( int pointLimit, int bonusPoints, List bonusPlayers) { List nameList = bonusPlayers.map((i) => widget.gameSession.players[i]).toList(); String resultText = ''; if (nameList.length == 1) { - resultText = - '${nameList.first} hat exakt das Punktelimit von $pointLimit Punkten erreicht und bekommt deshalb $bonusPoints Punkte abgezogen!'; + resultText = AppLocalizations.of(context).bonus_points_message( + nameList.first, pointLimit, bonusPoints, nameList.length); } else { resultText = nameList.length == 2 ? '${nameList[0]} & ${nameList[1]}' : '${nameList.sublist(0, nameList.length - 1).join(', ')} & ${nameList.last}'; - resultText += - ' haben exakt das Punktelimit von $pointLimit Punkten erreicht und bekommen deshalb $bonusPoints Punkte abgezogen!'; + resultText = AppLocalizations.of(context).bonus_points_message( + resultText, pointLimit, bonusPoints, nameList.length); } return resultText; } diff --git a/pubspec.yaml b/pubspec.yaml index f2b4949..4444d73 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: cabo_counter description: "Mobile app for the card game Cabo" publish_to: 'none' -version: 0.4.4+488 +version: 0.4.5+492 environment: sdk: ^3.5.4 From db6d4690cba5f863d8c0b0f3f1fa0b978407d53c Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Mon, 14 Jul 2025 10:09:12 +0200 Subject: [PATCH 3/7] Implemented mounted checks & changed return type --- lib/presentation/views/round_view.dart | 9 +++++---- pubspec.yaml | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/presentation/views/round_view.dart b/lib/presentation/views/round_view.dart index fdf2b13..2d1f785 100644 --- a/lib/presentation/views/round_view.dart +++ b/lib/presentation/views/round_view.dart @@ -293,6 +293,7 @@ class _RoundViewState extends State { await _showBonusPopup(context, boni); } LocalStorageService.saveGameSessions(); + if (!context.mounted) return; Navigator.pop(context); } : null, @@ -307,9 +308,10 @@ class _RoundViewState extends State { await _showBonusPopup(context, boni); } LocalStorageService.saveGameSessions(); - if (widget.gameSession.isGameFinished) { + if (widget.gameSession.isGameFinished && + context.mounted) { Navigator.pop(context); - } else { + } else if (context.mounted) { Navigator.pop( context, widget.roundNumber + 1); } @@ -397,7 +399,7 @@ class _RoundViewState extends State { } /// Shows a popup dialog with the bonus information. - Future _showBonusPopup( + Future _showBonusPopup( BuildContext context, List bonusPlayers) async { print('Bonus Popup wird angezeigt'); int pointLimit = widget.gameSession.pointLimit; @@ -419,7 +421,6 @@ class _RoundViewState extends State { ], ), ); - return true; } /// Generates the message string for the bonus popup. diff --git a/pubspec.yaml b/pubspec.yaml index 4444d73..4d0b0f6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: cabo_counter description: "Mobile app for the card game Cabo" publish_to: 'none' -version: 0.4.5+492 +version: 0.4.5+493 environment: sdk: ^3.5.4 From c24c271c8220b5fccb47daee2786d07a43c8c2a9 Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Mon, 14 Jul 2025 10:14:53 +0200 Subject: [PATCH 4/7] Updated comment --- lib/data/game_session.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/data/game_session.dart b/lib/data/game_session.dart index 54c095b..d1402e5 100644 --- a/lib/data/game_session.dart +++ b/lib/data/game_session.dart @@ -235,7 +235,7 @@ class GameSession extends ChangeNotifier { /// This method updates the points of each player after a round. /// It first uses the _sumPoints() method to calculate the total points of each player. - /// Then, it checks if any player has reached 100 points. If so, it marks + /// Then, it checks if any player has reached 100 points. If so, saves their indices and marks /// that player as having reached 100 points in that corresponding [Round] object. /// If the game has the point limit activated, it first applies the /// _subtractPointsForReachingHundred() method to subtract 50 points @@ -243,6 +243,8 @@ class GameSession extends ChangeNotifier { /// It then checks if any player has exceeded 100 points. If so, it sets /// isGameFinished to true and calls the _setWinner() method to determine /// the winner. + /// It returns a list of players indices who reached 100 points in the current + /// round for the [RoundView] to show a popup List updatePoints() { List bonusPlayers = []; _sumPoints(); From a8298dfa21d3d6df8f06f7812d0bce340971a536 Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Mon, 14 Jul 2025 10:16:42 +0200 Subject: [PATCH 5/7] Updated variable name --- lib/presentation/views/round_view.dart | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/presentation/views/round_view.dart b/lib/presentation/views/round_view.dart index 2d1f785..45ce0ef 100644 --- a/lib/presentation/views/round_view.dart +++ b/lib/presentation/views/round_view.dart @@ -288,9 +288,10 @@ class _RoundViewState extends State { CupertinoButton( onPressed: _areRoundInputsValid() ? () async { - List boni = _finishRound(); - if (boni.isNotEmpty) { - await _showBonusPopup(context, boni); + List bonusPlayersIndices = _finishRound(); + if (bonusPlayersIndices.isNotEmpty) { + await _showBonusPopup( + context, bonusPlayersIndices); } LocalStorageService.saveGameSessions(); if (!context.mounted) return; @@ -303,9 +304,11 @@ class _RoundViewState extends State { CupertinoButton( onPressed: _areRoundInputsValid() ? () async { - List boni = _finishRound(); - if (boni.isNotEmpty) { - await _showBonusPopup(context, boni); + List bonusPlayersIndices = + _finishRound(); + if (bonusPlayersIndices.isNotEmpty) { + await _showBonusPopup( + context, bonusPlayersIndices); } LocalStorageService.saveGameSessions(); if (widget.gameSession.isGameFinished && From 047acfecd8df9123676bc73053cb42f51e3fea6a Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Mon, 14 Jul 2025 10:17:51 +0200 Subject: [PATCH 6/7] Updated string placeholders --- lib/l10n/arb/app_de.arb | 3 +++ lib/l10n/arb/app_en.arb | 3 +++ lib/presentation/views/round_view.dart | 8 ++++++-- pubspec.yaml | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/l10n/arb/app_de.arb b/lib/l10n/arb/app_de.arb index 355ab43..93215ed 100644 --- a/lib/l10n/arb/app_de.arb +++ b/lib/l10n/arb/app_de.arb @@ -77,6 +77,9 @@ "bonus_points_message": "{playerCount, plural, =1{{names} hat exakt das Punktelimit von {pointLimit} Punkten erreicht und bekommt deshalb {bonusPoints} Punkte abgezogen!} other{{names} haben exakt das Punktelimit von {pointLimit} Punkten erreicht und bekommen deshalb jeweils {bonusPoints} Punkte abgezogen!}}", "@bonus_points_message": { "placeholders": { + "playerCount": { + "type": "int" + }, "names": { "type": "String" }, diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index 08072f1..19695a5 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -77,6 +77,9 @@ "bonus_points_message": "{playerCount, plural, =1{{names} has reached exactly the point limit of {pointLimit} points and therefore gets {bonusPoints} points deducted!} other{{names} have reached exactly the point limit of {pointLimit} points and therefore get {bonusPoints} points deducted!}}", "@bonus_points_message": { "placeholders": { + "playerCount": { + "type": "int" + }, "names": { "type": "String" }, diff --git a/lib/presentation/views/round_view.dart b/lib/presentation/views/round_view.dart index 45ce0ef..a821fb5 100644 --- a/lib/presentation/views/round_view.dart +++ b/lib/presentation/views/round_view.dart @@ -436,13 +436,17 @@ class _RoundViewState extends State { String resultText = ''; if (nameList.length == 1) { resultText = AppLocalizations.of(context).bonus_points_message( - nameList.first, pointLimit, bonusPoints, nameList.length); + nameList.length, nameList.first, pointLimit, bonusPoints); } else { resultText = nameList.length == 2 ? '${nameList[0]} & ${nameList[1]}' : '${nameList.sublist(0, nameList.length - 1).join(', ')} & ${nameList.last}'; resultText = AppLocalizations.of(context).bonus_points_message( - resultText, pointLimit, bonusPoints, nameList.length); + nameList.length, + resultText, + pointLimit, + bonusPoints, + ); } return resultText; } diff --git a/pubspec.yaml b/pubspec.yaml index 4d0b0f6..9db5d4b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: cabo_counter description: "Mobile app for the card game Cabo" publish_to: 'none' -version: 0.4.5+493 +version: 0.4.5+494 environment: sdk: ^3.5.4 From 79d0bdd19b7341a3a33dc7552f1f4d5e102a19cb Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Mon, 14 Jul 2025 10:19:51 +0200 Subject: [PATCH 7/7] Generated files update --- lib/l10n/generated/app_localizations.dart | 2 +- lib/l10n/generated/app_localizations_de.dart | 2 +- lib/l10n/generated/app_localizations_en.dart | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/l10n/generated/app_localizations.dart b/lib/l10n/generated/app_localizations.dart index 5c91414..0a902f6 100644 --- a/lib/l10n/generated/app_localizations.dart +++ b/lib/l10n/generated/app_localizations.dart @@ -427,7 +427,7 @@ abstract class AppLocalizations { /// In de, this message translates to: /// **'{playerCount, plural, =1{{names} hat exakt das Punktelimit von {pointLimit} Punkten erreicht und bekommt deshalb {bonusPoints} Punkte abgezogen!} other{{names} haben exakt das Punktelimit von {pointLimit} Punkten erreicht und bekommen deshalb jeweils {bonusPoints} Punkte abgezogen!}}'** String bonus_points_message( - String names, int pointLimit, int bonusPoints, num playerCount); + int playerCount, String names, int pointLimit, int bonusPoints); /// No description provided for @end_game. /// diff --git a/lib/l10n/generated/app_localizations_de.dart b/lib/l10n/generated/app_localizations_de.dart index 2007e48..7a71d00 100644 --- a/lib/l10n/generated/app_localizations_de.dart +++ b/lib/l10n/generated/app_localizations_de.dart @@ -183,7 +183,7 @@ class AppLocalizationsDe extends AppLocalizations { @override String bonus_points_message( - String names, int pointLimit, int bonusPoints, num playerCount) { + int playerCount, String names, int pointLimit, int bonusPoints) { String _temp0 = intl.Intl.pluralLogic( playerCount, locale: localeName, diff --git a/lib/l10n/generated/app_localizations_en.dart b/lib/l10n/generated/app_localizations_en.dart index 0830f23..4d4d663 100644 --- a/lib/l10n/generated/app_localizations_en.dart +++ b/lib/l10n/generated/app_localizations_en.dart @@ -180,7 +180,7 @@ class AppLocalizationsEn extends AppLocalizations { @override String bonus_points_message( - String names, int pointLimit, int bonusPoints, num playerCount) { + int playerCount, String names, int pointLimit, int bonusPoints) { String _temp0 = intl.Intl.pluralLogic( playerCount, locale: localeName,