public async Task <GamePlayerDto> CreateAsync(CreatePlayerDto model) { Player p = ObjectMapper.Map <Player>(model); p.Id = Guid.NewGuid(); Game g = GameStore.GetGameByJoinCode(model.JoinCode); if (g.Players.Select(p => p.Name.ToLower()).Contains(model.Name.ToLower())) { throw new UserFriendlyException("Name already taken", $"The name '{model.Name}' has already been taken by another player!"); } if (model.Name.Length > 20) { throw new UserFriendlyException("Name too long", $"Name cannot be longer than 20 characters."); } g.Players.Add(p); GameStore.AddOrUpdateGame(g); GamePlayerDto gp = new GamePlayerDto(); gp.Game = g; gp.Player = p; return(gp); }
public PlayerUpdatedPublicEvent(int gameId, int playerId, GamePlayerDto player) { GameId = gameId; PlayerId = playerId; Player = player; }