private static void HandleResponse <T>(string id, ZPCUError error, Func <T> successCallback) where T : class { var callback = _queryCallbacks[id] as Action <T, ZapicError>; if (callback == null) { Debug.LogWarning("Unable to find callback"); return; } _queryCallbacks.Remove(id); //If there is an error if (error.code != 0) { var e = error.ToError(); callback(null, e); } else { Debug.Log("Received a successful response"); var result = successCallback(); Debug.LogFormat("Received result {0}", result); callback(result, null); } }
internal static ZapicError ToError(this ZPCUError e) { return(new ZapicError(e.code, e.message)); }
private static void HandleArrayResponse <TCPP, TUnity>(string id, IntPtr ptr, int size, ZPCUError error, Func <TCPP, TUnity> transform) { var cppData = MarshalData <TCPP>(ptr, size); var unityData = cppData.Select(x => transform(x)).ToArray(); HandleResponse <TUnity[]>(id, error, () => { return(unityData); }); }
private static void _get_competitions(string id, IntPtr ptr, int size, ZPCUError error) { HandleArrayResponse <ZPCUCompetition, ZapicCompetition>(id, ptr, size, error, ZapicExtensions.ToCompetition); }
private static void _get_challenges(string id, IntPtr ptr, int size, ZPCUError error) { HandleArrayResponse <ZPCUChallenge, ZapicChallenge>(id, ptr, size, error, ZapicExtensions.ToChallenge); }
private static void _get_player(string id, ZPCUPlayer p, ZPCUError error) { HandleResponse <ZapicPlayer>(id, error, () => p.ToPlayer()); }
private static void _get_statistics(string id, IntPtr ptr, int size, ZPCUError error) { HandleArrayResponse <ZPCUStatistic, ZapicStatistic>(id, ptr, size, error, ZapicExtensions.ToStatistic); }