Exemple #1
0
        public Game CreateGame(UserId userId, GameSettings gameSettings, Color joinColor)
        {
            var user = _unitOfWork.WithUserTransaction(tran => {
                var user = _userRepository.FindById(userId);
                return(tran.CommitWith(user));
            });

            return(_unitOfWork.WithGameTransaction(tran => {
                var idPool = _idGenerator.ReservePool();
                var userInfo = new UserInfo(user.Id, user.Username, user.Rank);
                var(game, gameState) = _gameFactory.BuildGame(idPool, gameSettings, userInfo, joinColor);

                _gameRepository.Save(game);
                _gameStateRepository.Save(gameState);

                return tran.CommitWith(game);
            }));
        }
Exemple #2
0
        public List <IGame> GetGamesInString(string scores)
        {
            Queue <int>  scoresQueue   = new Queue <int>(scores.Split(',').Select(int.Parse).ToList());
            List <IGame> gamesInString = new List <IGame>();

            while (scoresQueue.Count > 0)
            {
                IGame newGame = _gameFactory.BuildGame();
                gamesInString.Add(newGame);
                while (newGame.IsFinished == false)
                {
                    if (scoresQueue.Count == 0)
                    {
                        break;
                    }
                    newGame.AddScore(scoresQueue.Dequeue());
                }
            }
            return(gamesInString);
        }
 private IGame BuildGame(string userId, string userName)
 {
     return(_gameFactory.BuildGame(userId, userName));
 }