示例#1
0
        public static Task <SteamUGCDetails[]> QueryAllUGCAsync(UGCQuery eQueryType, MatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId creatorAppId, AppId consumerAppId, uint unPage)
        {
            var tcs         = new TaskCompletionSource <SteamUGCDetails[]>();
            var queryHandle = SteamUGC.CreateQueryAllUGCRequest(eQueryType, eMatchingeMatchingUGCTypeFileType, creatorAppId, consumerAppId, unPage);

            var call = SteamUGC.SendQueryUGCRequest(queryHandle);

            var callback = new CallResult <SteamUGCQueryCompleted>();

            callback.Set(call, (a, b) =>
            {
                var results = new SteamUGCDetails[a.ResultsCount];
                for (uint i = 0; i < a.ResultsCount; i++)
                {
                    SteamUGCDetails details;
                    GetQueryUGCResult(queryHandle, i, out details);
                    results[i] = details;
                }
                tcs.SetResult(results);
            });

            return(tcs.Task);
        }
 /// <summary>
 /// <para> Retrieve an individual result after receiving the callback for querying UGC</para>
 /// </summary>
 public static bool GetQueryUGCResult(UGCQueryHandle handle, uint index, out SteamUGCDetails pDetails)
 {
     InteropHelp.TestIfAvailableGameServer();
     return(NativeMethods.ISteamGameServerUGC_GetQueryUGCResult(handle, index, out pDetails));
 }