Пример #1
0
            internal static Item From(SteamNative.SteamUGCDetails_t details, Workshop workshop)
            {
                var item = new Item(details.PublishedFileId, workshop);

                item.Title       = details.Title;
                item.Description = details.Description;
                item.OwnerId     = details.SteamIDOwner;
                item.Tags        = details.Tags.Split(',');
                item.Score       = details.Score;
                item.VotesUp     = details.VotesUp;
                item.VotesDown   = details.VotesDown;
                item.Modified    = new DateTime(details.TimeUpdated);
                item.Created     = new DateTime(details.TimeCreated);
                item.UpdateState();

                return(item);
            }
Пример #2
0
            void ResultCallback(SteamNative.SteamUGCQueryCompleted_t data, bool bFailed)
            {
                if (bFailed)
                {
                    throw new System.Exception("Steam UGC Query failed: " + data.Result.ToString());
                }

                var gotFiles = 0;

                for (int i = 0; i < data.NumResultsReturned; i++)
                {
                    if (_resultSkip > 0)
                    {
                        _resultSkip--;
                        continue;
                    }

                    SteamNative.SteamUGCDetails_t details = new SteamNative.SteamUGCDetails_t();
                    if (!workshop.ugc.GetQueryUGCResult(data.Handle, (uint)i, ref details))
                    {
                        continue;
                    }

                    // We already have this file, so skip it
                    if (_results.Any(x => x.Id == details.PublishedFileId))
                    {
                        continue;
                    }

                    var item = Item.From(details, workshop);

                    item.SubscriptionCount = GetStat(data.Handle, i, ItemStatistic.NumSubscriptions);
                    item.FavouriteCount    = GetStat(data.Handle, i, ItemStatistic.NumFavorites);
                    item.FollowerCount     = GetStat(data.Handle, i, ItemStatistic.NumFollowers);
                    item.WebsiteViews      = GetStat(data.Handle, i, ItemStatistic.NumUniqueWebsiteViews);
                    item.ReportScore       = GetStat(data.Handle, i, ItemStatistic.ReportScore);

                    string url = null;
                    if (workshop.ugc.GetQueryUGCPreviewURL(data.Handle, (uint)i, out url))
                    {
                        item.PreviewImageUrl = url;
                    }

                    _results.Add(item);

                    _resultsRemain--;
                    gotFiles++;

                    if (_resultsRemain <= 0)
                    {
                        break;
                    }
                }

                TotalResults = TotalResults > data.TotalMatchingResults ? TotalResults : (int)data.TotalMatchingResults;

                Callback.Dispose();
                Callback = null;

                _resultPage++;

                if (_resultsRemain > 0 && gotFiles > 0)
                {
                    RunInternal();
                }
                else
                {
                    Items = _results.ToArray();

                    if (OnResult != null)
                    {
                        OnResult(this);
                    }
                }
            }