public async Task <GameData> EnterGame(string userId) { Player player = await GetPlayer(userId); Room room; if (player.CurrentRoomId == null) { // If player new - create room for him and make him it's discoverer room = await CreateNewRoom(userId, Direction.None, null); // Update player CurrentRoomId player = await _usersClient.PatchRoomChange(userId, room.RoomId); } else { // If player old - return him to his room room = await _roomsClient.GetRoomById((int)player.CurrentRoomId); } GameData data = new GameData() { Room = room, Player = player, Monster = null }; if (room.MonsterId != null) { data.Monster = await _monstersClient.GetMonsterById((int)room.MonsterId); } return(data); }