diff --git a/Sources/bowlin_project/lib/config/app_router.dart b/Sources/bowlin_project/lib/config/app_router.dart index 9106c04..1bc45be 100644 --- a/Sources/bowlin_project/lib/config/app_router.dart +++ b/Sources/bowlin_project/lib/config/app_router.dart @@ -51,7 +51,7 @@ final GoRouter router = GoRouter( GoRoute( path: 'scoreboard', builder: (BuildContext context, GoRouterState state) { - return FinalScoreBoard(gameDeatil: state.extra as GameDetail); + return FinalScoreBoard(gameDetail: state.extra as GameDetail); }, ), ], diff --git a/Sources/bowlin_project/lib/model/GamePlayer.dart b/Sources/bowlin_project/lib/model/GamePlayer.dart index efab5d1..8deb5c6 100644 --- a/Sources/bowlin_project/lib/model/GamePlayer.dart +++ b/Sources/bowlin_project/lib/model/GamePlayer.dart @@ -1,3 +1,4 @@ +import 'package:bowl_in/model/IManager.dart'; import 'package:flutter/cupertino.dart'; import 'GameDetail.dart'; @@ -7,8 +8,11 @@ import 'Round.dart'; class GamePlayer { late GameDetail _game; + final IManager _parent; int currentRoundIndex = 0; + GamePlayer(this._parent); + GameDetail get game => _game; set game(GameDetail value) { @@ -23,6 +27,10 @@ class GamePlayer { } if (currentRoundIndex >= game.rounds.length) { print("FINISHED"); + + game.id=_parent.gameMgr.getNextId(); + _parent.gameMgr.addGame(game); + game.computeScores(); context.go("/scoreboard", extra: game); } else { diff --git a/Sources/bowlin_project/lib/model/IGameManager.dart b/Sources/bowlin_project/lib/model/IGameManager.dart index 175cf32..6040d3c 100644 --- a/Sources/bowlin_project/lib/model/IGameManager.dart +++ b/Sources/bowlin_project/lib/model/IGameManager.dart @@ -10,5 +10,6 @@ abstract class IGameManager { List getGamesByPlayers(List users); List getPlayersByIdGame(int id); Map getRankByIdGame(int id); + int getNextId(); addGame(GameDetail gd); } diff --git a/Sources/bowlin_project/lib/model/IManager.dart b/Sources/bowlin_project/lib/model/IManager.dart index 5adb82f..00ecb8c 100644 --- a/Sources/bowlin_project/lib/model/IManager.dart +++ b/Sources/bowlin_project/lib/model/IManager.dart @@ -10,7 +10,7 @@ import 'Game.dart'; abstract class IManager { late User _userCurrent; late GameDetail _gameCurrent; - late GamePlayer _gamePlayer = GamePlayer(); + late GamePlayer _gamePlayer = GamePlayer(this); late IUserManager _userMgr; late IGameManager _gameMgr; diff --git a/Sources/bowlin_project/lib/model/StubManager/GameManager.dart b/Sources/bowlin_project/lib/model/StubManager/GameManager.dart index 13f3630..511acaf 100644 --- a/Sources/bowlin_project/lib/model/StubManager/GameManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/GameManager.dart @@ -86,4 +86,9 @@ class GameManager extends IGameManager { addGame(GameDetail gd) { parent.gameDetails.add(gd); } + + @override + int getNextId() { + return parent.gameDetails.length; + } } diff --git a/Sources/bowlin_project/lib/views/ingame_screen.dart b/Sources/bowlin_project/lib/views/ingame_screen.dart index eb128dd..6a47b3c 100644 --- a/Sources/bowlin_project/lib/views/ingame_screen.dart +++ b/Sources/bowlin_project/lib/views/ingame_screen.dart @@ -58,17 +58,16 @@ class _InGameScreenState extends State { ElevatedButton( onPressed: () { GameDetail gd = GameDetail( - 1, + -1, DateTime.now(), null, - 123, + 0, false, MyApp.controller.userCurrent.id, listPlayers); MyApp.controller.gamePlayer.game = gd; MyApp.controller.gameCurrent = gd; MyApp.controller.gamePlayer.onNext(false, context); - MyApp.controller.gameMgr.addGame(gd); }, child: Text( "PLAY", diff --git a/Sources/bowlin_project/lib/widgets/ingame_widgets.dart b/Sources/bowlin_project/lib/widgets/ingame_widgets.dart index 2a948a8..2ebdfb6 100644 --- a/Sources/bowlin_project/lib/widgets/ingame_widgets.dart +++ b/Sources/bowlin_project/lib/widgets/ingame_widgets.dart @@ -15,8 +15,8 @@ import '../model/Player.dart'; import '../model/User.dart'; class FinalScoreBoard extends StatefulWidget { - final GameDetail gameDeatil; - const FinalScoreBoard({Key? key, required this.gameDeatil}) : super(key: key); + final GameDetail gameDetail; + const FinalScoreBoard({Key? key, required this.gameDetail}) : super(key: key); @override State createState() => _FinalScoreBoardState(); @@ -28,7 +28,7 @@ class _FinalScoreBoardState extends State { late List scoreList; @override void initState() { - rank = widget.gameDeatil.getRank(); + rank = widget.gameDetail.getRank(); pseudoList = rank.keys.toList(); scoreList = rank.values.toList(); super.initState();