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); })); }
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)); }