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)); }