public int StartGame(int roomId, GameParameters parameters) { return(Operation(() => { CheckIsUserAuthenticated(); if (!serverManager.IsUserInRoom(LoggedUser.Id, roomId)) { throw new Exception("Can't start a game from a room you are not in"); } var gameId = serverManager.StartGame(LoggedUser, roomId, parameters); var gameUsers = serverManager.GetGameUsers(gameId); foreach (var user in gameUsers) { if (user.Id == LoggedUser.Id) { continue; } var callback = userCallbacks.First(pair => pair.Key == user.Id).Value; callback.GameStarted(gameId); } return gameId; })); }