private static IEnumerable <string> LookupAndDownloadLevel(string levelIdHash) { var li = levelIdHash.IndexOf(".MP"); MenuManager.AddMpStatus("SEARCHING " + levelIdHash.Substring(0, li), 1f, 9); string lastData = null; foreach (var x in NetworkMatch.Get("mpget", new Dictionary <string, string> { { "level", levelIdHash } }, "https://www.overloadmaps.com/api/")) { lastData = x; yield return(null); } JObject ret = null; try { ret = JObject.Parse(lastData); } catch (Exception ex) { Debug.Log(ex); } if (ret == null || !ret.TryGetValue("url", out JToken urlVal)) { string msg = ret == null ? "OVERLOADMAPS.COM LOOKUP FAILED" : "LEVEL NOT FOUND ON OVERLOADMAPS.COM"; Debug.Log(msg); MenuManager.AddMpStatus(msg, 2f, 9); yield return(msg); yield break; } string url = urlVal.GetString(); var i = url.LastIndexOf('/'); MenuManager.AddMpStatus("DOWNLOADING " + url.Substring(i + 1), 1f, 9); string lastMsg = null; foreach (var msg in MaybeDownloadLevel(url, levelIdHash)) { if (msg != lastMsg) { MenuManager.AddMpStatus(msg, 1f, 9); lastMsg = msg; } yield return(msg); } Debug.Log("DoGetLevel last download status: " + lastMsg); }