internal static void IncomingBeatmapInfoReply(bBeatmapInfoReply reply) { try { lock (BeatmapRequestLock) { foreach (Beatmap b in BeatmapInfoRequestList) { b.submissionStatus = SubmissionStatus.NotSubmitted; b.PlayerRank = Rankings.N; } foreach (bBeatmapInfo bmi in reply.beatmapInfo) { Beatmap b = BeatmapInfoRequestList[bmi.id]; if (bmi.checksum != b.BeatmapChecksum) { b.submissionStatus = SubmissionStatus.UpdateAvailable; } else { switch (bmi.ranked) { case 2: b.submissionStatus = SubmissionStatus.Approved; break; case 1: b.submissionStatus = SubmissionStatus.Ranked; break; default: b.submissionStatus = SubmissionStatus.Pending; break; } } b.BeatmapId = bmi.beatmapId; b.BeatmapSetId = bmi.beatmapSetId; b.BeatmapTopicId = bmi.threadId; b.PlayerRank = bmi.playerRank; } BeatmapInfoRequestList = null; } if (NewBeatmapInfo != null) { NewBeatmapInfo(null, null); } } catch (Exception e) { BanchoClient.HandleException(e, "beatmap info reply"); } }
internal static void IncomingBeatmapInfoReply(bBeatmapInfoReply reply) { try { //Transfer to a local copy. List <Beatmap> requestList = BeatmapInfoSendListPartial; BeatmapInfoSendListPartial = null; long tick = DateTime.Now.Ticks; if (requestList == null) { return; } foreach (Beatmap b in requestList) { b.SubmissionStatus = SubmissionStatus.NotSubmitted; if (GameBase.User.Name != b.Creator) { b.BeatmapSetId = -1; } b.LastInfoUpdate = tick; b.ClearRankings(); } foreach (bBeatmapInfo bmi in reply.beatmapInfo) { Beatmap b = bmi.id >= 0 ? requestList[bmi.id] : GetBeatmapById(bmi.beatmapId); if (b == null) { continue; } if (bmi.checksum != b.BeatmapChecksum) { b.UpdateAvailable = true; } switch (bmi.ranked) { case 3: b.SubmissionStatus = SubmissionStatus.Qualified; break; case 2: b.SubmissionStatus = SubmissionStatus.Approved; break; case 1: b.SubmissionStatus = SubmissionStatus.Ranked; break; default: b.SubmissionStatus = SubmissionStatus.Pending; break; } b.BeatmapId = bmi.beatmapId; b.BeatmapSetId = bmi.beatmapSetId; b.BeatmapTopicId = bmi.threadId; b.PlayerRankOsu = bmi.osuRank; b.PlayerRankFruits = bmi.fruitsRank; b.PlayerRankTaiko = bmi.taikoRank; b.PlayerRankMania = bmi.maniaRank; } if (NewBeatmapInfo != null) { NewBeatmapInfo(null, null); } getOnlineBeatmapInfoForQueued(); } catch (Exception e) { ErrorSubmission.Submit(new OsuError(e) { Feedback = "beatmap info reply" }); } Debug.Print("Received details for " + reply.beatmapInfo.Count + " beatmaps!"); }