From 4174496eff825ebbff1651ef265ecb8d28403441 Mon Sep 17 00:00:00 2001 From: Arthur VALIN Date: Fri, 3 Mar 2023 12:19:16 +0100 Subject: [PATCH 01/18] Ajouter '.gitattributes' --- .gitattributes | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6190160 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +Sources/API/gatling/* linguist-detectable=false \ No newline at end of file From 7099455673044feaed8b4598d12e76e5fdb8e8e3 Mon Sep 17 00:00:00 2001 From: Arthur VALIN Date: Fri, 3 Mar 2023 12:19:32 +0100 Subject: [PATCH 02/18] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'.gitattribut?= =?UTF-8?q?es'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index 6190160..fb3ee9f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1 @@ -Sources/API/gatling/* linguist-detectable=false \ No newline at end of file +*.html linguist-detectable=false \ No newline at end of file From 84a01f279354313fbe4593e3a5e02a5014747b01 Mon Sep 17 00:00:00 2001 From: Arthur VALIN Date: Fri, 3 Mar 2023 12:20:18 +0100 Subject: [PATCH 03/18] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'.gitattribut?= =?UTF-8?q?es'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index fb3ee9f..53f0f03 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1 @@ -*.html linguist-detectable=false \ No newline at end of file +*.html -linguist-detectable \ No newline at end of file From bea2d7ac7cda2fe895a1f5d282cede94f25e22c4 Mon Sep 17 00:00:00 2001 From: Arthur VALIN Date: Fri, 3 Mar 2023 12:32:59 +0100 Subject: [PATCH 04/18] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'.gitattribut?= =?UTF-8?q?es'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index 53f0f03..fb3ee9f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1 @@ -*.html -linguist-detectable \ No newline at end of file +*.html linguist-detectable=false \ No newline at end of file From dc3612ab0b5740b5e6364d99ea908aaadaeef931 Mon Sep 17 00:00:00 2001 From: Arthur VALIN Date: Fri, 3 Mar 2023 12:40:20 +0100 Subject: [PATCH 05/18] Supprimer '.gitattributes' --- .gitattributes | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index fb3ee9f..0000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.html linguist-detectable=false \ No newline at end of file From aa18451fcec3693bad1ae041fda841f1545d6f35 Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Fri, 3 Mar 2023 13:19:50 +0100 Subject: [PATCH 06/18] rank working and add some stub data --- .idea/Bowl_in.iml | 2 + Sources/bowlin_project/lib/model/Game.dart | 11 +- .../bowlin_project/lib/model/GameDetail.dart | 36 ++- .../lib/model/StubManager/GameManager.dart | 29 ++- .../lib/model/StubManager/StubData.dart | 85 ++++++- Sources/bowlin_project/lib/model/User.dart | 5 +- Sources/bowlin_project/pubspec.lock | 213 +++++++----------- Sources/bowlin_project/test/model_test.dart | 189 +++++++++++----- 8 files changed, 366 insertions(+), 204 deletions(-) diff --git a/.idea/Bowl_in.iml b/.idea/Bowl_in.iml index eed4b67..f1b2d07 100644 --- a/.idea/Bowl_in.iml +++ b/.idea/Bowl_in.iml @@ -9,5 +9,7 @@ + + \ No newline at end of file diff --git a/Sources/bowlin_project/lib/model/Game.dart b/Sources/bowlin_project/lib/model/Game.dart index bf0065b..16cc875 100644 --- a/Sources/bowlin_project/lib/model/Game.dart +++ b/Sources/bowlin_project/lib/model/Game.dart @@ -5,10 +5,11 @@ class Game { DateTime _time; int _pointsCurrentUser; bool _isFinished; - List _playerImages = []; + List _playersId = []; // Constructor - Game(this._id, this._time, this._pointsCurrentUser, this._isFinished, this._playerImages); + Game(this._id, this._time, this._pointsCurrentUser, this._isFinished, + this._playersId); // Getters and setters Uuid get id => _id; @@ -35,9 +36,9 @@ class Game { _isFinished = value; } - List get playerImages => _playerImages; + List get playersId => _playersId; - set playerImages(List value) { - _playerImages = value; + set playersId(List value) { + _playersId = value; } } diff --git a/Sources/bowlin_project/lib/model/GameDetail.dart b/Sources/bowlin_project/lib/model/GameDetail.dart index 12a86f2..2085b49 100644 --- a/Sources/bowlin_project/lib/model/GameDetail.dart +++ b/Sources/bowlin_project/lib/model/GameDetail.dart @@ -1,3 +1,5 @@ +import 'dart:developer'; + import 'package:uuid/uuid.dart'; import 'Player.dart'; import 'Round.dart'; @@ -9,7 +11,7 @@ class GameDetail { int _nbPoints; bool _isFinished; Round? _currentRound; - Player _host; + Uuid _host; List _rounds = []; List _players = []; @@ -24,7 +26,7 @@ class GameDetail { this._host, this._rounds, this._players); - + // Getters and setters Uuid get id => _id; @@ -62,9 +64,9 @@ class GameDetail { _currentRound = value; } - Player get host => _host; + Uuid get host => _host; - set host(Player value) { + set host(Uuid value) { _host = value; } @@ -79,4 +81,30 @@ class GameDetail { set players(List value) { _players = value; } + + int getPointByPlayerId(Uuid uuid) { + int pointPlayer = 0; + for (var player in players) { + if (player.id == uuid) { + for (var element in rounds) { + if (element.player == player) { + pointPlayer += element.points; + } + } + return pointPlayer; + } + } + throw Exception("Player not in the game."); + } + + Map getRank() { + Map rank = {}; + + for (var player in players) { + rank.addAll({player.id: this.getPointByPlayerId(player.id)}); + } + var sortedByKeyMap = Map.fromEntries( + rank.entries.toList()..sort((e1, e2) => e2.value.compareTo(e1.value))); + return sortedByKeyMap; + } } diff --git a/Sources/bowlin_project/lib/model/StubManager/GameManager.dart b/Sources/bowlin_project/lib/model/StubManager/GameManager.dart index 01b7dbb..a81b9bf 100644 --- a/Sources/bowlin_project/lib/model/StubManager/GameManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/GameManager.dart @@ -1,4 +1,6 @@ library StubLib; + +import '../Game.dart'; import '../IGameManager.dart'; import '../GameDetail.dart'; import '../Player.dart'; @@ -7,7 +9,6 @@ import '../Guest.dart'; import 'StubData.dart'; import 'package:uuid/uuid.dart'; - class GameManager extends IGameManager { List games = []; final StubData parent; @@ -17,21 +18,37 @@ class GameManager extends IGameManager { // Methods GameDetail getGameById(Uuid id) { - return new GameDetail(Uuid(), DateTime.now(), Uuid(), 290, true, null, Guest(Uuid(),"",""), [ ], [] ); + for (var element in parent.gameDetails) { + if (element.id == id) { + return element; + } + } + throw Exception("Game not found."); } + List getGamesByPlayerId(Uuid id) { - return []; + List games = []; + for (var element in parent.gameDetails) { + if (element.players.contains(id)) { + games.add(element); + } + } + throw Exception("Game not found."); } + List getGamesByPlayer(Player user) { - return []; + return []; } - List getGamesByPlayers(List users) { + + List getGamesByPlayers(List users) { return []; } + List getPlayersByIdGame(Uuid id) { return []; } + Map getRankByIdGame(Uuid id) { return {}; } -} \ No newline at end of file +} diff --git a/Sources/bowlin_project/lib/model/StubManager/StubData.dart b/Sources/bowlin_project/lib/model/StubManager/StubData.dart index 08b9dc4..0be09df 100644 --- a/Sources/bowlin_project/lib/model/StubManager/StubData.dart +++ b/Sources/bowlin_project/lib/model/StubManager/StubData.dart @@ -1,9 +1,15 @@ library StubLib; + +import 'package:bowl_in/model/Game.dart'; + import '../IManager.dart'; import '../IUserManager.dart'; import '../IGameManager.dart'; +import '../Player.dart'; +import '../Round.dart'; import '../User.dart'; import '../Achievement.dart'; +import '../GameDetail.dart'; import '../Stat.dart'; import 'UserManager.dart'; import 'GameManager.dart'; @@ -16,11 +22,84 @@ class StubData extends IManager { StubData() { _userMgr = UserManager(this); _gameMgr = GameManager(this); + _initRounds(); + _initGameDetails(); + _initGame(); } + List players = [ + Player(Uuid(), "Mathieu", "./assets/images/image_user_cyan.png"), + Player(Uuid(), "Robin", "./assets/images/image_user_purple.png"), + Player(Uuid(), "Lucas", "./assets/images/image_user_red.png"), + Player(Uuid(), "Emre", "./assets/images/image_user_blue.png"), + Player(Uuid(), "Louison", "./assets/images/image_user_cyan.png"), + Player(Uuid(), "Arthur", "./assets/images/image_user_yellow.png"), + Player(Uuid(), "David", "./assets/images/image_user_pink.png"), + ]; + List users = [ - User(Uuid(),"Emre","https://fastly.picsum.photos/id/1060/2000/2000.jpg?hmac=_RrU8GpkCDUlVKfgyWE-GcX-GS5TKNyUzdFbJAGXHV4","emre.kartal@etu.uca.fr", [Achievement("5 games"), Achievement("2 strikes in a row"), Achievement("Win a game")], [], Stat(10,2,12,130,7,6,700,58.33,30.2)), - User(Uuid(),"Dave","https://fastly.picsum.photos/id/820/2000/2000.jpg?hmac=Ctxx2feJNZnG1S7UPx_YrWcEw89tKb7fR8i1W-VTOz4","david.d_almeida@etu.uca.fr", [Achievement("5 games"), Achievement("0 point"), Achievement("Win a game")], [], Stat(2,7,9,80,4,3,250,27.77,10.55)) + User( + Uuid(), + "Emre", + "https://fastly.picsum.photos/id/1060/2000/2000.jpg?hmac=_RrU8GpkCDUlVKfgyWE-GcX-GS5TKNyUzdFbJAGXHV4", + "emre.kartal@etu.uca.fr", + [ + Achievement("5 games"), + Achievement("2 strikes in a row"), + Achievement("Win a game") + ], + [], + Stat(10, 2, 12, 130, 7, 6, 700, 58.33, 30.2)), + User( + Uuid(), + "Dave", + "https://fastly.picsum.photos/id/820/2000/2000.jpg?hmac=Ctxx2feJNZnG1S7UPx_YrWcEw89tKb7fR8i1W-VTOz4", + "david.d_almeida@etu.uca.fr", + [ + Achievement("5 games"), + Achievement("0 point"), + Achievement("Win a game") + ], + [], + Stat(2, 7, 9, 80, 4, 3, 250, 27.77, 10.55)) ]; -} \ No newline at end of file + List gameDetails = []; + void _initGameDetails() { + var uui = Uuid(); + gameDetails.add(GameDetail(Uuid(), DateTime.now(), users[0].id, 123, true, + null, users[0].id, rounds, [players[0], players[1]])); + gameDetails.add(GameDetail(Uuid(), DateTime.now(), users[1].id, 113, true, + null, users[1].id, rounds, [players[0], players[1]])); + } + + List rounds = []; + void _initRounds() { + rounds.add(Round(4, 5, 9, users[0])); + rounds.add(Round(4, 1, 5, users[1])); + rounds.add(Round(4, 5, 9, users[0])); + rounds.add(Round(4, 1, 5, users[1])); + rounds.add(Round(4, 5, 9, users[0])); + rounds.add(Round(1, 5, 6, users[1])); + rounds.add(Round(4, 1, 5, users[0])); + rounds.add(Round(1, 5, 6, users[1])); + rounds.add(Round(4, 5, 9, users[0])); + rounds.add(Round(9, 0, 9, users[1])); + rounds.add(Round(4, 5, 9, users[0])); + rounds.add(Round(4, 5, 9, users[1])); + rounds.add(Round(4, 2, 6, users[0])); + rounds.add(Round(3, 5, 8, users[1])); + rounds.add(Round(4, 5, 9, users[0])); + rounds.add(Round(4, 5, 9, users[1])); + rounds.add(Round(1, 5, 6, users[0])); + rounds.add(Round(4, 5, 9, users[1])); + rounds.add(Round(4, 5, 9, users[0])); + rounds.add(Round(4, 1, 5, users[1])); + } + + List games = []; + void _initGame() { + games.add(Game(gameDetails[0].id, DateTime.now(), 123, true, [])); + games.add(Game(gameDetails[1].id, DateTime.now(), 101, true, [])); + } +} diff --git a/Sources/bowlin_project/lib/model/User.dart b/Sources/bowlin_project/lib/model/User.dart index 0355054..23ccf7c 100644 --- a/Sources/bowlin_project/lib/model/User.dart +++ b/Sources/bowlin_project/lib/model/User.dart @@ -1,5 +1,6 @@ import 'package:uuid/uuid.dart'; import 'Achievement.dart'; +import 'Game.dart'; import 'Player.dart'; import 'Stat.dart'; @@ -8,9 +9,11 @@ class User extends Player { List _achievements = []; List _friends = []; Stat _stat; + List games = []; // Constructor - User(Uuid id, String name, String image, this._mail, this._achievements, this._friends, this._stat) + User(Uuid id, String name, String image, this._mail, this._achievements, + this._friends, this._stat) : super(id, name, image); // Getters and setters diff --git a/Sources/bowlin_project/pubspec.lock b/Sources/bowlin_project/pubspec.lock index da2a4e6..581d755 100644 --- a/Sources/bowlin_project/pubspec.lock +++ b/Sources/bowlin_project/pubspec.lock @@ -5,120 +5,105 @@ packages: dependency: transitive description: name: archive - sha256: ed7cc591a948744994714375caf9a2ce89e1d82e8243997c8a2994d57181c212 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "3.3.5" + version: "3.3.6" args: dependency: transitive description: name: args - sha256: "139d809800a412ebb26a3892da228b2d0ba36f0ef5d9a82166e5e52ec8d61611" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.3.2" + version: "2.4.0" async: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.10.0" + version: "2.9.0" boolean_selector: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.1.0" characters: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.2.1" checked_yaml: dependency: transitive description: name: checked_yaml - sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.2" cli_util: dependency: transitive description: name: cli_util - sha256: "66f86e916d285c1a93d3b79587d94bd71984a66aac4ff74e524cfa7877f1395c" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.3.5" clock: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.1" collection: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "1.17.0" + version: "1.16.0" convert: dependency: transitive description: name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.1.1" crypto: dependency: transitive description: name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.0.2" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.5" fake_async: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.3.1" ffi: dependency: transitive description: name: ffi - sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" file: dependency: transitive description: name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "6.1.4" flutter: @@ -130,16 +115,14 @@ packages: dependency: "direct dev" description: name: flutter_launcher_icons - sha256: ce0e501cfc258907842238e4ca605e74b7fd1cdf04b3b43e86c43f3e40a1592c - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.11.0" flutter_lints: dependency: "direct dev" description: name: flutter_lints - sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" flutter_test: @@ -156,200 +139,175 @@ packages: dependency: "direct main" description: name: go_router - sha256: f611d4396469c46db1c61e934a86e2a590ce02de2a6050d01f677879ce151f4a - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "6.0.1" + version: "6.2.0" google_fonts: dependency: "direct main" description: name: google_fonts - sha256: "8f099045e2f2a30e4d4d0a35f40c6bc941a8f2ca0e10ad9d214ee9edd3f37483" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" http: dependency: transitive description: name: http - sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.13.5" http_parser: dependency: transitive description: name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "4.0.2" image: dependency: transitive description: name: image - sha256: "8e9d133755c3e84c73288363e6343157c383a0c6c56fc51afcc5d4d7180306d6" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.3.0" js: dependency: transitive description: name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "0.6.5" + version: "0.6.4" json_annotation: dependency: transitive description: name: json_annotation - sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "4.8.0" lints: dependency: transitive description: name: lints - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" logging: dependency: transitive description: name: logging - sha256: c0bbfe94d46aedf9b8b3e695cf3bd48c8e14b35e3b2c639e0aa7755d589ba946 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.1.1" matcher: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "0.12.13" + version: "0.12.12" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "0.2.0" + version: "0.1.5" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.8.0" path: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.8.2" path_provider: dependency: transitive description: name: path_provider - sha256: dcea5feb97d8abf90cab9e9030b497fb7c3cbf26b7a1fe9e3ef7dcb0a1ddec95 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.12" + version: "2.0.13" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: a776c088d671b27f6e3aa8881d64b87b3e80201c64e8869b811325de7a76c15e - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.22" + version: "2.0.23" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "6637955e38a5f1851c023482c25a60c93972ea06c8608e2f25ad0064c46c0939" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.2" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: ab0987bf95bc591da42dffb38c77398fc43309f0b9b894dcc5d6f40c4b26c379 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.1.7" + version: "2.1.9" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: f0abc8ebd7253741f05488b4813d936b4d07c6bae3e86148a09e342ee4b08e76 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.5" + version: "2.0.6" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: bcabbe399d4042b8ee687e17548d5d3f527255253b4a639f5f8d2094a9c2b45c - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.1.3" + version: "2.1.4" petitparser: dependency: transitive description: name: petitparser - sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "5.1.0" platform: dependency: transitive description: name: platform - sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.1.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.1.3" + version: "2.1.4" pointycastle: dependency: transitive description: name: pointycastle - sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.6.2" process: dependency: transitive description: name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "4.2.4" simple_gradient_text: dependency: "direct main" description: name: simple_gradient_text - sha256: "075a2cbabac021d3713d0d199b2d1b0d40f6293e1e9d37b25e84936ae43c90fa" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.2.4" sky_engine: @@ -361,104 +319,91 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "1.9.1" + version: "1.9.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "1.11.0" + version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.1.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.2.1" test_api: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "0.4.16" + version: "0.4.12" typed_data: dependency: transitive description: name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.3.1" uuid: dependency: "direct main" description: name: uuid - sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.0.7" vector_math: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.1.4" + version: "2.1.2" win32: dependency: transitive description: name: win32 - sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.1.3" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: bd512f03919aac5f1313eb8249f223bacf4927031bf60b02601f81f687689e86 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "0.2.0+3" + version: "1.0.0" xml: dependency: transitive description: name: xml - sha256: ac0e3f4bf00ba2708c33fbabbbe766300e509f8c82dbd4ab6525039813f7e2fb - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "6.1.0" yaml: dependency: transitive description: name: yaml - sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.1.1" sdks: diff --git a/Sources/bowlin_project/test/model_test.dart b/Sources/bowlin_project/test/model_test.dart index 25685c3..c4e01e8 100644 --- a/Sources/bowlin_project/test/model_test.dart +++ b/Sources/bowlin_project/test/model_test.dart @@ -15,57 +15,67 @@ void main() { for (int i = 0; i < 10; i++) { Stat stat = Stat( - random.nextInt(50) + 1, // valeur aléatoire entre 1 et 50 - random.nextInt(20) + 1, // valeur aléatoire entre 1 et 20 - random.nextInt(30) + 1, // valeur aléatoire entre 1 et 30 - random.nextInt(1000) + 1, // valeur aléatoire entre 1 et 1000 - random.nextInt(10) + 1, // valeur aléatoire entre 1 et 10 - random.nextInt(5) + 1, // valeur aléatoire entre 1 et 5 - random.nextInt(5000) + 1000, // valeur aléatoire entre 1000 et 6000 - random.nextInt(300) + 1, // valeur aléatoire entre 1 et 300 - random.nextDouble() * 10 // valeur aléatoire entre 0 et 10 - ); + random.nextInt(50) + 1, // valeur aléatoire entre 1 et 50 + random.nextInt(20) + 1, // valeur aléatoire entre 1 et 20 + random.nextInt(30) + 1, // valeur aléatoire entre 1 et 30 + random.nextInt(1000) + 1, // valeur aléatoire entre 1 et 1000 + random.nextInt(10) + 1, // valeur aléatoire entre 1 et 10 + random.nextInt(5) + 1, // valeur aléatoire entre 1 et 5 + random.nextInt(5000) + 1000, // valeur aléatoire entre 1000 et 6000 + random.nextInt(300) + 1, // valeur aléatoire entre 1 et 300 + random.nextDouble() * 10 // valeur aléatoire entre 0 et 10 + ); stats.add(stat); } print("Stats:"); for (var stat in stats) { - print("\tVictoires: ${stat.nbVictory}, Défaites: ${stat.nbDefeat}, Parties jouées: ${stat.nbGames}, Meilleur score: ${stat.highscore}, Nombre de strikes: ${stat.nbStrikes}, Nom de spares: ${stat.nbStrikes}, Moyenne score: ${stat.avgScore}, Moyenne score par round: ${stat.avgPinsPerRound}"); + print( + "\tVictoires: ${stat.nbVictory}, Défaites: ${stat.nbDefeat}, Parties jouées: ${stat.nbGames}, Meilleur score: ${stat.highscore}, Nombre de strikes: ${stat.nbStrikes}, Nom de spares: ${stat.nbStrikes}, Moyenne score: ${stat.avgScore}, Moyenne score par round: ${stat.avgPinsPerRound}"); } - User ami = User(Uuid(), "Lucas","https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY","Lucas.delanier@etu.uca.fr",[],[], stats[1]); + User ami = User( + Uuid(), + "Lucas", + "https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY", + "Lucas.delanier@etu.uca.fr", + [], + [], + stats[1]); List players = [ - Player(Uuid(), "Rami", "https://fastly.picsum.photos/id/1060/2000/2000.jpg?hmac=_RrU8GpkCDUlVKfgyWE-GcX-GS5TKNyUzdFbJAGXHV4"), - Player(Uuid(), "Emre", "https://fastly.picsum.photos/id/670/2000/2000.jpg?hmac=zWqTr_vDEab3dBtp7JZgJP8TRCPNanJ4tYwDDd-jGYA"), - Guest(Uuid(), "Bot1","https://fastly.picsum.photos/id/820/2000/2000.jpg?hmac=Ctxx2feJNZnG1S7UPx_YrWcEw89tKb7fR8i1W-VTOz4"), - Guest(Uuid(), "Bot2","https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY"), + Player(Uuid(), "Rami", + "https://fastly.picsum.photos/id/1060/2000/2000.jpg?hmac=_RrU8GpkCDUlVKfgyWE-GcX-GS5TKNyUzdFbJAGXHV4"), + Player(Uuid(), "Emre", + "https://fastly.picsum.photos/id/670/2000/2000.jpg?hmac=zWqTr_vDEab3dBtp7JZgJP8TRCPNanJ4tYwDDd-jGYA"), + Guest(Uuid(), "Bot1", + "https://fastly.picsum.photos/id/820/2000/2000.jpg?hmac=Ctxx2feJNZnG1S7UPx_YrWcEw89tKb7fR8i1W-VTOz4"), + Guest(Uuid(), "Bot2", + "https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY"), ami, User( - Uuid(), - "Louison", - "https://fastly.picsum.photos/id/1029/2000/2000.jpg?hmac=_K3pMobVk00dfNR7rsj1NLnEBB5Gf88SvGPbbjoH-Uc", - "louison.parant@etu.uca.fr", - [ - Achievement("5 games"), - Achievement("2 strikes in a row"), - Achievement("Win a game") - ], - [ - ami - ], - stats[0] - ) + Uuid(), + "Louison", + "https://fastly.picsum.photos/id/1029/2000/2000.jpg?hmac=_K3pMobVk00dfNR7rsj1NLnEBB5Gf88SvGPbbjoH-Uc", + "louison.parant@etu.uca.fr", + [ + Achievement("5 games"), + Achievement("2 strikes in a row"), + Achievement("Win a game") + ], + [ami], + stats[0]) ]; - print("Players :"); - // afficahge de toutes les informations de tous les joueurs + // afficahge de toutes les informations de tous les joueurs for (var player in players) { if (player is Guest) { - print("\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Guest"); + print( + "\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Guest"); } else if (player is User) { - print("\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: User"); + print( + "\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: User"); print("\tAchievements:"); for (var achievement in player.achievements) { print("\t\tNom: ${achievement.name}"); @@ -74,22 +84,101 @@ void main() { for (var amis in player.friends) { print("\t\tNom: ${amis.name}, Mail: ${amis.mail}"); } - print("\tVictoires: ${player.stat.nbVictory}, Défaites: ${player.stat.nbDefeat}, Parties jouées: ${player.stat.nbGames}, Meilleur score: ${player.stat.highscore}, Nombre de strikes: ${player.stat.nbStrikes}, Nom de spares: ${player.stat.nbStrikes}, Moyenne score: ${player.stat.avgScore}, Moyenne score par round: ${player.stat.avgPinsPerRound}"); + print( + "\tVictoires: ${player.stat.nbVictory}, Défaites: ${player.stat.nbDefeat}, Parties jouées: ${player.stat.nbGames}, Meilleur score: ${player.stat.highscore}, Nombre de strikes: ${player.stat.nbStrikes}, Nom de spares: ${player.stat.nbStrikes}, Moyenne score: ${player.stat.avgScore}, Moyenne score par round: ${player.stat.avgPinsPerRound}"); } else { - print("\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Player"); + print( + "\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Player"); } } //GameDetail - - List games = [ - GameDetail(Uuid(), DateTime.now(), players[0].id, 290, true, null, players[0], [ Round(10,null,10, players[0]), Round(5,2,7, players[1]), Round(5,2,7, players[1]), Round(5,1,12,players[0])], [players[0],players[1]] ), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 2)), players[1].id, 250, true, null, players[1], [ Round(7,null,7, players[1]), Round(3,3,9, players[0]), Round(5,2,7, players[1]), Round(5,1,12,players[0])], [players[0],players[1]] ), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 4)), players[2].id, 210, false, null, players[2], [ Round(8,2,10, players[2]), Round(6,2,8, players[1]), Round(4,2,6, players[2]), Round(2,2,4,players[1])], [players[1],players[2]] ), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 7)), players[3].id, 120, true, Round(12,null,12, players[3]), players[3], [ Round(12,null,12, players[3]), Round(7,3,10, players[2]), Round(6,2,8, players[1]), Round(5,1,12,players[0])], [players[0],players[1],players[2],players[3]] ), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 10)), players[4].id, 280, true, null, players[4], [ Round(9,1,10, players[4]), Round(7,3,10, players[2]), Round(8,2,10, players[3]), Round(5,2,7,players[1])], [players[1],players[2],players[3],players[4]] ), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 12)), players[1].id, 240, true, null, players[1], [ Round(7,null,7, players[1]), Round(5,2,7, players[2]), Round(6,2,8, players[1]), Round(5,1,12,players[0])], [players[0],players[1],players[2],players[4]] ), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 15)), players[2].id, 200, true, null, players[2], [ Round(8,2,10, players[2]), Round(4,2,6, players[1]), Round(7,3,10, players[3]), Round(5,2,7,players[0])], [players[0],players[1],players[2],players[3]] ) + + List games = [ + GameDetail( + Uuid(), DateTime.now(), players[0].id, 290, true, null, players[0].id, [ + Round(10, null, 10, players[0]), + Round(5, 2, 7, players[1]), + Round(5, 1, 12, players[0]), + Round(5, 2, 7, players[1]), + ], [ + players[0], + players[1] + ]), + GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 2)), + players[1].id, 250, true, null, players[1].id, [ + Round(7, null, 7, players[1]), + Round(3, 3, 9, players[0]), + Round(5, 2, 7, players[1]), + Round(5, 1, 12, players[0]) + ], [ + players[0], + players[1] + ]), + GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 4)), + players[2].id, 210, false, null, players[2].id, [ + Round(8, 2, 10, players[2]), + Round(6, 2, 8, players[1]), + Round(4, 2, 6, players[2]), + Round(2, 2, 4, players[1]) + ], [ + players[1], + players[2] + ]), + GameDetail( + Uuid(), + DateTime.now().subtract(Duration(days: 7)), + players[3].id, + 120, + true, + Round(12, null, 12, players[3]), + players[3].id, [ + Round(12, null, 12, players[3]), + Round(7, 3, 10, players[2]), + Round(6, 2, 8, players[1]), + Round(5, 1, 12, players[0]) + ], [ + players[0], + players[1], + players[2], + players[3] + ]), + GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 10)), + players[4].id, 280, true, null, players[4].id, [ + Round(9, 1, 10, players[4]), + Round(7, 3, 10, players[2]), + Round(8, 2, 10, players[3]), + Round(5, 2, 7, players[1]) + ], [ + players[1], + players[2], + players[3], + players[4] + ]), + GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 12)), + players[1].id, 240, true, null, players[1].id, [ + Round(7, null, 7, players[1]), + Round(5, 2, 7, players[2]), + Round(6, 2, 8, players[1]), + Round(5, 1, 12, players[0]) + ], [ + players[0], + players[1], + players[2], + players[4] + ]), + GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 15)), + players[2].id, 200, true, null, players[2].id, [ + Round(8, 2, 10, players[2]), + Round(4, 2, 6, players[1]), + Round(7, 3, 10, players[3]), + Round(5, 2, 7, players[0]) + ], [ + players[0], + players[1], + players[2], + players[3] + ]) ]; print("GameDetail :"); @@ -101,6 +190,7 @@ void main() { print("\tIs Finished: ${game.isFinished}"); print("\tCurrent Round: ${game.currentRound}"); print("\tHost: ${game.host}"); + print("\tRank: ${game.getRank()}"); print("\tRounds:"); for (var round in game.rounds) { @@ -116,11 +206,8 @@ void main() { print("\t\tPlayer Name: ${player.name}"); } - print("\t-----------------------------------------"); - - print("StubManager:"); - -} - + print("\t-----------------------------------------"); + print("StubManager:"); + } } From 6953ae96e29caa70b9ce08384632a1d07ede28bb Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Fri, 3 Mar 2023 13:25:41 +0100 Subject: [PATCH 07/18] fix new model --- Sources/bowlin_project/lib/model/Game.dart | 11 +- .../bowlin_project/lib/model/GameDetail.dart | 8 +- .../lib/model/StubManager/GameManager.dart | 18 +- Sources/bowlin_project/lib/model/User.dart | 5 +- Sources/bowlin_project/test/model_test.dart | 188 +++++++++++++----- 5 files changed, 163 insertions(+), 67 deletions(-) diff --git a/Sources/bowlin_project/lib/model/Game.dart b/Sources/bowlin_project/lib/model/Game.dart index bf0065b..8f28041 100644 --- a/Sources/bowlin_project/lib/model/Game.dart +++ b/Sources/bowlin_project/lib/model/Game.dart @@ -5,10 +5,11 @@ class Game { DateTime _time; int _pointsCurrentUser; bool _isFinished; - List _playerImages = []; + List _playerIds = []; // Constructor - Game(this._id, this._time, this._pointsCurrentUser, this._isFinished, this._playerImages); + Game(this._id, this._time, this._pointsCurrentUser, this._isFinished, + this._playerIds); // Getters and setters Uuid get id => _id; @@ -35,9 +36,9 @@ class Game { _isFinished = value; } - List get playerImages => _playerImages; + List get playerIds => _playerIds; - set playerImages(List value) { - _playerImages = value; + set playerIds(List value) { + _playerIds = value; } } diff --git a/Sources/bowlin_project/lib/model/GameDetail.dart b/Sources/bowlin_project/lib/model/GameDetail.dart index 12a86f2..a7ece99 100644 --- a/Sources/bowlin_project/lib/model/GameDetail.dart +++ b/Sources/bowlin_project/lib/model/GameDetail.dart @@ -9,7 +9,7 @@ class GameDetail { int _nbPoints; bool _isFinished; Round? _currentRound; - Player _host; + Uuid _host; List _rounds = []; List _players = []; @@ -24,7 +24,7 @@ class GameDetail { this._host, this._rounds, this._players); - + // Getters and setters Uuid get id => _id; @@ -62,9 +62,9 @@ class GameDetail { _currentRound = value; } - Player get host => _host; + Uuid get host => _host; - set host(Player value) { + set host(Uuid value) { _host = value; } diff --git a/Sources/bowlin_project/lib/model/StubManager/GameManager.dart b/Sources/bowlin_project/lib/model/StubManager/GameManager.dart index 01b7dbb..4efbe18 100644 --- a/Sources/bowlin_project/lib/model/StubManager/GameManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/GameManager.dart @@ -1,4 +1,5 @@ library StubLib; + import '../IGameManager.dart'; import '../GameDetail.dart'; import '../Player.dart'; @@ -7,7 +8,6 @@ import '../Guest.dart'; import 'StubData.dart'; import 'package:uuid/uuid.dart'; - class GameManager extends IGameManager { List games = []; final StubData parent; @@ -17,21 +17,27 @@ class GameManager extends IGameManager { // Methods GameDetail getGameById(Uuid id) { - return new GameDetail(Uuid(), DateTime.now(), Uuid(), 290, true, null, Guest(Uuid(),"",""), [ ], [] ); + return new GameDetail( + Uuid(), DateTime.now(), Uuid(), 290, true, null, Uuid(), [], []); } + List getGamesByPlayerId(Uuid id) { - return []; + return []; } + List getGamesByPlayer(Player user) { - return []; + return []; } - List getGamesByPlayers(List users) { + + List getGamesByPlayers(List users) { return []; } + List getPlayersByIdGame(Uuid id) { return []; } + Map getRankByIdGame(Uuid id) { return {}; } -} \ No newline at end of file +} diff --git a/Sources/bowlin_project/lib/model/User.dart b/Sources/bowlin_project/lib/model/User.dart index 0355054..23ccf7c 100644 --- a/Sources/bowlin_project/lib/model/User.dart +++ b/Sources/bowlin_project/lib/model/User.dart @@ -1,5 +1,6 @@ import 'package:uuid/uuid.dart'; import 'Achievement.dart'; +import 'Game.dart'; import 'Player.dart'; import 'Stat.dart'; @@ -8,9 +9,11 @@ class User extends Player { List _achievements = []; List _friends = []; Stat _stat; + List games = []; // Constructor - User(Uuid id, String name, String image, this._mail, this._achievements, this._friends, this._stat) + User(Uuid id, String name, String image, this._mail, this._achievements, + this._friends, this._stat) : super(id, name, image); // Getters and setters diff --git a/Sources/bowlin_project/test/model_test.dart b/Sources/bowlin_project/test/model_test.dart index 25685c3..ae0dabf 100644 --- a/Sources/bowlin_project/test/model_test.dart +++ b/Sources/bowlin_project/test/model_test.dart @@ -15,57 +15,67 @@ void main() { for (int i = 0; i < 10; i++) { Stat stat = Stat( - random.nextInt(50) + 1, // valeur aléatoire entre 1 et 50 - random.nextInt(20) + 1, // valeur aléatoire entre 1 et 20 - random.nextInt(30) + 1, // valeur aléatoire entre 1 et 30 - random.nextInt(1000) + 1, // valeur aléatoire entre 1 et 1000 - random.nextInt(10) + 1, // valeur aléatoire entre 1 et 10 - random.nextInt(5) + 1, // valeur aléatoire entre 1 et 5 - random.nextInt(5000) + 1000, // valeur aléatoire entre 1000 et 6000 - random.nextInt(300) + 1, // valeur aléatoire entre 1 et 300 - random.nextDouble() * 10 // valeur aléatoire entre 0 et 10 - ); + random.nextInt(50) + 1, // valeur aléatoire entre 1 et 50 + random.nextInt(20) + 1, // valeur aléatoire entre 1 et 20 + random.nextInt(30) + 1, // valeur aléatoire entre 1 et 30 + random.nextInt(1000) + 1, // valeur aléatoire entre 1 et 1000 + random.nextInt(10) + 1, // valeur aléatoire entre 1 et 10 + random.nextInt(5) + 1, // valeur aléatoire entre 1 et 5 + random.nextInt(5000) + 1000, // valeur aléatoire entre 1000 et 6000 + random.nextInt(300) + 1, // valeur aléatoire entre 1 et 300 + random.nextDouble() * 10 // valeur aléatoire entre 0 et 10 + ); stats.add(stat); } print("Stats:"); for (var stat in stats) { - print("\tVictoires: ${stat.nbVictory}, Défaites: ${stat.nbDefeat}, Parties jouées: ${stat.nbGames}, Meilleur score: ${stat.highscore}, Nombre de strikes: ${stat.nbStrikes}, Nom de spares: ${stat.nbStrikes}, Moyenne score: ${stat.avgScore}, Moyenne score par round: ${stat.avgPinsPerRound}"); + print( + "\tVictoires: ${stat.nbVictory}, Défaites: ${stat.nbDefeat}, Parties jouées: ${stat.nbGames}, Meilleur score: ${stat.highscore}, Nombre de strikes: ${stat.nbStrikes}, Nom de spares: ${stat.nbStrikes}, Moyenne score: ${stat.avgScore}, Moyenne score par round: ${stat.avgPinsPerRound}"); } - User ami = User(Uuid(), "Lucas","https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY","Lucas.delanier@etu.uca.fr",[],[], stats[1]); + User ami = User( + Uuid(), + "Lucas", + "https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY", + "Lucas.delanier@etu.uca.fr", + [], + [], + stats[1]); List players = [ - Player(Uuid(), "Rami", "https://fastly.picsum.photos/id/1060/2000/2000.jpg?hmac=_RrU8GpkCDUlVKfgyWE-GcX-GS5TKNyUzdFbJAGXHV4"), - Player(Uuid(), "Emre", "https://fastly.picsum.photos/id/670/2000/2000.jpg?hmac=zWqTr_vDEab3dBtp7JZgJP8TRCPNanJ4tYwDDd-jGYA"), - Guest(Uuid(), "Bot1","https://fastly.picsum.photos/id/820/2000/2000.jpg?hmac=Ctxx2feJNZnG1S7UPx_YrWcEw89tKb7fR8i1W-VTOz4"), - Guest(Uuid(), "Bot2","https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY"), + Player(Uuid(), "Rami", + "https://fastly.picsum.photos/id/1060/2000/2000.jpg?hmac=_RrU8GpkCDUlVKfgyWE-GcX-GS5TKNyUzdFbJAGXHV4"), + Player(Uuid(), "Emre", + "https://fastly.picsum.photos/id/670/2000/2000.jpg?hmac=zWqTr_vDEab3dBtp7JZgJP8TRCPNanJ4tYwDDd-jGYA"), + Guest(Uuid(), "Bot1", + "https://fastly.picsum.photos/id/820/2000/2000.jpg?hmac=Ctxx2feJNZnG1S7UPx_YrWcEw89tKb7fR8i1W-VTOz4"), + Guest(Uuid(), "Bot2", + "https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY"), ami, User( - Uuid(), - "Louison", - "https://fastly.picsum.photos/id/1029/2000/2000.jpg?hmac=_K3pMobVk00dfNR7rsj1NLnEBB5Gf88SvGPbbjoH-Uc", - "louison.parant@etu.uca.fr", - [ - Achievement("5 games"), - Achievement("2 strikes in a row"), - Achievement("Win a game") - ], - [ - ami - ], - stats[0] - ) + Uuid(), + "Louison", + "https://fastly.picsum.photos/id/1029/2000/2000.jpg?hmac=_K3pMobVk00dfNR7rsj1NLnEBB5Gf88SvGPbbjoH-Uc", + "louison.parant@etu.uca.fr", + [ + Achievement("5 games"), + Achievement("2 strikes in a row"), + Achievement("Win a game") + ], + [ami], + stats[0]) ]; - print("Players :"); - // afficahge de toutes les informations de tous les joueurs + // afficahge de toutes les informations de tous les joueurs for (var player in players) { if (player is Guest) { - print("\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Guest"); + print( + "\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Guest"); } else if (player is User) { - print("\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: User"); + print( + "\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: User"); print("\tAchievements:"); for (var achievement in player.achievements) { print("\t\tNom: ${achievement.name}"); @@ -74,22 +84,101 @@ void main() { for (var amis in player.friends) { print("\t\tNom: ${amis.name}, Mail: ${amis.mail}"); } - print("\tVictoires: ${player.stat.nbVictory}, Défaites: ${player.stat.nbDefeat}, Parties jouées: ${player.stat.nbGames}, Meilleur score: ${player.stat.highscore}, Nombre de strikes: ${player.stat.nbStrikes}, Nom de spares: ${player.stat.nbStrikes}, Moyenne score: ${player.stat.avgScore}, Moyenne score par round: ${player.stat.avgPinsPerRound}"); + print( + "\tVictoires: ${player.stat.nbVictory}, Défaites: ${player.stat.nbDefeat}, Parties jouées: ${player.stat.nbGames}, Meilleur score: ${player.stat.highscore}, Nombre de strikes: ${player.stat.nbStrikes}, Nom de spares: ${player.stat.nbStrikes}, Moyenne score: ${player.stat.avgScore}, Moyenne score par round: ${player.stat.avgPinsPerRound}"); } else { - print("\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Player"); + print( + "\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Player"); } } //GameDetail - - List games = [ - GameDetail(Uuid(), DateTime.now(), players[0].id, 290, true, null, players[0], [ Round(10,null,10, players[0]), Round(5,2,7, players[1]), Round(5,2,7, players[1]), Round(5,1,12,players[0])], [players[0],players[1]] ), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 2)), players[1].id, 250, true, null, players[1], [ Round(7,null,7, players[1]), Round(3,3,9, players[0]), Round(5,2,7, players[1]), Round(5,1,12,players[0])], [players[0],players[1]] ), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 4)), players[2].id, 210, false, null, players[2], [ Round(8,2,10, players[2]), Round(6,2,8, players[1]), Round(4,2,6, players[2]), Round(2,2,4,players[1])], [players[1],players[2]] ), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 7)), players[3].id, 120, true, Round(12,null,12, players[3]), players[3], [ Round(12,null,12, players[3]), Round(7,3,10, players[2]), Round(6,2,8, players[1]), Round(5,1,12,players[0])], [players[0],players[1],players[2],players[3]] ), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 10)), players[4].id, 280, true, null, players[4], [ Round(9,1,10, players[4]), Round(7,3,10, players[2]), Round(8,2,10, players[3]), Round(5,2,7,players[1])], [players[1],players[2],players[3],players[4]] ), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 12)), players[1].id, 240, true, null, players[1], [ Round(7,null,7, players[1]), Round(5,2,7, players[2]), Round(6,2,8, players[1]), Round(5,1,12,players[0])], [players[0],players[1],players[2],players[4]] ), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 15)), players[2].id, 200, true, null, players[2], [ Round(8,2,10, players[2]), Round(4,2,6, players[1]), Round(7,3,10, players[3]), Round(5,2,7,players[0])], [players[0],players[1],players[2],players[3]] ) + + List games = [ + GameDetail( + Uuid(), DateTime.now(), players[0].id, 290, true, null, players[0].id, [ + Round(10, null, 10, players[0]), + Round(5, 2, 7, players[1]), + Round(5, 2, 7, players[1]), + Round(5, 1, 12, players[0]) + ], [ + players[0], + players[1] + ]), + GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 2)), + players[1].id, 250, true, null, players[1].id, [ + Round(7, null, 7, players[1]), + Round(3, 3, 9, players[0]), + Round(5, 2, 7, players[1]), + Round(5, 1, 12, players[0]) + ], [ + players[0], + players[1] + ]), + GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 4)), + players[2].id, 210, false, null, players[2].id, [ + Round(8, 2, 10, players[2]), + Round(6, 2, 8, players[1]), + Round(4, 2, 6, players[2]), + Round(2, 2, 4, players[1]) + ], [ + players[1], + players[2] + ]), + GameDetail( + Uuid(), + DateTime.now().subtract(Duration(days: 7)), + players[3].id, + 120, + true, + Round(12, null, 12, players[3]), + players[3].id, [ + Round(12, null, 12, players[3]), + Round(7, 3, 10, players[2]), + Round(6, 2, 8, players[1]), + Round(5, 1, 12, players[0]) + ], [ + players[0], + players[1], + players[2], + players[3] + ]), + GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 10)), + players[4].id, 280, true, null, players[4].id, [ + Round(9, 1, 10, players[4]), + Round(7, 3, 10, players[2]), + Round(8, 2, 10, players[3]), + Round(5, 2, 7, players[1]) + ], [ + players[1], + players[2], + players[3], + players[4] + ]), + GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 12)), + players[1].id, 240, true, null, players[1].id, [ + Round(7, null, 7, players[1]), + Round(5, 2, 7, players[2]), + Round(6, 2, 8, players[1]), + Round(5, 1, 12, players[0]) + ], [ + players[0], + players[1], + players[2], + players[4] + ]), + GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 15)), + players[2].id, 200, true, null, players[2].id, [ + Round(8, 2, 10, players[2]), + Round(4, 2, 6, players[1]), + Round(7, 3, 10, players[3]), + Round(5, 2, 7, players[0]) + ], [ + players[0], + players[1], + players[2], + players[3] + ]) ]; print("GameDetail :"); @@ -116,11 +205,8 @@ void main() { print("\t\tPlayer Name: ${player.name}"); } - print("\t-----------------------------------------"); - - print("StubManager:"); - -} - + print("\t-----------------------------------------"); + print("StubManager:"); + } } From 9f30fce136cd2a746cdae7f5cf828a20f87a44b0 Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Thu, 9 Mar 2023 11:51:04 +0100 Subject: [PATCH 08/18] binding profile page and home page --- Sources/bowlin_project/lib/main.dart | 4 + Sources/bowlin_project/lib/model/Game.dart | 10 +-- .../bowlin_project/lib/model/IManager.dart | 7 +- .../lib/model/StubManager/StubData.dart | 9 ++- .../lib/views/analysis_screen.dart | 10 ++- .../lib/widgets/achievements_list_widget.dart | 79 +++++++++++-------- .../lib/widgets/scores_list_widget.dart | 48 +++++------ Sources/bowlin_project/pubspec.lock | 7 ++ Sources/bowlin_project/pubspec.yaml | 2 + 9 files changed, 107 insertions(+), 69 deletions(-) diff --git a/Sources/bowlin_project/lib/main.dart b/Sources/bowlin_project/lib/main.dart index eb7f158..1046f67 100644 --- a/Sources/bowlin_project/lib/main.dart +++ b/Sources/bowlin_project/lib/main.dart @@ -8,11 +8,15 @@ import 'package:flutter/services.dart'; import 'package:go_router/go_router.dart'; import 'package:bowl_in/config/app_router.dart'; +import 'model/IManager.dart'; +import 'model/StubManager/StubData.dart'; + void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { + static IManager controller = StubData(); const MyApp({super.key}); @override Widget build(BuildContext context) { diff --git a/Sources/bowlin_project/lib/model/Game.dart b/Sources/bowlin_project/lib/model/Game.dart index 16cc875..aeeb35e 100644 --- a/Sources/bowlin_project/lib/model/Game.dart +++ b/Sources/bowlin_project/lib/model/Game.dart @@ -2,13 +2,13 @@ import 'package:uuid/uuid.dart'; class Game { Uuid _id; - DateTime _time; + DateTime _date; int _pointsCurrentUser; bool _isFinished; List _playersId = []; // Constructor - Game(this._id, this._time, this._pointsCurrentUser, this._isFinished, + Game(this._id, this._date, this._pointsCurrentUser, this._isFinished, this._playersId); // Getters and setters @@ -18,10 +18,10 @@ class Game { _id = value; } - DateTime get time => _time; + DateTime get date => _date; - set time(DateTime value) { - _time = value; + set date(DateTime value) { + _date = value; } int get pointsCurrentUser => _pointsCurrentUser; diff --git a/Sources/bowlin_project/lib/model/IManager.dart b/Sources/bowlin_project/lib/model/IManager.dart index aca3c7a..f30f996 100644 --- a/Sources/bowlin_project/lib/model/IManager.dart +++ b/Sources/bowlin_project/lib/model/IManager.dart @@ -9,9 +9,14 @@ abstract class IManager { late Game _gameCurrent; late IUserManager _userMgr; late IGameManager _gameMgr; - + // Getters and setters User get userCurrent => _userCurrent; + + set userCurrent(User user) { + _userCurrent = user; + } + Game get gameCurrent => _gameCurrent; IUserManager get userMgr => _userMgr; IGameManager get gameMgr => _gameMgr; diff --git a/Sources/bowlin_project/lib/model/StubManager/StubData.dart b/Sources/bowlin_project/lib/model/StubManager/StubData.dart index 0be09df..88a5efe 100644 --- a/Sources/bowlin_project/lib/model/StubManager/StubData.dart +++ b/Sources/bowlin_project/lib/model/StubManager/StubData.dart @@ -25,6 +25,8 @@ class StubData extends IManager { _initRounds(); _initGameDetails(); _initGame(); + users[1].games = games; + userCurrent = users[1]; } List players = [ @@ -41,7 +43,7 @@ class StubData extends IManager { User( Uuid(), "Emre", - "https://fastly.picsum.photos/id/1060/2000/2000.jpg?hmac=_RrU8GpkCDUlVKfgyWE-GcX-GS5TKNyUzdFbJAGXHV4", + "./assets/images/image_user_cyan.png", "emre.kartal@etu.uca.fr", [ Achievement("5 games"), @@ -53,7 +55,7 @@ class StubData extends IManager { User( Uuid(), "Dave", - "https://fastly.picsum.photos/id/820/2000/2000.jpg?hmac=Ctxx2feJNZnG1S7UPx_YrWcEw89tKb7fR8i1W-VTOz4", + "./assets/images/image_user_cyan.png", "david.d_almeida@etu.uca.fr", [ Achievement("5 games"), @@ -99,7 +101,8 @@ class StubData extends IManager { List games = []; void _initGame() { - games.add(Game(gameDetails[0].id, DateTime.now(), 123, true, [])); + games.add(Game(gameDetails[0].id, + DateTime.now().subtract(Duration(days: 14)), 123, true, [])); games.add(Game(gameDetails[1].id, DateTime.now(), 101, true, [])); } } diff --git a/Sources/bowlin_project/lib/views/analysis_screen.dart b/Sources/bowlin_project/lib/views/analysis_screen.dart index 7defc1f..77992da 100644 --- a/Sources/bowlin_project/lib/views/analysis_screen.dart +++ b/Sources/bowlin_project/lib/views/analysis_screen.dart @@ -1,3 +1,4 @@ +import 'package:bowl_in/main.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -42,15 +43,18 @@ class _AnalysisScreenState extends State { children: [ Positioned( left: 34, - child: SpareCard(score: 12), + child: SpareCard( + score: MyApp.controller.userCurrent.stat.nbSpares), ), Positioned( top: 0, - child: StrikeCard(score: 12), + child: StrikeCard( + score: MyApp.controller.userCurrent.stat.nbStrikes), ), Positioned( right: 34, - child: GameCard(score: 12), + child: GameCard( + score: MyApp.controller.userCurrent.stat.nbGames), ) ], ), diff --git a/Sources/bowlin_project/lib/widgets/achievements_list_widget.dart b/Sources/bowlin_project/lib/widgets/achievements_list_widget.dart index b79be72..fe29292 100644 --- a/Sources/bowlin_project/lib/widgets/achievements_list_widget.dart +++ b/Sources/bowlin_project/lib/widgets/achievements_list_widget.dart @@ -1,3 +1,4 @@ +import 'package:bowl_in/main.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; @@ -152,7 +153,7 @@ class ProfileWidget extends StatelessWidget { width: 80, decoration: BoxDecoration( image: DecorationImage( - image: AssetImage("assets/images/image_user_orange.png"), + image: AssetImage(MyApp.controller.userCurrent.image), fit: BoxFit.cover), borderRadius: BorderRadius.all(Radius.circular(100)), ), @@ -163,7 +164,7 @@ class ProfileWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - "Lucas", + MyApp.controller.userCurrent.name, style: GoogleFonts.roboto( color: Colors.white, fontStyle: FontStyle.italic, @@ -186,7 +187,9 @@ class ProfileWidget extends StatelessWidget { fontSize: 15), ), TextSpan( - text: "122 pts", + text: MyApp.controller.userCurrent.stat.highscore + .toString() + + " pts", style: GoogleFonts.roboto( color: Color(0xffF40375).withOpacity(0.75), fontStyle: FontStyle.italic, @@ -197,38 +200,44 @@ class ProfileWidget extends StatelessWidget { ), ), ), - RichText( - text: TextSpan( - text: '', - style: DefaultTextStyle.of(context).style, - children: [ - TextSpan( - text: "Last game ", - style: GoogleFonts.roboto( - color: Colors.white.withOpacity(0.65), - fontStyle: FontStyle.italic, - fontWeight: FontWeight.bold, - fontSize: 15), - ), - TextSpan( - text: "23", - style: GoogleFonts.roboto( - color: Colors.white, - fontStyle: FontStyle.italic, - fontWeight: FontWeight.bold, - fontSize: 15), - ), - TextSpan( - text: " days(s) ago", - style: GoogleFonts.roboto( - color: Colors.white.withOpacity(0.65), - fontStyle: FontStyle.italic, - fontWeight: FontWeight.bold, - fontSize: 15), - ), - ], - ), - ), + MyApp.controller.userCurrent.games.length > 0 + ? RichText( + text: TextSpan( + text: '', + style: DefaultTextStyle.of(context).style, + children: [ + TextSpan( + text: "Last game ", + style: GoogleFonts.roboto( + color: Colors.white.withOpacity(0.65), + fontStyle: FontStyle.italic, + fontWeight: FontWeight.bold, + fontSize: 15), + ), + TextSpan( + text: DateTime.now() + .difference(MyApp + .controller.userCurrent.games.first.date) + .inDays + .toString(), + style: GoogleFonts.roboto( + color: Colors.white, + fontStyle: FontStyle.italic, + fontWeight: FontWeight.bold, + fontSize: 15), + ), + TextSpan( + text: " days(s) ago", + style: GoogleFonts.roboto( + color: Colors.white.withOpacity(0.65), + fontStyle: FontStyle.italic, + fontWeight: FontWeight.bold, + fontSize: 15), + ), + ], + ), + ) + : Container(), ], ), ) diff --git a/Sources/bowlin_project/lib/widgets/scores_list_widget.dart b/Sources/bowlin_project/lib/widgets/scores_list_widget.dart index 01e20c2..f2acc8f 100644 --- a/Sources/bowlin_project/lib/widgets/scores_list_widget.dart +++ b/Sources/bowlin_project/lib/widgets/scores_list_widget.dart @@ -1,13 +1,22 @@ +import 'package:bowl_in/main.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:google_fonts/google_fonts.dart'; +import 'package:intl/date_symbol_data_local.dart'; +import 'package:intl/intl.dart'; import 'package:simple_gradient_text/simple_gradient_text.dart'; +import '../model/Game.dart'; + class CardGame extends StatelessWidget { + final Game game; + + const CardGame({Key? key, required this.game}) : super(key: key); @override Widget build(BuildContext context) { + initializeDateFormatting(); return Padding( padding: EdgeInsets.fromLTRB(41, 0, 41, 10), child: GestureDetector( @@ -29,7 +38,7 @@ class CardGame extends StatelessWidget { ), ), child: Padding( - padding: EdgeInsets.fromLTRB(130, 3, 0, 0), + padding: EdgeInsets.fromLTRB(120, 3, 0, 0), child: ClipRect( clipBehavior: Clip.hardEdge, child: Opacity( @@ -37,7 +46,7 @@ class CardGame extends StatelessWidget { child: Stack( children: [ GradientText( - "125", + game.pointsCurrentUser.toString(), style: GoogleFonts.karla( fontSize: 105.0, fontWeight: FontWeight.w900, @@ -56,7 +65,7 @@ class CardGame extends StatelessWidget { ], ), GradientText( - "125", + game.pointsCurrentUser.toString(), style: GoogleFonts.karla( fontSize: 105.0, fontWeight: FontWeight.w900, @@ -80,8 +89,10 @@ class CardGame extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.end, children: [ - Toast(), - Toast(), + Toast( + value: + DateFormat('dd MMMM', 'fr_FR').format(game.date)), + Toast(value: DateFormat('HH:mm').format(game.date)), ], ), Stack( @@ -111,7 +122,7 @@ class CardGame extends StatelessWidget { Padding( padding: EdgeInsets.fromLTRB(0, 30, 15, 0), child: GradientText( - "125", + game.pointsCurrentUser.toString(), style: TextStyle( fontSize: 40.0, fontWeight: FontWeight.w900, @@ -151,22 +162,12 @@ class ListCardGame extends StatelessWidget { Widget build(BuildContext context) { return ScrollConfiguration( behavior: CustomScroll(), - child: ListView( + child: ListView.builder( shrinkWrap: false, - children: [ - CardGame(), - CardGame(), - CardGame(), - CardGame(), - CardGame(), - CardGame(), - CardGame(), - CardGame(), - CardGame(), - CardGame(), - CardGame(), - CardGame(), - ], + itemCount: MyApp.controller.userCurrent.games.length, + itemBuilder: (BuildContext context, int index) { + return CardGame(game: MyApp.controller.userCurrent.games[index]); + }, )); } } @@ -188,6 +189,9 @@ class ProfilPicture extends StatelessWidget { } class Toast extends StatelessWidget { + final String value; + + const Toast({Key? key, required this.value}) : super(key: key); @override Widget build(BuildContext context) { return Padding( @@ -200,7 +204,7 @@ class Toast extends StatelessWidget { child: Padding( padding: EdgeInsets.fromLTRB(11.0, 3, 11.0, 3), child: Text( - "12 janv.", + value, style: TextStyle( fontSize: 10, color: Colors.white, diff --git a/Sources/bowlin_project/pubspec.lock b/Sources/bowlin_project/pubspec.lock index 581d755..da29b07 100644 --- a/Sources/bowlin_project/pubspec.lock +++ b/Sources/bowlin_project/pubspec.lock @@ -170,6 +170,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.3.0" + intl: + dependency: "direct main" + description: + name: intl + url: "https://pub.dartlang.org" + source: hosted + version: "0.18.0" js: dependency: transitive description: diff --git a/Sources/bowlin_project/pubspec.yaml b/Sources/bowlin_project/pubspec.yaml index 6b6031d..d4df740 100644 --- a/Sources/bowlin_project/pubspec.yaml +++ b/Sources/bowlin_project/pubspec.yaml @@ -40,6 +40,8 @@ dependencies: google_fonts: ^3.0.1 go_router: ^6.0.1 uuid: ^3.0.7 + intl: ^0.18.0 + dev_dependencies: flutter_test: From 0687867f3de1ac8d11ac3203b42212da9231f956 Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Thu, 9 Mar 2023 13:26:57 +0100 Subject: [PATCH 09/18] push new binding --- .../lib/model/IUserManager.dart | 3 +- .../lib/model/StubManager/StubData.dart | 11 +++- .../lib/model/StubManager/UserManager.dart | 16 ++++-- .../lib/widgets/scores_list_widget.dart | 55 ++++++++++--------- 4 files changed, 50 insertions(+), 35 deletions(-) diff --git a/Sources/bowlin_project/lib/model/IUserManager.dart b/Sources/bowlin_project/lib/model/IUserManager.dart index 5254de7..7b78c33 100644 --- a/Sources/bowlin_project/lib/model/IUserManager.dart +++ b/Sources/bowlin_project/lib/model/IUserManager.dart @@ -1,4 +1,5 @@ import 'package:uuid/uuid.dart'; +import 'Player.dart'; import 'User.dart'; import 'IAuthManager.dart'; @@ -11,5 +12,5 @@ abstract class IUserManager { // Methods IAuthManager get authMgr => _authMgr; List getUsersByName(String name); - User getUserById(Uuid id); + Player getUserById(Uuid id); } diff --git a/Sources/bowlin_project/lib/model/StubManager/StubData.dart b/Sources/bowlin_project/lib/model/StubManager/StubData.dart index 88a5efe..d7c32b0 100644 --- a/Sources/bowlin_project/lib/model/StubManager/StubData.dart +++ b/Sources/bowlin_project/lib/model/StubManager/StubData.dart @@ -101,8 +101,13 @@ class StubData extends IManager { List games = []; void _initGame() { - games.add(Game(gameDetails[0].id, - DateTime.now().subtract(Duration(days: 14)), 123, true, [])); - games.add(Game(gameDetails[1].id, DateTime.now(), 101, true, [])); + games.add(Game( + gameDetails[0].id, + DateTime.now().subtract(Duration(days: 14)), + 123, + true, + [players[0].id, players[1].id])); + games.add(Game(gameDetails[1].id, DateTime.now(), 101, true, + [players[1].id, players[0].id])); } } diff --git a/Sources/bowlin_project/lib/model/StubManager/UserManager.dart b/Sources/bowlin_project/lib/model/StubManager/UserManager.dart index b69c6d8..9897745 100644 --- a/Sources/bowlin_project/lib/model/StubManager/UserManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/UserManager.dart @@ -1,6 +1,8 @@ library StubLib; + import '../IUserManager.dart'; import '../IAuthManager.dart'; +import '../Player.dart'; import 'AuthManager.dart'; import 'StubData.dart'; import '../User.dart'; @@ -11,13 +13,19 @@ class UserManager extends IUserManager { final StubData parent; // Constructor - UserManager(this.parent):super(AuthManager(parent)); + UserManager(this.parent) : super(AuthManager(parent)); // Methods List getUsersByName(String name) { return []; } - User getUserById(Uuid id) { - return User(Uuid(),"","","",[],[], Stat(10,10,10,10,10,10,10,10,10)); + + Player getUserById(Uuid id) { + for (var player in parent.players) { + if (player.id == id) { + return player; + } + } + throw new Exception("Player not found"); } -} \ No newline at end of file +} diff --git a/Sources/bowlin_project/lib/widgets/scores_list_widget.dart b/Sources/bowlin_project/lib/widgets/scores_list_widget.dart index f2acc8f..4b70297 100644 --- a/Sources/bowlin_project/lib/widgets/scores_list_widget.dart +++ b/Sources/bowlin_project/lib/widgets/scores_list_widget.dart @@ -38,7 +38,7 @@ class CardGame extends StatelessWidget { ), ), child: Padding( - padding: EdgeInsets.fromLTRB(120, 3, 0, 0), + padding: EdgeInsets.fromLTRB(120, 3, 3, 0), child: ClipRect( clipBehavior: Clip.hardEdge, child: Opacity( @@ -86,15 +86,17 @@ class CardGame extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Toast( - value: - DateFormat('dd MMMM', 'fr_FR').format(game.date)), - Toast(value: DateFormat('HH:mm').format(game.date)), - ], - ), + Padding( + padding: EdgeInsets.fromLTRB(5, 5, 10, 3), + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Toast( + value: DateFormat('dd MMMM', 'fr_FR') + .format(game.date)), + Toast(value: DateFormat('HH:mm').format(game.date)), + ], + )), Stack( children: [ Row( @@ -104,20 +106,18 @@ class CardGame extends StatelessWidget { Padding( padding: EdgeInsets.fromLTRB(25, 15, 0, 0), child: SizedBox( - width: 130, - child: Wrap( - spacing: 5, - runSpacing: 5, - children: [ - ProfilPicture(), - ProfilPicture(), - ProfilPicture(), - ProfilPicture(), - ProfilPicture(), - ProfilPicture(), - ], - ), - )), + width: 130, + child: Wrap( + spacing: 5, + runSpacing: 5, + children: game.playersId + .map((item) => ProfilPicture( + path: MyApp.controller.userMgr + .getUserById(item) + .image, + )) + .toList(), + ))), Spacer(), Padding( padding: EdgeInsets.fromLTRB(0, 30, 15, 0), @@ -173,15 +173,16 @@ class ListCardGame extends StatelessWidget { } class ProfilPicture extends StatelessWidget { + final String path; + + const ProfilPicture({Key? key, required this.path}) : super(key: key); @override Widget build(BuildContext context) { return Container( height: 25, width: 25, decoration: BoxDecoration( - image: DecorationImage( - image: AssetImage("assets/images/image_user_green.png"), - fit: BoxFit.cover), + image: DecorationImage(image: AssetImage(path), fit: BoxFit.cover), borderRadius: BorderRadius.all(Radius.circular(20)), ), ); From 477bea5aa560063069fea1bd72cd38ada8a4ab0a Mon Sep 17 00:00:00 2001 From: emkartal1 Date: Thu, 9 Mar 2023 13:28:25 +0100 Subject: [PATCH 10/18] Correction model (UUID to int), more test and complete function for User and Game Manager --- Sources/bowlin_project/lib/model/Game.dart | 14 +- .../bowlin_project/lib/model/GameDetail.dart | 29 ++- Sources/bowlin_project/lib/model/Guest.dart | 2 +- .../lib/model/IGameManager.dart | 10 +- .../lib/model/IUserManager.dart | 6 +- Sources/bowlin_project/lib/model/Player.dart | 6 +- .../lib/model/StubManager/GameManager.dart | 38 +++- .../lib/model/StubManager/StubData.dart | 94 +++++---- .../lib/model/StubManager/UserManager.dart | 27 ++- Sources/bowlin_project/lib/model/User.dart | 5 +- Sources/bowlin_project/pubspec.lock | 189 +++++++++++------- Sources/bowlin_project/test/model_test.dart | 179 +++++++++++------ 12 files changed, 365 insertions(+), 234 deletions(-) diff --git a/Sources/bowlin_project/lib/model/Game.dart b/Sources/bowlin_project/lib/model/Game.dart index 16cc875..2ae0ffc 100644 --- a/Sources/bowlin_project/lib/model/Game.dart +++ b/Sources/bowlin_project/lib/model/Game.dart @@ -1,20 +1,18 @@ -import 'package:uuid/uuid.dart'; - class Game { - Uuid _id; + int _id; DateTime _time; int _pointsCurrentUser; bool _isFinished; - List _playersId = []; + List _playersId = []; // Constructor Game(this._id, this._time, this._pointsCurrentUser, this._isFinished, this._playersId); // Getters and setters - Uuid get id => _id; + int get id => _id; - set id(Uuid value) { + set id(int value) { _id = value; } @@ -36,9 +34,9 @@ class Game { _isFinished = value; } - List get playersId => _playersId; + List get playersId => _playersId; - set playersId(List value) { + set playersId(List value) { _playersId = value; } } diff --git a/Sources/bowlin_project/lib/model/GameDetail.dart b/Sources/bowlin_project/lib/model/GameDetail.dart index 2085b49..41134e8 100644 --- a/Sources/bowlin_project/lib/model/GameDetail.dart +++ b/Sources/bowlin_project/lib/model/GameDetail.dart @@ -1,17 +1,14 @@ -import 'dart:developer'; - -import 'package:uuid/uuid.dart'; import 'Player.dart'; import 'Round.dart'; class GameDetail { - Uuid _id; + int _id; DateTime _time; - Uuid _winner; + int _winner; int _nbPoints; bool _isFinished; Round? _currentRound; - Uuid _host; + int _host; List _rounds = []; List _players = []; @@ -28,9 +25,9 @@ class GameDetail { this._players); // Getters and setters - Uuid get id => _id; + int get id => _id; - set id(Uuid value) { + set id(int value) { _id = value; } @@ -40,9 +37,9 @@ class GameDetail { _time = value; } - Uuid get winner => _winner; + int get winner => _winner; - set winner(Uuid value) { + set winner(int value) { _winner = value; } @@ -64,9 +61,9 @@ class GameDetail { _currentRound = value; } - Uuid get host => _host; + int get host => _host; - set host(Uuid value) { + set host(int value) { _host = value; } @@ -82,10 +79,10 @@ class GameDetail { _players = value; } - int getPointByPlayerId(Uuid uuid) { + int getPointByPlayerId(int id) { int pointPlayer = 0; for (var player in players) { - if (player.id == uuid) { + if (player.id == id) { for (var element in rounds) { if (element.player == player) { pointPlayer += element.points; @@ -97,8 +94,8 @@ class GameDetail { throw Exception("Player not in the game."); } - Map getRank() { - Map rank = {}; + Map getRank() { + Map rank = {}; for (var player in players) { rank.addAll({player.id: this.getPointByPlayerId(player.id)}); diff --git a/Sources/bowlin_project/lib/model/Guest.dart b/Sources/bowlin_project/lib/model/Guest.dart index 848b3f7..5248bf7 100644 --- a/Sources/bowlin_project/lib/model/Guest.dart +++ b/Sources/bowlin_project/lib/model/Guest.dart @@ -4,5 +4,5 @@ import 'Player.dart'; class Guest extends Player { // Constructor - Guest(Uuid id, String image, String name) : super(id, image, name); + Guest(int id, String image, String name) : super(id, image, name); } diff --git a/Sources/bowlin_project/lib/model/IGameManager.dart b/Sources/bowlin_project/lib/model/IGameManager.dart index e60b561..e84a682 100644 --- a/Sources/bowlin_project/lib/model/IGameManager.dart +++ b/Sources/bowlin_project/lib/model/IGameManager.dart @@ -1,15 +1,13 @@ -import 'package:uuid/uuid.dart'; -import 'package:uuid/uuid_util.dart'; import 'GameDetail.dart'; import 'Player.dart'; import 'User.dart'; abstract class IGameManager { // Methods - GameDetail getGameById(Uuid id); - List getGamesByPlayerId(Uuid id); + GameDetail getGameById(int id); + List getGamesByPlayerId(int id); List getGamesByPlayer(Player user); List getGamesByPlayers(List users); - List getPlayersByIdGame(Uuid id); - Map getRankByIdGame(Uuid id); + List getPlayersByIdGame(int id); + Map getRankByIdGame(int id); } diff --git a/Sources/bowlin_project/lib/model/IUserManager.dart b/Sources/bowlin_project/lib/model/IUserManager.dart index 5254de7..ab07ec0 100644 --- a/Sources/bowlin_project/lib/model/IUserManager.dart +++ b/Sources/bowlin_project/lib/model/IUserManager.dart @@ -1,5 +1,5 @@ import 'package:uuid/uuid.dart'; -import 'User.dart'; +import 'Player.dart'; import 'IAuthManager.dart'; abstract class IUserManager { @@ -10,6 +10,6 @@ abstract class IUserManager { // Methods IAuthManager get authMgr => _authMgr; - List getUsersByName(String name); - User getUserById(Uuid id); + List getUsersByName(String name); + Player getUserById(int id); } diff --git a/Sources/bowlin_project/lib/model/Player.dart b/Sources/bowlin_project/lib/model/Player.dart index 7a60d1b..ebf0963 100644 --- a/Sources/bowlin_project/lib/model/Player.dart +++ b/Sources/bowlin_project/lib/model/Player.dart @@ -1,7 +1,5 @@ -import 'package:uuid/uuid.dart'; - class Player { - final Uuid _id; + final int _id; String _name; String _image; @@ -9,7 +7,7 @@ class Player { Player(this._id, this._name, this._image); // Getters and setters - Uuid get id => _id; + int get id => _id; String get name => _name; diff --git a/Sources/bowlin_project/lib/model/StubManager/GameManager.dart b/Sources/bowlin_project/lib/model/StubManager/GameManager.dart index a81b9bf..c679ef7 100644 --- a/Sources/bowlin_project/lib/model/StubManager/GameManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/GameManager.dart @@ -7,17 +7,15 @@ import '../Player.dart'; import '../User.dart'; import '../Guest.dart'; import 'StubData.dart'; -import 'package:uuid/uuid.dart'; class GameManager extends IGameManager { - List games = []; final StubData parent; // Constructor GameManager(this.parent); // Methods - GameDetail getGameById(Uuid id) { + GameDetail getGameById(int id) { for (var element in parent.gameDetails) { if (element.id == id) { return element; @@ -26,29 +24,47 @@ class GameManager extends IGameManager { throw Exception("Game not found."); } - List getGamesByPlayerId(Uuid id) { + List getGamesByPlayerId(int id) { List games = []; for (var element in parent.gameDetails) { - if (element.players.contains(id)) { - games.add(element); + for (Player player in element.players) { + if (player.id == id) { + games.add(element); + break; + } } } - throw Exception("Game not found."); + return games; } List getGamesByPlayer(Player user) { - return []; + List games = []; + for (var element in parent.gameDetails) { + for (Player player in element.players) { + if (player.id == user.id) { + games.add(element); + break; + } + } + } + return games; } List getGamesByPlayers(List users) { - return []; + List games = []; + for (var element in parent.gameDetails) { + if (element.players.toSet().containsAll(users.toSet())) { + games.add(element); + } + } + return games; } - List getPlayersByIdGame(Uuid id) { + List getPlayersByIdGame(int id) { return []; } - Map getRankByIdGame(Uuid id) { + Map getRankByIdGame(int id) { return {}; } } diff --git a/Sources/bowlin_project/lib/model/StubManager/StubData.dart b/Sources/bowlin_project/lib/model/StubManager/StubData.dart index 0be09df..27b6693 100644 --- a/Sources/bowlin_project/lib/model/StubManager/StubData.dart +++ b/Sources/bowlin_project/lib/model/StubManager/StubData.dart @@ -13,7 +13,6 @@ import '../GameDetail.dart'; import '../Stat.dart'; import 'UserManager.dart'; import 'GameManager.dart'; -import 'package:uuid/uuid.dart'; class StubData extends IManager { late IUserManager _userMgr; @@ -25,21 +24,23 @@ class StubData extends IManager { _initRounds(); _initGameDetails(); _initGame(); + } - List players = [ - Player(Uuid(), "Mathieu", "./assets/images/image_user_cyan.png"), - Player(Uuid(), "Robin", "./assets/images/image_user_purple.png"), - Player(Uuid(), "Lucas", "./assets/images/image_user_red.png"), - Player(Uuid(), "Emre", "./assets/images/image_user_blue.png"), - Player(Uuid(), "Louison", "./assets/images/image_user_cyan.png"), - Player(Uuid(), "Arthur", "./assets/images/image_user_yellow.png"), - Player(Uuid(), "David", "./assets/images/image_user_pink.png"), - ]; + IUserManager get userMgr => _userMgr; + + IGameManager get gameMgr => _gameMgr; - List users = [ + List players = [ + Player(1, "Mathieu", "./assets/images/image_user_cyan.png"), + Player(2, "Robin", "./assets/images/image_user_purple.png"), + Player(3, "Lucas", "./assets/images/image_user_red.png"), + Player(4, "Emre", "./assets/images/image_user_blue.png"), + Player(5, "Louison", "./assets/images/image_user_cyan.png"), + Player(6, "Arthur", "./assets/images/image_user_yellow.png"), + Player(7, "David", "./assets/images/image_user_pink.png"), User( - Uuid(), + 8, "Emre", "https://fastly.picsum.photos/id/1060/2000/2000.jpg?hmac=_RrU8GpkCDUlVKfgyWE-GcX-GS5TKNyUzdFbJAGXHV4", "emre.kartal@etu.uca.fr", @@ -49,9 +50,10 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat(10, 2, 12, 130, 7, 6, 700, 58.33, 30.2)), + Stat(10, 2, 12, 130, 7, 6, 700, 58.33, 30.2) + ), User( - Uuid(), + 9, "Dave", "https://fastly.picsum.photos/id/820/2000/2000.jpg?hmac=Ctxx2feJNZnG1S7UPx_YrWcEw89tKb7fR8i1W-VTOz4", "david.d_almeida@etu.uca.fr", @@ -61,45 +63,51 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat(2, 7, 9, 80, 4, 3, 250, 27.77, 10.55)) + Stat(2, 7, 9, 80, 4, 3, 250, 27.77, 10.55) + ) ]; - List gameDetails = []; + List _gameDetails = []; void _initGameDetails() { - var uui = Uuid(); - gameDetails.add(GameDetail(Uuid(), DateTime.now(), users[0].id, 123, true, - null, users[0].id, rounds, [players[0], players[1]])); - gameDetails.add(GameDetail(Uuid(), DateTime.now(), users[1].id, 113, true, - null, users[1].id, rounds, [players[0], players[1]])); + gameDetails.add(GameDetail(1, DateTime.now(), players[7].id, 123, true, + null, players[7].id, rounds, [players[0], players[1]])); + gameDetails.add(GameDetail(2, DateTime.now(), players[8].id, 113, true, + null, players[8].id, rounds, [players[0], players[1], players[2]])); } - List rounds = []; + List get gameDetails => _gameDetails; + + List _rounds = []; void _initRounds() { - rounds.add(Round(4, 5, 9, users[0])); - rounds.add(Round(4, 1, 5, users[1])); - rounds.add(Round(4, 5, 9, users[0])); - rounds.add(Round(4, 1, 5, users[1])); - rounds.add(Round(4, 5, 9, users[0])); - rounds.add(Round(1, 5, 6, users[1])); - rounds.add(Round(4, 1, 5, users[0])); - rounds.add(Round(1, 5, 6, users[1])); - rounds.add(Round(4, 5, 9, users[0])); - rounds.add(Round(9, 0, 9, users[1])); - rounds.add(Round(4, 5, 9, users[0])); - rounds.add(Round(4, 5, 9, users[1])); - rounds.add(Round(4, 2, 6, users[0])); - rounds.add(Round(3, 5, 8, users[1])); - rounds.add(Round(4, 5, 9, users[0])); - rounds.add(Round(4, 5, 9, users[1])); - rounds.add(Round(1, 5, 6, users[0])); - rounds.add(Round(4, 5, 9, users[1])); - rounds.add(Round(4, 5, 9, users[0])); - rounds.add(Round(4, 1, 5, users[1])); + rounds.add(Round(4, 5, 9, players[7])); + rounds.add(Round(4, 1, 5, players[8])); + rounds.add(Round(4, 5, 9, players[7])); + rounds.add(Round(4, 1, 5, players[8])); + rounds.add(Round(4, 5, 9, players[7])); + rounds.add(Round(1, 5, 6, players[8])); + rounds.add(Round(4, 1, 5, players[7])); + rounds.add(Round(1, 5, 6, players[8])); + rounds.add(Round(4, 5, 9, players[7])); + rounds.add(Round(9, 0, 9, players[8])); + rounds.add(Round(4, 5, 9, players[7])); + rounds.add(Round(4, 5, 9, players[8])); + rounds.add(Round(4, 2, 6, players[7])); + rounds.add(Round(3, 5, 8, players[8])); + rounds.add(Round(4, 5, 9, players[7])); + rounds.add(Round(4, 5, 9, players[8])); + rounds.add(Round(1, 5, 6, players[7])); + rounds.add(Round(4, 5, 9, players[8])); + rounds.add(Round(4, 5, 9, players[7])); + rounds.add(Round(4, 1, 5, players[8])); } + + List get rounds => _rounds; - List games = []; + List _games = []; void _initGame() { games.add(Game(gameDetails[0].id, DateTime.now(), 123, true, [])); games.add(Game(gameDetails[1].id, DateTime.now(), 101, true, [])); } + + List get games => _games; } diff --git a/Sources/bowlin_project/lib/model/StubManager/UserManager.dart b/Sources/bowlin_project/lib/model/StubManager/UserManager.dart index b69c6d8..bdbcdef 100644 --- a/Sources/bowlin_project/lib/model/StubManager/UserManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/UserManager.dart @@ -3,9 +3,8 @@ import '../IUserManager.dart'; import '../IAuthManager.dart'; import 'AuthManager.dart'; import 'StubData.dart'; -import '../User.dart'; +import '../Player.dart'; import '../Stat.dart'; -import 'package:uuid/uuid.dart'; class UserManager extends IUserManager { final StubData parent; @@ -14,10 +13,26 @@ class UserManager extends IUserManager { UserManager(this.parent):super(AuthManager(parent)); // Methods - List getUsersByName(String name) { - return []; + List getUsersByName(String name) { + List players = []; + for (var player in parent.players) + { + if (player.name == name) + { + players.add(player); + } + } + return players; } - User getUserById(Uuid id) { - return User(Uuid(),"","","",[],[], Stat(10,10,10,10,10,10,10,10,10)); + + Player getUserById(int id) { + for (var player in parent.players) + { + if (player.id == id) + { + return player; + } + } + throw new Exception("Player not found"); } } \ No newline at end of file diff --git a/Sources/bowlin_project/lib/model/User.dart b/Sources/bowlin_project/lib/model/User.dart index 23ccf7c..a9a4069 100644 --- a/Sources/bowlin_project/lib/model/User.dart +++ b/Sources/bowlin_project/lib/model/User.dart @@ -1,4 +1,3 @@ -import 'package:uuid/uuid.dart'; import 'Achievement.dart'; import 'Game.dart'; import 'Player.dart'; @@ -12,7 +11,7 @@ class User extends Player { List games = []; // Constructor - User(Uuid id, String name, String image, this._mail, this._achievements, + User(int id, String name, String image, this._mail, this._achievements, this._friends, this._stat) : super(id, name, image); @@ -37,7 +36,7 @@ class User extends Player { Stat get stat => _stat; - set stats(Stat value) { + set stat(Stat value) { _stat = value; } } diff --git a/Sources/bowlin_project/pubspec.lock b/Sources/bowlin_project/pubspec.lock index 581d755..445d36e 100644 --- a/Sources/bowlin_project/pubspec.lock +++ b/Sources/bowlin_project/pubspec.lock @@ -5,105 +5,120 @@ packages: dependency: transitive description: name: archive - url: "https://pub.dartlang.org" + sha256: d6347d54a2d8028e0437e3c099f66fdb8ae02c4720c1e7534c9f24c10351f85d + url: "https://pub.dev" source: hosted version: "3.3.6" args: dependency: transitive description: name: args - url: "https://pub.dartlang.org" + sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" + url: "https://pub.dev" source: hosted version: "2.4.0" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + url: "https://pub.dev" source: hosted - version: "2.9.0" + version: "2.10.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + url: "https://pub.dev" source: hosted version: "1.2.1" checked_yaml: dependency: transitive description: name: checked_yaml - url: "https://pub.dartlang.org" + sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311" + url: "https://pub.dev" source: hosted version: "2.0.2" cli_util: dependency: transitive description: name: cli_util - url: "https://pub.dartlang.org" + sha256: "66f86e916d285c1a93d3b79587d94bd71984a66aac4ff74e524cfa7877f1395c" + url: "https://pub.dev" source: hosted version: "0.3.5" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" convert: dependency: transitive description: name: convert - url: "https://pub.dartlang.org" + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" source: hosted version: "3.1.1" crypto: dependency: transitive description: name: crypto - url: "https://pub.dartlang.org" + sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 + url: "https://pub.dev" source: hosted version: "3.0.2" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + url: "https://pub.dev" source: hosted version: "1.0.5" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted version: "1.3.1" ffi: dependency: transitive description: name: ffi - url: "https://pub.dartlang.org" + sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 + url: "https://pub.dev" source: hosted version: "2.0.1" file: dependency: transitive description: name: file - url: "https://pub.dartlang.org" + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + url: "https://pub.dev" source: hosted version: "6.1.4" flutter: @@ -115,14 +130,16 @@ packages: dependency: "direct dev" description: name: flutter_launcher_icons - url: "https://pub.dartlang.org" + sha256: ce0e501cfc258907842238e4ca605e74b7fd1cdf04b3b43e86c43f3e40a1592c + url: "https://pub.dev" source: hosted version: "0.11.0" flutter_lints: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c + url: "https://pub.dev" source: hosted version: "2.0.1" flutter_test: @@ -139,175 +156,200 @@ packages: dependency: "direct main" description: name: go_router - url: "https://pub.dartlang.org" + sha256: b4bb06205ec607278b6fc23db238278417bca84a3905779cc68d1eb7afae37e2 + url: "https://pub.dev" source: hosted version: "6.2.0" google_fonts: dependency: "direct main" description: name: google_fonts - url: "https://pub.dartlang.org" + sha256: "8f099045e2f2a30e4d4d0a35f40c6bc941a8f2ca0e10ad9d214ee9edd3f37483" + url: "https://pub.dev" source: hosted version: "3.0.1" http: dependency: transitive description: name: http - url: "https://pub.dartlang.org" + sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" + url: "https://pub.dev" source: hosted version: "0.13.5" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.dartlang.org" + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" source: hosted version: "4.0.2" image: dependency: transitive description: name: image - url: "https://pub.dartlang.org" + sha256: "8e9d133755c3e84c73288363e6343157c383a0c6c56fc51afcc5d4d7180306d6" + url: "https://pub.dev" source: hosted version: "3.3.0" js: dependency: transitive description: name: js - url: "https://pub.dartlang.org" + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + url: "https://pub.dev" source: hosted - version: "0.6.4" + version: "0.6.5" json_annotation: dependency: transitive description: name: json_annotation - url: "https://pub.dartlang.org" + sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317 + url: "https://pub.dev" source: hosted version: "4.8.0" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" + url: "https://pub.dev" source: hosted version: "2.0.1" logging: dependency: transitive description: name: logging - url: "https://pub.dartlang.org" + sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d" + url: "https://pub.dev" source: hosted version: "1.1.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + url: "https://pub.dev" source: hosted - version: "0.12.12" + version: "0.12.13" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.5" + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + url: "https://pub.dev" source: hosted version: "1.8.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + url: "https://pub.dev" source: hosted version: "1.8.2" path_provider: dependency: transitive description: name: path_provider - url: "https://pub.dartlang.org" + sha256: "04890b994ee89bfa80bf3080bfec40d5a92c5c7a785ebb02c13084a099d2b6f9" + url: "https://pub.dev" source: hosted version: "2.0.13" path_provider_android: dependency: transitive description: name: path_provider_android - url: "https://pub.dartlang.org" + sha256: "7623b7d4be0f0f7d9a8b5ee6879fc13e4522d4c875ab86801dee4af32b54b83e" + url: "https://pub.dev" source: hosted version: "2.0.23" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - url: "https://pub.dartlang.org" + sha256: eec003594f19fe2456ea965ae36b3fc967bc5005f508890aafe31fa75e41d972 + url: "https://pub.dev" source: hosted version: "2.1.2" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.dartlang.org" + sha256: "525ad5e07622d19447ad740b1ed5070031f7a5437f44355ae915ff56e986429a" + url: "https://pub.dev" source: hosted version: "2.1.9" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.dartlang.org" + sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" + url: "https://pub.dev" source: hosted version: "2.0.6" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.dartlang.org" + sha256: "642ddf65fde5404f83267e8459ddb4556316d3ee6d511ed193357e25caa3632d" + url: "https://pub.dev" source: hosted version: "2.1.4" petitparser: dependency: transitive description: name: petitparser - url: "https://pub.dartlang.org" + sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" + url: "https://pub.dev" source: hosted version: "5.1.0" platform: dependency: transitive description: name: platform - url: "https://pub.dartlang.org" + sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + url: "https://pub.dev" source: hosted version: "3.1.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.dartlang.org" + sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" + url: "https://pub.dev" source: hosted version: "2.1.4" pointycastle: dependency: transitive description: name: pointycastle - url: "https://pub.dartlang.org" + sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346 + url: "https://pub.dev" source: hosted version: "3.6.2" process: dependency: transitive description: name: process - url: "https://pub.dartlang.org" + sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + url: "https://pub.dev" source: hosted version: "4.2.4" simple_gradient_text: dependency: "direct main" description: name: simple_gradient_text - url: "https://pub.dartlang.org" + sha256: "075a2cbabac021d3713d0d199b2d1b0d40f6293e1e9d37b25e84936ae43c90fa" + url: "https://pub.dev" source: hosted version: "1.2.4" sky_engine: @@ -319,91 +361,104 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + url: "https://pub.dev" source: hosted - version: "0.4.12" + version: "0.4.16" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.dartlang.org" + sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + url: "https://pub.dev" source: hosted version: "1.3.1" uuid: dependency: "direct main" description: name: uuid - url: "https://pub.dartlang.org" + sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" + url: "https://pub.dev" source: hosted version: "3.0.7" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" win32: dependency: transitive description: name: win32 - url: "https://pub.dartlang.org" + sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46 + url: "https://pub.dev" source: hosted version: "3.1.3" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.dartlang.org" + sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1 + url: "https://pub.dev" source: hosted version: "1.0.0" xml: dependency: transitive description: name: xml - url: "https://pub.dartlang.org" + sha256: ac0e3f4bf00ba2708c33fbabbbe766300e509f8c82dbd4ab6525039813f7e2fb + url: "https://pub.dev" source: hosted version: "6.1.0" yaml: dependency: transitive description: name: yaml - url: "https://pub.dartlang.org" + sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" + url: "https://pub.dev" source: hosted version: "3.1.1" sdks: diff --git a/Sources/bowlin_project/test/model_test.dart b/Sources/bowlin_project/test/model_test.dart index c4e01e8..82daad9 100644 --- a/Sources/bowlin_project/test/model_test.dart +++ b/Sources/bowlin_project/test/model_test.dart @@ -5,9 +5,9 @@ import '../lib/model/Stat.dart'; import '../lib/model/Round.dart'; import '../lib/model/GameDetail.dart'; import '../lib/model/StubManager/StubData.dart'; +import '../lib/model/IManager.dart'; import 'dart:math'; import '../lib/model/Achievement.dart'; -import 'package:uuid/uuid.dart'; void main() { List stats = []; @@ -30,12 +30,11 @@ void main() { print("Stats:"); for (var stat in stats) { - print( - "\tVictoires: ${stat.nbVictory}, Défaites: ${stat.nbDefeat}, Parties jouées: ${stat.nbGames}, Meilleur score: ${stat.highscore}, Nombre de strikes: ${stat.nbStrikes}, Nom de spares: ${stat.nbStrikes}, Moyenne score: ${stat.avgScore}, Moyenne score par round: ${stat.avgPinsPerRound}"); + print("\tVictoires: ${stat.nbVictory}, Défaites: ${stat.nbDefeat}, Parties jouées: ${stat.nbGames}, Meilleur score: ${stat.highscore}, Nombre de strikes: ${stat.nbStrikes}, Nom de spares: ${stat.nbStrikes}, Moyenne score: ${stat.avgScore}, Moyenne score par round: ${stat.avgPinsPerRound}"); } User ami = User( - Uuid(), + 5, "Lucas", "https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY", "Lucas.delanier@etu.uca.fr", @@ -44,17 +43,17 @@ void main() { stats[1]); List players = [ - Player(Uuid(), "Rami", + Player(1, "Rami", "https://fastly.picsum.photos/id/1060/2000/2000.jpg?hmac=_RrU8GpkCDUlVKfgyWE-GcX-GS5TKNyUzdFbJAGXHV4"), - Player(Uuid(), "Emre", + Player(2, "Emre", "https://fastly.picsum.photos/id/670/2000/2000.jpg?hmac=zWqTr_vDEab3dBtp7JZgJP8TRCPNanJ4tYwDDd-jGYA"), - Guest(Uuid(), "Bot1", + Guest(3, "Bot1", "https://fastly.picsum.photos/id/820/2000/2000.jpg?hmac=Ctxx2feJNZnG1S7UPx_YrWcEw89tKb7fR8i1W-VTOz4"), - Guest(Uuid(), "Bot2", + Guest(4, "Bot2", "https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY"), ami, User( - Uuid(), + 6, "Louison", "https://fastly.picsum.photos/id/1029/2000/2000.jpg?hmac=_K3pMobVk00dfNR7rsj1NLnEBB5Gf88SvGPbbjoH-Uc", "louison.parant@etu.uca.fr", @@ -70,33 +69,14 @@ void main() { print("Players :"); // afficahge de toutes les informations de tous les joueurs for (var player in players) { - if (player is Guest) { - print( - "\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Guest"); - } else if (player is User) { - print( - "\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: User"); - print("\tAchievements:"); - for (var achievement in player.achievements) { - print("\t\tNom: ${achievement.name}"); - } - print("\tAmis:"); - for (var amis in player.friends) { - print("\t\tNom: ${amis.name}, Mail: ${amis.mail}"); - } - print( - "\tVictoires: ${player.stat.nbVictory}, Défaites: ${player.stat.nbDefeat}, Parties jouées: ${player.stat.nbGames}, Meilleur score: ${player.stat.highscore}, Nombre de strikes: ${player.stat.nbStrikes}, Nom de spares: ${player.stat.nbStrikes}, Moyenne score: ${player.stat.avgScore}, Moyenne score par round: ${player.stat.avgPinsPerRound}"); - } else { - print( - "\tID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Player"); - } + displayPlayer(player,1); } //GameDetail List games = [ GameDetail( - Uuid(), DateTime.now(), players[0].id, 290, true, null, players[0].id, [ + 1, DateTime.now(), players[0].id, 290, true, null, players[0].id, [ Round(10, null, 10, players[0]), Round(5, 2, 7, players[1]), Round(5, 1, 12, players[0]), @@ -105,7 +85,7 @@ void main() { players[0], players[1] ]), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 2)), + GameDetail(2, DateTime.now().subtract(Duration(days: 2)), players[1].id, 250, true, null, players[1].id, [ Round(7, null, 7, players[1]), Round(3, 3, 9, players[0]), @@ -115,7 +95,7 @@ void main() { players[0], players[1] ]), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 4)), + GameDetail(3, DateTime.now().subtract(Duration(days: 4)), players[2].id, 210, false, null, players[2].id, [ Round(8, 2, 10, players[2]), Round(6, 2, 8, players[1]), @@ -126,13 +106,13 @@ void main() { players[2] ]), GameDetail( - Uuid(), - DateTime.now().subtract(Duration(days: 7)), - players[3].id, - 120, - true, - Round(12, null, 12, players[3]), - players[3].id, [ + 4, + DateTime.now().subtract(Duration(days: 7)), + players[3].id, + 120, + true, + Round(12, null, 12, players[3]), + players[3].id, [ Round(12, null, 12, players[3]), Round(7, 3, 10, players[2]), Round(6, 2, 8, players[1]), @@ -143,7 +123,7 @@ void main() { players[2], players[3] ]), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 10)), + GameDetail(5, DateTime.now().subtract(Duration(days: 10)), players[4].id, 280, true, null, players[4].id, [ Round(9, 1, 10, players[4]), Round(7, 3, 10, players[2]), @@ -155,8 +135,8 @@ void main() { players[3], players[4] ]), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 12)), - players[1].id, 240, true, null, players[1].id, [ + GameDetail(6, DateTime.now().subtract(Duration(days: 12)), + players[1].id, 240, true, null, players[1].id, [ Round(7, null, 7, players[1]), Round(5, 2, 7, players[2]), Round(6, 2, 8, players[1]), @@ -167,7 +147,7 @@ void main() { players[2], players[4] ]), - GameDetail(Uuid(), DateTime.now().subtract(Duration(days: 15)), + GameDetail(7, DateTime.now().subtract(Duration(days: 15)), players[2].id, 200, true, null, players[2].id, [ Round(8, 2, 10, players[2]), Round(4, 2, 6, players[1]), @@ -183,31 +163,98 @@ void main() { print("GameDetail :"); for (var game in games) { - print("\tGame ID: ${game.id}"); - print("\tTime: ${game.time}"); - print("\tWinner: ${game.winner}"); - print("\tNumber of Points: ${game.nbPoints}"); - print("\tIs Finished: ${game.isFinished}"); - print("\tCurrent Round: ${game.currentRound}"); - print("\tHost: ${game.host}"); - print("\tRank: ${game.getRank()}"); - - print("\tRounds:"); - for (var round in game.rounds) { - print("\t\tRound Score: ${round.firstThrow}"); - print("\t\tRound Bonus: ${round.secondThrow}"); - print("\t\tRound Total: ${round.points}"); - print("\t\tRound Player: ${round.player.name}"); - } + displayGameDetail(game,1); + print("\t-----------------------------------------"); + } + + print("StubManager:"); + IManager mgr = new StubData(); - print("\tPlayers:"); - for (var player in game.players) { - print("\t\tPlayer ID: ${player.id}"); - print("\t\tPlayer Name: ${player.name}"); - } + print("\tGameManager:"); - print("\t-----------------------------------------"); + print("\tgetGameById function with id: 2"); + GameDetail gd = mgr.gameMgr.getGameById(2); + displayGameDetail(gd,2); + + print("\tgetGamesByPlayerId function with id: 2"); + List gds = mgr.gameMgr.getGamesByPlayerId(3); + for (var game in gds) + { + displayGameDetail(game,2); + } + + print("\tgetGamesByPlayer function:"); + var player = mgr.userMgr.getUserById(3); + List gdsPlayer = mgr.gameMgr.getGamesByPlayer(player); + for (var game in gdsPlayer) + { + displayGameDetail(game,2); + } + + print("\tgetGamesByPlayers:"); + var player2 = mgr.userMgr.getUserById(2); + List playersTest = [player,player2]; + List gdsPlayers = mgr.gameMgr.getGamesByPlayers(playersTest); + for (var game in gdsPlayers) + { + displayGameDetail(game,2); + } + +} + +void displayGameDetail(GameDetail gd, int numTabs) +{ + String tabs = '\t' * numTabs; + print(tabs+"Game ID: ${gd.id}"); + print(tabs+"Time: ${gd.time}"); + print(tabs+"Winner: ${gd.winner}"); + print(tabs+"Number of Points: ${gd.nbPoints}"); + print(tabs+"Is Finished: ${gd.isFinished}"); + print(tabs+"Current Round: ${gd.currentRound}"); + print(tabs+"Host: ${gd.host}"); + print(tabs+"Rank: ${gd.getRank()}"); + print(tabs+"Rounds:"); + for (var round in gd.rounds) { + displayRound(round, numTabs+1); + } + print(tabs+"Players:"); + for (var player in gd.players) { + displayPlayer(player, numTabs+1); + } +} + +void displayRound(Round round, int numTabs) +{ + String tabs = '\t' * numTabs; + print(tabs+"Round Score: ${round.firstThrow}"); + print(tabs+"Round Bonus: ${round.secondThrow}"); + print(tabs+"Round Total: ${round.points}"); + print(tabs+"Round Player: ${round.player.name}"); +} - print("StubManager:"); +void displayPlayer(Player player, int numTabs) +{ + String tabs = '\t' * numTabs; + if (player is Guest) { + print(tabs+"ID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Guest"); + } else if (player is User) { + print(tabs+"ID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: User"); + print(tabs+"Achievements:"); + for (var achievement in player.achievements) { + displayAchievement(achievement, numTabs+1); + } + print(tabs+"Amis:"); + for (var amis in player.friends) { + print("\t\tNom: ${amis.name}, Mail: ${amis.mail}"); + } + print(tabs+"Victoires: ${player.stat.nbVictory}, Défaites: ${player.stat.nbDefeat}, Parties jouées: ${player.stat.nbGames}, Meilleur score: ${player.stat.highscore}, Nombre de strikes: ${player.stat.nbStrikes}, Nom de spares: ${player.stat.nbStrikes}, Moyenne score: ${player.stat.avgScore}, Moyenne score par round: ${player.stat.avgPinsPerRound}"); + } else { + print(tabs+"ID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Player"); } } + +void displayAchievement(Achievement achievement, int numTabs) +{ + String tabs = '\t' * numTabs; + print(tabs+"Nom: ${achievement.name}"); +} \ No newline at end of file From b85825b81d35366d6696e1e1720158059569f1c0 Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Thu, 9 Mar 2023 16:03:06 +0100 Subject: [PATCH 11/18] push new binding --- .../assets/images/image_scoreboard.png | Bin 0 -> 2139 bytes .../bowlin_project/lib/config/app_router.dart | 3 +- .../lib/model/StubManager/StubData.dart | 14 ++-- .../bowlin_project/lib/views/game_screen.dart | 44 +++++------- .../lib/widgets/button_new_party.dart | 64 +++++++++++++++++- .../lib/widgets/scores_list_widget.dart | 31 +++++---- 6 files changed, 107 insertions(+), 49 deletions(-) create mode 100644 Sources/bowlin_project/assets/images/image_scoreboard.png diff --git a/Sources/bowlin_project/assets/images/image_scoreboard.png b/Sources/bowlin_project/assets/images/image_scoreboard.png new file mode 100644 index 0000000000000000000000000000000000000000..8d48932273d5293d9ca3fd59e1135a64b1c76a71 GIT binary patch literal 2139 zcmeHJYfKYn6#ZJLQy4mxsq3^TzHnHWLouQhDAg7N$UqQ8D98YT@qS1xeJGHMAdvW& z+KmbV20@-{D+Q6nxK2qG3KjYeAj8u2fwaXI+OF=ui~H}7o11&ipPQ3&9~EJtSSJU# z0|3A&2!{y=0P-OsR<5ui85L#6ZD~~wE+!uU$Mqiq0`B~}$p%95!?9@4{&KUzR@kQo zgaiQ4RpYpv2m{~?Z4f5lWHCe~eVpZd%8onf)xXm@EI=Uv*(I=xmk@Y}!ar=sx^>9h z$})SWhN_(&)H-PRk5j|jS>?Mt?&6q-xOF_*W3R)1%Nzeh)f9BM&R2Q$9bQWMqsJvq z!JA!J&`;5P+I4o+YX)WUSfNyQ7Cml>*v^UcjDOt~32vQ@;tJqnLf1x3W{%e&}fIR)`e4RYoTRj&Rcgh zf^FMiD_8CD$9;tQP4VCYp}xAca5=hqpwyl^vwCg(}}wq8RMEGEb}=3-xyy zzQe-4h)%`rTQGx{YjPrXN zcyAF3wA9P|aKatt{i^Mljvnb1LNbm{Lpuq(nAzz#{MS@ok6&_g3(cVFw6G%=q>pm% zmAuzZx{P|@2hJdl6z80kdCOH|_R#Dr2A7=NOISz|3WbOEnV(f|oSA$|yEhcyUp%k1 zN1C=O!FY0%7CXr+|=_`yhR#%cp ziCGiH+n-ib@WK39rxGKR2?eJH0e3%2$gQcT<1`nZzau%zT76`P+hg z1;6PXleGLkSD|CcB3_el-N?`bTE03+tQ_B8^ki>UX2)~V!5P9toigy%;v2#dCh0y0 z>!5YXzd&phuwe-c!Rd@z=$Cyz{HwF3l6?hApS_C^;iC_XzVPM4M_jI4hSC)!)@`Bp z`o|Fo5|f5$72o%(aO-@2+753BIg_4-TY73_?e=-Jb#R67!8C6;(K1<2vigh^rC9p% zbbE{jG~^~-FoKd8$9)W9WpE#SgaAp%99Ulc2`>B(gMOwyagsj^^;xKoZTbK2jrtAz zQs^LO^=Vuxj9SP$jiVqzTgH=eT_hwSu7hJNArHh8@LVHw@E1-_vyxNPoz`JHP2?;m zm59kX#fhvo9EaRe)8YK5*Fu`&S~k`=f(T!=IEM4=x+S|Qdv4-8P<30-CAFsMI?j9R z*SBxzaEER3YMq{QZQ%LITt%8@wevn$bV?NW0%JvI@prfIfc67p}e*l20JAeQH literal 0 HcmV?d00001 diff --git a/Sources/bowlin_project/lib/config/app_router.dart b/Sources/bowlin_project/lib/config/app_router.dart index 4b60aee..a443419 100644 --- a/Sources/bowlin_project/lib/config/app_router.dart +++ b/Sources/bowlin_project/lib/config/app_router.dart @@ -6,6 +6,7 @@ import '../views/ingame_screen.dart'; import '../views/main_screen.dart'; import '../views/rank_screen.dart'; import '../views/welcome_screen.dart'; +import '../widgets/ingame_widgets.dart'; final GoRouter router = GoRouter( routes: [ @@ -36,7 +37,7 @@ final GoRouter router = GoRouter( GoRoute( path: 'in-game', builder: (BuildContext context, GoRouterState state) { - return const InGameScreen(); + return InGameScreen(); }, ), ], diff --git a/Sources/bowlin_project/lib/model/StubManager/StubData.dart b/Sources/bowlin_project/lib/model/StubManager/StubData.dart index a0d4fb1..22b06cc 100644 --- a/Sources/bowlin_project/lib/model/StubManager/StubData.dart +++ b/Sources/bowlin_project/lib/model/StubManager/StubData.dart @@ -24,8 +24,8 @@ class StubData extends IManager { _initRounds(); _initGameDetails(); _initGame(); - players[8].games = games; - userCurrent = players[8]; + userCurrent = players[8] as User; + userCurrent.games = games; } IUserManager get userMgr => _userMgr; @@ -51,8 +51,7 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat(10, 2, 12, 130, 7, 6, 700, 58.33, 30.2) - ), + Stat(10, 2, 12, 130, 7, 6, 700, 58.33, 30.2)), User( 9, "Dave", @@ -64,8 +63,7 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat(2, 7, 9, 80, 4, 3, 250, 27.77, 10.55) - ) + Stat(2, 7, 9, 80, 4, 3, 250, 27.77, 10.55)) ]; List _gameDetails = []; @@ -101,7 +99,7 @@ class StubData extends IManager { rounds.add(Round(4, 5, 9, players[7])); rounds.add(Round(4, 1, 5, players[8])); } - + List get rounds => _rounds; List _games = []; @@ -115,6 +113,6 @@ class StubData extends IManager { games.add(Game(gameDetails[1].id, DateTime.now(), 101, true, [players[1].id, players[0].id])); } - + List get games => _games; } diff --git a/Sources/bowlin_project/lib/views/game_screen.dart b/Sources/bowlin_project/lib/views/game_screen.dart index ce2f8e5..636359c 100644 --- a/Sources/bowlin_project/lib/views/game_screen.dart +++ b/Sources/bowlin_project/lib/views/game_screen.dart @@ -29,23 +29,18 @@ class _GameScreenState extends State { ], )), ), - Align( - alignment: AlignmentDirectional.topCenter, - child: Container( - height: 120, - decoration: BoxDecoration( - image: DecorationImage( - image: AssetImage("assets/images/image_score.png"), - )), - child: Center( - child: Text( - "Scores", - style: TextStyle( - fontWeight: FontWeight.bold, - color: Colors.white, - fontSize: 20), - )), - ), + Container( + height: 120, + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage("assets/images/image_score.png"), + )), + child: Center( + child: Text( + "Scores", + style: TextStyle( + fontWeight: FontWeight.bold, color: Colors.white, fontSize: 20), + )), ), Column( mainAxisAlignment: MainAxisAlignment.end, @@ -54,19 +49,14 @@ class _GameScreenState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ ButtonNewParty(), - SizedBox(width: 20), + const SizedBox(width: 20), ButtonJoinParty(), ], ), - Align( - alignment: Alignment.bottomCenter, - child: Positioned( - bottom: 0, - child: Container( - height: MediaQuery.of(context).size.height - 140, - width: MediaQuery.of(context).size.width, - child: ListCardGame(), - )), + Container( + height: MediaQuery.of(context).size.height - 140, + width: MediaQuery.of(context).size.width, + child: ListCardGame(), ), ], ) diff --git a/Sources/bowlin_project/lib/widgets/button_new_party.dart b/Sources/bowlin_project/lib/widgets/button_new_party.dart index a5283ff..ef5f5a5 100644 --- a/Sources/bowlin_project/lib/widgets/button_new_party.dart +++ b/Sources/bowlin_project/lib/widgets/button_new_party.dart @@ -1,13 +1,16 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:go_router/go_router.dart'; import 'package:google_fonts/google_fonts.dart'; +import 'ingame_widgets.dart'; + class ButtonNewParty extends StatelessWidget { @override Widget build(BuildContext context) { return ElevatedButton( - onPressed: () {}, + onPressed: () => context.go('/in-game'), child: Text("+ New game"), style: ElevatedButton.styleFrom( side: BorderSide( @@ -139,6 +142,65 @@ class NewGameModal extends StatelessWidget { } } +class ScoreBoardModal extends StatelessWidget { + const ScoreBoardModal({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Dialog( + child: Stack( + alignment: Alignment.topCenter, + children: [ + Transform.scale( + scale: 1.14, + child: Image.asset("assets/images/image_scoreboard.png")), + SizedBox( + height: 245, + child: + Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + Expanded( + child: Padding( + padding: EdgeInsets.fromLTRB(0, 40, 0, 0), + child: Stack( + alignment: Alignment.topCenter, + children: [ + Positioned( + child: PodiumGameOverWidget( + isfirst: 2, + pseudo: 'Lucas', + score: 123, + ), + top: 70, + left: 30, + ), + Positioned( + child: PodiumGameOverWidget( + isfirst: 1, + pseudo: 'Momo', + score: 160, + ), + top: 10, + ), + Positioned( + child: PodiumGameOverWidget( + isfirst: 3, + pseudo: 'popo', + score: 110, + ), + top: 70, + right: 30, + ) + ], + ), + )), + ]), + ) + ], + ), + ); + } +} + class ButtonJoinParty extends StatelessWidget { @override Widget build(BuildContext context) { diff --git a/Sources/bowlin_project/lib/widgets/scores_list_widget.dart b/Sources/bowlin_project/lib/widgets/scores_list_widget.dart index 4b70297..fa810e0 100644 --- a/Sources/bowlin_project/lib/widgets/scores_list_widget.dart +++ b/Sources/bowlin_project/lib/widgets/scores_list_widget.dart @@ -1,4 +1,5 @@ import 'package:bowl_in/main.dart'; +import 'package:bowl_in/widgets/button_new_party.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; @@ -108,17 +109,17 @@ class CardGame extends StatelessWidget { child: SizedBox( width: 130, child: Wrap( - spacing: 5, - runSpacing: 5, - children: game.playersId - .map((item) => ProfilPicture( - path: MyApp.controller.userMgr - .getUserById(item) - .image, - )) - .toList(), - ))), - Spacer(), + spacing: 5, + runSpacing: 5, + children: game.playersId + .map((e) => ProfilPicture( + path: MyApp.controller.userMgr + .getUserById(e) + .image + .toString(), + )) + .toList()))), + const Spacer(), Padding( padding: EdgeInsets.fromLTRB(0, 30, 15, 0), child: GradientText( @@ -144,7 +145,13 @@ class CardGame extends StatelessWidget { ), ], ), - onTap: () => context.go('/in-game'), + onTap: () { + showDialog( + context: context, + builder: (BuildContext context) { + return ScoreBoardModal(); + }); + }, )); } } From bc89c0ea90932c64d057a4ddcf436ee856f2b07c Mon Sep 17 00:00:00 2001 From: root Date: Thu, 9 Mar 2023 18:06:44 +0100 Subject: [PATCH 12/18] Testing and functions of Managers for the Stub Data completed --- Sources/bowlin_project/lib/model/Guest.dart | 2 -- .../lib/model/IAuthManager.dart | 2 +- .../lib/model/IGameManager.dart | 2 +- .../lib/model/IUserManager.dart | 1 - .../lib/model/StubManager/AuthManager.dart | 11 ++++++++-- .../lib/model/StubManager/GameManager.dart | 20 +++++++++++++++--- .../lib/model/StubManager/StubData.dart | 21 +++++++++++++------ Sources/bowlin_project/test/model_test.dart | 19 +++++++++++++++-- 8 files changed, 60 insertions(+), 18 deletions(-) diff --git a/Sources/bowlin_project/lib/model/Guest.dart b/Sources/bowlin_project/lib/model/Guest.dart index 5248bf7..081bea0 100644 --- a/Sources/bowlin_project/lib/model/Guest.dart +++ b/Sources/bowlin_project/lib/model/Guest.dart @@ -1,5 +1,3 @@ -import 'package:uuid/uuid.dart'; -import 'package:uuid/uuid_util.dart'; import 'Player.dart'; class Guest extends Player { diff --git a/Sources/bowlin_project/lib/model/IAuthManager.dart b/Sources/bowlin_project/lib/model/IAuthManager.dart index ffacd82..dd0f856 100644 --- a/Sources/bowlin_project/lib/model/IAuthManager.dart +++ b/Sources/bowlin_project/lib/model/IAuthManager.dart @@ -1,5 +1,5 @@ abstract class IAuthManager { // Methods - bool verifiedUser(String name, String password); + bool verifiedUser(String mail, String password); } diff --git a/Sources/bowlin_project/lib/model/IGameManager.dart b/Sources/bowlin_project/lib/model/IGameManager.dart index e84a682..e761719 100644 --- a/Sources/bowlin_project/lib/model/IGameManager.dart +++ b/Sources/bowlin_project/lib/model/IGameManager.dart @@ -8,6 +8,6 @@ abstract class IGameManager { List getGamesByPlayerId(int id); List getGamesByPlayer(Player user); List getGamesByPlayers(List users); - List getPlayersByIdGame(int id); + List getPlayersByIdGame(int id); Map getRankByIdGame(int id); } diff --git a/Sources/bowlin_project/lib/model/IUserManager.dart b/Sources/bowlin_project/lib/model/IUserManager.dart index 883c548..249da14 100644 --- a/Sources/bowlin_project/lib/model/IUserManager.dart +++ b/Sources/bowlin_project/lib/model/IUserManager.dart @@ -1,4 +1,3 @@ -import 'package:uuid/uuid.dart'; import 'Player.dart'; import 'User.dart'; import 'IAuthManager.dart'; diff --git a/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart b/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart index 694a88d..fc93912 100644 --- a/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart @@ -1,5 +1,6 @@ library StubLib; import '../IAuthManager.dart'; +import '../User.dart'; import 'StubData.dart'; class AuthManager extends IAuthManager { @@ -8,7 +9,13 @@ class AuthManager extends IAuthManager { // Constructor AuthManager(this.parent); // Methods - bool verifiedUser(String name, String password) { - return false; + bool verifiedUser(String mail, String password) { + for (var user in parent.players) { + if (user is User && user.mail == mail) { + parent.userCurrent = user as User; + return true; + } + } + return false; } } \ No newline at end of file diff --git a/Sources/bowlin_project/lib/model/StubManager/GameManager.dart b/Sources/bowlin_project/lib/model/StubManager/GameManager.dart index c679ef7..2a0efff 100644 --- a/Sources/bowlin_project/lib/model/StubManager/GameManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/GameManager.dart @@ -60,11 +60,25 @@ class GameManager extends IGameManager { return games; } - List getPlayersByIdGame(int id) { - return []; + List getPlayersByIdGame(int id) { + List players = []; + for (var element in parent.gameDetails) { + if (element.id == id) { + for (var player in element.players) { + players.add(player); + } + return players; + } + } + throw Exception("Game not found."); } Map getRankByIdGame(int id) { - return {}; + for (var game in parent.gameDetails) { + if (game.id == id) { + return game.getRank(); + } + } + throw Exception("Game not found."); } } diff --git a/Sources/bowlin_project/lib/model/StubManager/StubData.dart b/Sources/bowlin_project/lib/model/StubManager/StubData.dart index 22b06cc..1950c50 100644 --- a/Sources/bowlin_project/lib/model/StubManager/StubData.dart +++ b/Sources/bowlin_project/lib/model/StubManager/StubData.dart @@ -1,8 +1,7 @@ library StubLib; -import 'package:bowl_in/model/Game.dart'; - import '../IManager.dart'; +import '../Game.dart'; import '../IUserManager.dart'; import '../IGameManager.dart'; import '../Player.dart'; @@ -70,18 +69,22 @@ class StubData extends IManager { void _initGameDetails() { gameDetails.add(GameDetail(1, DateTime.now(), players[7].id, 123, true, null, players[7].id, rounds, [players[0], players[1]])); - gameDetails.add(GameDetail(2, DateTime.now(), players[8].id, 113, true, - null, players[8].id, rounds, [players[0], players[1], players[2]])); + gameDetails.add(GameDetail(2, DateTime.now(), players[0].id, 113, true, + null, players[7].id, rounds, [players[0], players[1], players[7]])); + gameDetails.add(GameDetail(3, DateTime.now(), players[7].id, 93, true, + null, players[7].id, [], [players[0], players[7]])); + gameDetails.add(GameDetail(4, DateTime.now(), players[7].id, 93, true, + null, players[7].id, [], [players[1], players[7]])); } List get gameDetails => _gameDetails; List _rounds = []; void _initRounds() { - rounds.add(Round(4, 5, 9, players[7])); + rounds.add(Round(4, 5, 9, players[1])); rounds.add(Round(4, 1, 5, players[8])); rounds.add(Round(4, 5, 9, players[7])); - rounds.add(Round(4, 1, 5, players[8])); + rounds.add(Round(4, 1, 5, players[1])); rounds.add(Round(4, 5, 9, players[7])); rounds.add(Round(1, 5, 6, players[8])); rounds.add(Round(4, 1, 5, players[7])); @@ -90,6 +93,12 @@ class StubData extends IManager { rounds.add(Round(9, 0, 9, players[8])); rounds.add(Round(4, 5, 9, players[7])); rounds.add(Round(4, 5, 9, players[8])); + rounds.add(Round(4, 2, 6, players[0])); + rounds.add(Round(3, 5, 8, players[1])); + rounds.add(Round(4, 5, 9, players[2])); + rounds.add(Round(4, 5, 9, players[4])); + rounds.add(Round(1, 5, 6, players[6])); + rounds.add(Round(4, 5, 9, players[8])); rounds.add(Round(4, 2, 6, players[7])); rounds.add(Round(3, 5, 8, players[8])); rounds.add(Round(4, 5, 9, players[7])); diff --git a/Sources/bowlin_project/test/model_test.dart b/Sources/bowlin_project/test/model_test.dart index 82daad9..bcadd90 100644 --- a/Sources/bowlin_project/test/model_test.dart +++ b/Sources/bowlin_project/test/model_test.dart @@ -177,14 +177,14 @@ void main() { displayGameDetail(gd,2); print("\tgetGamesByPlayerId function with id: 2"); - List gds = mgr.gameMgr.getGamesByPlayerId(3); + List gds = mgr.gameMgr.getGamesByPlayerId(8); for (var game in gds) { displayGameDetail(game,2); } print("\tgetGamesByPlayer function:"); - var player = mgr.userMgr.getUserById(3); + var player = mgr.userMgr.getUserById(8); List gdsPlayer = mgr.gameMgr.getGamesByPlayer(player); for (var game in gdsPlayer) { @@ -199,6 +199,21 @@ void main() { { displayGameDetail(game,2); } + + print("\tgetPlayersByIdGame:"); + var playersIntoGame = mgr.gameMgr.getPlayersByIdGame(2); + for (var player in playersIntoGame) + { + displayPlayer(player,2); + } + + print("\tgetRankByIdGame:"); + var ranksPlayers = mgr.gameMgr.getRankByIdGame(2); + ranksPlayers.forEach((id, rank) { + displayPlayer(mgr.userMgr.getUserById(id),2); + print('\t\tRank $rank'); + }); + } From 50beb48c93abd0de9783a09cc064262178e9ddd1 Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Thu, 9 Mar 2023 20:54:17 +0100 Subject: [PATCH 13/18] make ranking working and add new stats --- .../lib/model/IUserManager.dart | 1 + .../lib/model/StubManager/StubData.dart | 71 +++++++++++++++++-- .../lib/model/StubManager/UserManager.dart | 21 +++--- .../lib/views/analysis_screen.dart | 21 +++--- .../lib/views/profile_screen.dart | 2 +- .../bowlin_project/lib/views/rank_screen.dart | 16 +++-- .../lib/widgets/achievements_list_widget.dart | 8 +-- .../lib/widgets/analysis_card.dart | 2 +- .../lib/widgets/profil_listpodium_widget.dart | 60 ++++------------ .../lib/widgets/scores_list_widget.dart | 6 +- 10 files changed, 123 insertions(+), 85 deletions(-) diff --git a/Sources/bowlin_project/lib/model/IUserManager.dart b/Sources/bowlin_project/lib/model/IUserManager.dart index 249da14..b9d5ed6 100644 --- a/Sources/bowlin_project/lib/model/IUserManager.dart +++ b/Sources/bowlin_project/lib/model/IUserManager.dart @@ -12,4 +12,5 @@ abstract class IUserManager { IAuthManager get authMgr => _authMgr; List getUsersByName(String name); Player getUserById(int id); + List getRankingWithFriends(); } diff --git a/Sources/bowlin_project/lib/model/StubManager/StubData.dart b/Sources/bowlin_project/lib/model/StubManager/StubData.dart index 1950c50..f5c2c70 100644 --- a/Sources/bowlin_project/lib/model/StubManager/StubData.dart +++ b/Sources/bowlin_project/lib/model/StubManager/StubData.dart @@ -61,7 +61,68 @@ class StubData extends IManager { Achievement("0 point"), Achievement("Win a game") ], - [], + [ + User( + 21, + "Arthur", + "./assets/images/image_user_cyan.png", + "emre.kartal@etu.uca.fr", + [ + Achievement("5 games"), + Achievement("2 strikes in a row"), + Achievement("Win a game") + ], + [], + Stat(10, 2, 12, 110, 7, 6, 700, 58.33, 30.2)), + User( + 22, + "Louison", + "./assets/images/image_user_cyan.png", + "emre.kartal@etu.uca.fr", + [ + Achievement("5 games"), + Achievement("2 strikes in a row"), + Achievement("Win a game") + ], + [], + Stat(10, 2, 12, 150, 7, 6, 700, 58.33, 30.2)), + User( + 23, + "Owen", + "./assets/images/image_user_cyan.png", + "emre.kartal@etu.uca.fr", + [ + Achievement("5 games"), + Achievement("2 strikes in a row"), + Achievement("Win a game") + ], + [], + Stat(10, 2, 12, 10, 7, 6, 700, 58.33, 30.2)), + User( + 24, + "LULU", + "./assets/images/image_user_cyan.png", + "emre.kartal@etu.uca.fr", + [ + Achievement("5 games"), + Achievement("2 strikes in a row"), + Achievement("Win a game") + ], + [], + Stat(10, 2, 12, 40, 7, 6, 700, 58.33, 30.2)), + User( + 25, + "Raphael", + "./assets/images/image_user_cyan.png", + "emre.kartal@etu.uca.fr", + [ + Achievement("5 games"), + Achievement("2 strikes in a row"), + Achievement("Win a game") + ], + [], + Stat(10, 2, 12, 76, 7, 6, 700, 58.33, 30.2)), + ], Stat(2, 7, 9, 80, 4, 3, 250, 27.77, 10.55)) ]; @@ -71,10 +132,10 @@ class StubData extends IManager { null, players[7].id, rounds, [players[0], players[1]])); gameDetails.add(GameDetail(2, DateTime.now(), players[0].id, 113, true, null, players[7].id, rounds, [players[0], players[1], players[7]])); - gameDetails.add(GameDetail(3, DateTime.now(), players[7].id, 93, true, - null, players[7].id, [], [players[0], players[7]])); - gameDetails.add(GameDetail(4, DateTime.now(), players[7].id, 93, true, - null, players[7].id, [], [players[1], players[7]])); + gameDetails.add(GameDetail(3, DateTime.now(), players[7].id, 93, true, null, + players[7].id, [], [players[0], players[7]])); + gameDetails.add(GameDetail(4, DateTime.now(), players[7].id, 93, true, null, + players[7].id, [], [players[1], players[7]])); } List get gameDetails => _gameDetails; diff --git a/Sources/bowlin_project/lib/model/StubManager/UserManager.dart b/Sources/bowlin_project/lib/model/StubManager/UserManager.dart index a90bceb..0c30c87 100644 --- a/Sources/bowlin_project/lib/model/StubManager/UserManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/UserManager.dart @@ -1,5 +1,7 @@ library StubLib; +import 'package:bowl_in/model/User.dart'; + import '../IUserManager.dart'; import '../IAuthManager.dart'; import '../Player.dart'; @@ -17,10 +19,8 @@ class UserManager extends IUserManager { // Methods List getUsersByName(String name) { List players = []; - for (var player in parent.players) - { - if (player.name == name) - { + for (var player in parent.players) { + if (player.name == name) { players.add(player); } } @@ -28,13 +28,18 @@ class UserManager extends IUserManager { } Player getUserById(int id) { - for (var player in parent.players) - { - if (player.id == id) - { + for (var player in parent.players) { + if (player.id == id) { return player; } } throw new Exception("Player not found"); } + + @override + List getRankingWithFriends() { + List sortedPlayers = List.from(parent.userCurrent.friends); + sortedPlayers.sort((a, b) => b.stat.highscore.compareTo(a.stat.highscore)); + return sortedPlayers; + } } diff --git a/Sources/bowlin_project/lib/views/analysis_screen.dart b/Sources/bowlin_project/lib/views/analysis_screen.dart index 77992da..1fdea2f 100644 --- a/Sources/bowlin_project/lib/views/analysis_screen.dart +++ b/Sources/bowlin_project/lib/views/analysis_screen.dart @@ -21,7 +21,7 @@ class _AnalysisScreenState extends State { child: Stack(alignment: Alignment.topCenter, children: [ Container( width: MediaQuery.of(context).size.width, - height: MediaQuery.of(context).size.height * 1.45, + height: MediaQuery.of(context).size.height, decoration: const BoxDecoration( gradient: LinearGradient( begin: Alignment.topLeft, @@ -84,18 +84,13 @@ class _AnalysisScreenState extends State { spacing: 10, verticalDirection: VerticalDirection.up, children: [ - StatsCard(title: "Average", val: 12), - StatsCard(title: "Average", val: 12), - StatsCard(title: "Average", val: 12), - StatsCard(title: "Average", val: 12), - StatsCard(title: "Average", val: 12), - StatsCard(title: "Average", val: 12), - StatsCard(title: "Average", val: 12), - StatsCard(title: "Average", val: 12), - StatsCard(title: "Average", val: 12), - StatsCard(title: "Average", val: 12), - StatsCard(title: "Average", val: 12), - StatsCard(title: "Average", val: 12), + StatsCard( + title: "Number of victory", + val: MyApp.controller.userCurrent.stat.nbVictory + .toDouble()), + StatsCard( + title: "Average pins per round", + val: MyApp.controller.userCurrent.stat.avgPinsPerRound), ], )) ]), diff --git a/Sources/bowlin_project/lib/views/profile_screen.dart b/Sources/bowlin_project/lib/views/profile_screen.dart index e87c627..03945a6 100644 --- a/Sources/bowlin_project/lib/views/profile_screen.dart +++ b/Sources/bowlin_project/lib/views/profile_screen.dart @@ -48,7 +48,7 @@ class _ProfileScreenState extends State { mainAxisAlignment: MainAxisAlignment.start, verticalDirection: VerticalDirection.up, children: [ - ListAchievementWidget(nbUnlocked: 1), + ListAchievementWidget(nbUnlocked: 0), Padding( padding: EdgeInsets.fromLTRB(40, 0, 0, 0), child: ProfileWidget()), diff --git a/Sources/bowlin_project/lib/views/rank_screen.dart b/Sources/bowlin_project/lib/views/rank_screen.dart index 55b71c3..46ce7c9 100644 --- a/Sources/bowlin_project/lib/views/rank_screen.dart +++ b/Sources/bowlin_project/lib/views/rank_screen.dart @@ -1,6 +1,8 @@ +import 'package:bowl_in/main.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import '../model/User.dart'; import '../widgets/profil_listpodium_widget.dart'; class RankScreen extends StatefulWidget { @@ -11,6 +13,7 @@ class RankScreen extends StatefulWidget { } class _RankScreenState extends State { + List rank = MyApp.controller.userMgr.getRankingWithFriends(); @override Widget build(BuildContext context) { return Stack(alignment: Alignment.center, children: [ @@ -60,16 +63,21 @@ class _RankScreenState extends State { Positioned( left: 65, top: MediaQuery.of(context).size.height * 0.195, - child: ProfilPodiumWidget(isfirst: 0, pseudo: "Louison", score: 122)), + child: ProfilPodiumWidget( + isfirst: 0, pseudo: rank[1].name, score: rank[1].stat.highscore)), Positioned( top: MediaQuery.of(context).size.height * 0.114, child: Align( - child: ProfilPodiumWidget(isfirst: 1, pseudo: "Lucas", score: 167), + child: ProfilPodiumWidget( + isfirst: 1, + pseudo: rank[0].name, + score: rank[0].stat.highscore), )), Positioned( right: 65, top: MediaQuery.of(context).size.height * 0.219, - child: ProfilPodiumWidget(isfirst: 0, pseudo: "David", score: 102), + child: ProfilPodiumWidget( + isfirst: 0, pseudo: rank[2].name, score: rank[2].stat.highscore), ), Positioned( bottom: -40, @@ -82,7 +90,7 @@ class _RankScreenState extends State { image: DecorationImage( image: AssetImage("assets/images/image_podium.png"), )), - child: ListPodium(), + child: rank.length > 3 ? ListPodium() : Container(), ) ], )), diff --git a/Sources/bowlin_project/lib/widgets/achievements_list_widget.dart b/Sources/bowlin_project/lib/widgets/achievements_list_widget.dart index fe29292..69f35f3 100644 --- a/Sources/bowlin_project/lib/widgets/achievements_list_widget.dart +++ b/Sources/bowlin_project/lib/widgets/achievements_list_widget.dart @@ -85,7 +85,7 @@ class ListAchievementWidget extends StatelessWidget { imagePath: 'assets/images/achievements/win_locked.png', imagePathUnlocked: 'assets/images/achievements/win_unlocked.png', - isUnlocked: 1, + isUnlocked: 0, ), AchievementWidget( imagePath: @@ -106,19 +106,19 @@ class ListAchievementWidget extends StatelessWidget { 'assets/images/achievements/2strikeinarow_locked.png', imagePathUnlocked: 'assets/images/achievements/2strikeinarow_unlocked.png', - isUnlocked: 1, + isUnlocked: 0, ), AchievementWidget( imagePath: 'assets/images/achievements/5games_locked.png', imagePathUnlocked: 'assets/images/achievements/5games_unlocked.png', - isUnlocked: 1, + isUnlocked: 0, ), AchievementWidget( imagePath: 'assets/images/achievements/10spares_locked.png', imagePathUnlocked: 'assets/images/achievements/10spares_unlocked.png', - isUnlocked: 1, + isUnlocked: 0, ), AchievementWidget( imagePath: diff --git a/Sources/bowlin_project/lib/widgets/analysis_card.dart b/Sources/bowlin_project/lib/widgets/analysis_card.dart index 456b6c4..58105da 100644 --- a/Sources/bowlin_project/lib/widgets/analysis_card.dart +++ b/Sources/bowlin_project/lib/widgets/analysis_card.dart @@ -100,7 +100,7 @@ class GameCard extends StatelessWidget { class StatsCard extends StatelessWidget { final String title; - final int val; + final double val; const StatsCard({Key? key, required this.title, required this.val}) : super(key: key); diff --git a/Sources/bowlin_project/lib/widgets/profil_listpodium_widget.dart b/Sources/bowlin_project/lib/widgets/profil_listpodium_widget.dart index 39c3d77..a4c1a90 100644 --- a/Sources/bowlin_project/lib/widgets/profil_listpodium_widget.dart +++ b/Sources/bowlin_project/lib/widgets/profil_listpodium_widget.dart @@ -3,6 +3,10 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; +import '../main.dart'; +import '../model/Player.dart'; +import '../model/User.dart'; + class ProfilPodiumWidget extends StatelessWidget { final int isfirst; final String pseudo; @@ -149,58 +153,22 @@ class ListPodium extends StatelessWidget { @override Widget build(BuildContext context) { + List rank = MyApp.controller.userMgr.getRankingWithFriends(); return Padding( padding: EdgeInsets.fromLTRB(20, 80, 20, 0), child: SizedBox( height: 500, child: ScrollConfiguration( behavior: CustomScroll(), - child: ListView( - children: [ - ProfilListWidget( - position: 4, - pseudo: 'Emre', - score: 35, - ), - ProfilListWidget( - position: 5, - pseudo: 'Emre', - score: 35, - ), - ProfilListWidget( - position: 6, - pseudo: 'Emre', - score: 35, - ), - ProfilListWidget( - position: 7, - pseudo: 'Emre', - score: 35, - ), - ProfilListWidget( - position: 8, - pseudo: 'Emre', - score: 35, - ), - ProfilListWidget( - position: 9, - pseudo: 'Emre', - score: 35, - ), - ProfilListWidget( - position: 10, - pseudo: 'Emre', - score: 35, - ), - ProfilListWidget( - position: 11, - pseudo: 'Emre', - score: 35, - ), - SizedBox( - height: 50, - ), - ], + child: ListView.builder( + itemCount: rank.length - 3, + itemBuilder: (BuildContext context, int index) { + return ProfilListWidget( + position: 4 + index, + pseudo: rank[index + 3].name, + score: rank[index + 3].stat.highscore, + ); + }, ), ))); } diff --git a/Sources/bowlin_project/lib/widgets/scores_list_widget.dart b/Sources/bowlin_project/lib/widgets/scores_list_widget.dart index fa810e0..e8117a6 100644 --- a/Sources/bowlin_project/lib/widgets/scores_list_widget.dart +++ b/Sources/bowlin_project/lib/widgets/scores_list_widget.dart @@ -39,7 +39,7 @@ class CardGame extends StatelessWidget { ), ), child: Padding( - padding: EdgeInsets.fromLTRB(120, 3, 3, 0), + padding: EdgeInsets.fromLTRB(120, 0, 3, 0), child: ClipRect( clipBehavior: Clip.hardEdge, child: Opacity( @@ -88,7 +88,7 @@ class CardGame extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( - padding: EdgeInsets.fromLTRB(5, 5, 10, 3), + padding: EdgeInsets.fromLTRB(5, 3, 10, 3), child: Row( mainAxisAlignment: MainAxisAlignment.end, children: [ @@ -121,7 +121,7 @@ class CardGame extends StatelessWidget { .toList()))), const Spacer(), Padding( - padding: EdgeInsets.fromLTRB(0, 30, 15, 0), + padding: EdgeInsets.fromLTRB(0, 25, 15, 0), child: GradientText( game.pointsCurrentUser.toString(), style: TextStyle( From ee15c1c6821683b4ec05f8b44b9cbbbc12b6df80 Mon Sep 17 00:00:00 2001 From: emkartal1 Date: Fri, 10 Mar 2023 14:24:07 +0100 Subject: [PATCH 14/18] Correct error merge --- Sources/bowlin_project/lib/model/GameDetail.dart | 6 ------ .../bowlin_project/lib/model/StubManager/UserManager.dart | 3 +-- Sources/bowlin_project/test/model_test.dart | 6 +----- 3 files changed, 2 insertions(+), 13 deletions(-) diff --git a/Sources/bowlin_project/lib/model/GameDetail.dart b/Sources/bowlin_project/lib/model/GameDetail.dart index a933ed3..41134e8 100644 --- a/Sources/bowlin_project/lib/model/GameDetail.dart +++ b/Sources/bowlin_project/lib/model/GameDetail.dart @@ -61,15 +61,9 @@ class GameDetail { _currentRound = value; } -<<<<<<< HEAD - Uuid get host => _host; - - set host(Uuid value) { -======= int get host => _host; set host(int value) { ->>>>>>> origin/stubdata _host = value; } diff --git a/Sources/bowlin_project/lib/model/StubManager/UserManager.dart b/Sources/bowlin_project/lib/model/StubManager/UserManager.dart index 0c30c87..2ef5fb7 100644 --- a/Sources/bowlin_project/lib/model/StubManager/UserManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/UserManager.dart @@ -1,10 +1,9 @@ library StubLib; -import 'package:bowl_in/model/User.dart'; - import '../IUserManager.dart'; import '../IAuthManager.dart'; import '../Player.dart'; +import '../User.dart'; import 'AuthManager.dart'; import 'StubData.dart'; import '../Player.dart'; diff --git a/Sources/bowlin_project/test/model_test.dart b/Sources/bowlin_project/test/model_test.dart index d22ba00..ce46375 100644 --- a/Sources/bowlin_project/test/model_test.dart +++ b/Sources/bowlin_project/test/model_test.dart @@ -213,11 +213,7 @@ void main() { ranksPlayers.forEach((id, rank) { displayPlayer(mgr.userMgr.getUserById(id),2); print('\t\tRank $rank'); - }); - - - print("StubManager:"); - } + }); } void displayGameDetail(GameDetail gd, int numTabs) From d2d6c692e37b9364edae1fcea9d500a6408133ef Mon Sep 17 00:00:00 2001 From: Emre KARTAL Date: Fri, 10 Mar 2023 14:28:58 +0100 Subject: [PATCH 15/18] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'.drone.yml'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.yml b/.drone.yml index 7361c68..46bf7b4 100644 --- a/.drone.yml +++ b/.drone.yml @@ -32,6 +32,7 @@ steps: - export SONAR_SCANNER_OPTS="-server" - sonar-scanner -D sonar.projectKey=Bowl_in -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar depends_on: [ app-build ] + exclusions: '**/*.java' # database container deployment - name: deploy-container-postgresql From 9280059ab741cb2726112ebb276aa92f8f893090 Mon Sep 17 00:00:00 2001 From: Emre KARTAL Date: Fri, 10 Mar 2023 14:34:24 +0100 Subject: [PATCH 16/18] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'.drone.yml'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 46bf7b4..926a98d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -22,7 +22,8 @@ steps: SONAR_TOKEN: from_secret: SONAR_TOKEN settings: - sources: ./Sources/bowlin_project + sources: ./Sources/bowlin_project + exclusions: '**/*.java' commands: - export SONAR_SCANNER_VERSION=4.7.0.2747 - export SONAR_SCANNER_HOME=$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux @@ -32,7 +33,6 @@ steps: - export SONAR_SCANNER_OPTS="-server" - sonar-scanner -D sonar.projectKey=Bowl_in -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar depends_on: [ app-build ] - exclusions: '**/*.java' # database container deployment - name: deploy-container-postgresql From 2e4fd7e0ef118f3663dcfd099979942bba399a76 Mon Sep 17 00:00:00 2001 From: Lucas DELANIER Date: Fri, 10 Mar 2023 14:37:33 +0100 Subject: [PATCH 17/18] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'README.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 247cf59..e93f571 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@   ![Quarkus](https://img.shields.io/badge/Quarkus-000?style=for-the-badge&logo=Quarkus&logoColor=white&color=blue)   ![Flutter](https://img.shields.io/badge/Flutter-000?style=for-the-badge&logo=flutter&logoColor=blue&color=white)   ![PostgreSQL](https://img.shields.io/badge/Postgresql-000?style=for-the-badge&logo=postgresql&logoColor=white&color=blue) - +[![Code Smells](https://codefirst.iut.uca.fr/sonar/api/project_badges/measure?project=Bowl_in&metric=code_smells&token=88dd5f9f10bb02aede7a82a2bccf8c987af1ecab)](https://codefirst.iut.uca.fr/sonar/dashboard?id=Bowl_in) --- From f56e66708b3463458ca0cef4a13b82fcdab2c17a Mon Sep 17 00:00:00 2001 From: Lucas DELANIER Date: Fri, 10 Mar 2023 14:38:39 +0100 Subject: [PATCH 18/18] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'README.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e93f571..cf9fdf9 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,10 @@   ![Quarkus](https://img.shields.io/badge/Quarkus-000?style=for-the-badge&logo=Quarkus&logoColor=white&color=blue)   ![Flutter](https://img.shields.io/badge/Flutter-000?style=for-the-badge&logo=flutter&logoColor=blue&color=white)   ![PostgreSQL](https://img.shields.io/badge/Postgresql-000?style=for-the-badge&logo=postgresql&logoColor=white&color=blue) -[![Code Smells](https://codefirst.iut.uca.fr/sonar/api/project_badges/measure?project=Bowl_in&metric=code_smells&token=88dd5f9f10bb02aede7a82a2bccf8c987af1ecab)](https://codefirst.iut.uca.fr/sonar/dashboard?id=Bowl_in) +[![Duplicated Lines (%)](https://codefirst.iut.uca.fr/sonar/api/project_badges/measure?project=Bowl_in&metric=duplicated_lines_density&token=88dd5f9f10bb02aede7a82a2bccf8c987af1ecab)](https://codefirst.iut.uca.fr/sonar/dashboard?id=Bowl_in) +[![Security Rating](https://codefirst.iut.uca.fr/sonar/api/project_badges/measure?project=Bowl_in&metric=security_rating&token=88dd5f9f10bb02aede7a82a2bccf8c987af1ecab)](https://codefirst.iut.uca.fr/sonar/dashboard?id=Bowl_in) +[![Vulnerabilities](https://codefirst.iut.uca.fr/sonar/api/project_badges/measure?project=Bowl_in&metric=vulnerabilities&token=88dd5f9f10bb02aede7a82a2bccf8c987af1ecab)](https://codefirst.iut.uca.fr/sonar/dashboard?id=Bowl_in) +[![Lines of Code](https://codefirst.iut.uca.fr/sonar/api/project_badges/measure?project=Bowl_in&metric=ncloc&token=88dd5f9f10bb02aede7a82a2bccf8c987af1ecab)](https://codefirst.iut.uca.fr/sonar/dashboard?id=Bowl_in) ---