mirror of
https://github.com/osukey/osukey.git
synced 2025-08-08 09:03:50 +09:00
Add more safety around beatmap panel and button display logic
This commit is contained in:
@ -183,14 +183,22 @@ namespace osu.Game.Screens.Play
|
|||||||
if (userId != targetUser.Id)
|
if (userId != targetUser.Id)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (replay == null) return;
|
if (replay != null)
|
||||||
|
{
|
||||||
replay.HasReceivedAllFrames = true;
|
replay.HasReceivedAllFrames = true;
|
||||||
replay = null;
|
replay = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// not really going to start anything, but will clear the beatmap card out.
|
||||||
|
attemptStart();
|
||||||
|
}
|
||||||
|
|
||||||
private void attemptStart()
|
private void attemptStart()
|
||||||
{
|
{
|
||||||
|
watchButton.Enabled.Value = false;
|
||||||
|
|
||||||
|
showBeatmapPanel(state);
|
||||||
|
|
||||||
var resolvedRuleset = rulesets.AvailableRulesets.FirstOrDefault(r => r.ID == state.RulesetID)?.CreateInstance();
|
var resolvedRuleset = rulesets.AvailableRulesets.FirstOrDefault(r => r.ID == state.RulesetID)?.CreateInstance();
|
||||||
|
|
||||||
// ruleset not available
|
// ruleset not available
|
||||||
@ -202,13 +210,8 @@ namespace osu.Game.Screens.Play
|
|||||||
|
|
||||||
var resolvedBeatmap = beatmaps.QueryBeatmap(b => b.OnlineBeatmapID == state.BeatmapID);
|
var resolvedBeatmap = beatmaps.QueryBeatmap(b => b.OnlineBeatmapID == state.BeatmapID);
|
||||||
|
|
||||||
showBeatmapPanel(state.BeatmapID.Value);
|
|
||||||
|
|
||||||
if (resolvedBeatmap == null)
|
if (resolvedBeatmap == null)
|
||||||
{
|
|
||||||
watchButton.Enabled.Value = false;
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
var scoreInfo = new ScoreInfo
|
var scoreInfo = new ScoreInfo
|
||||||
{
|
{
|
||||||
@ -231,11 +234,20 @@ namespace osu.Game.Screens.Play
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showBeatmapPanel(int beatmapId)
|
private void showBeatmapPanel(SpectatorState state)
|
||||||
{
|
{
|
||||||
var req = new GetBeatmapSetRequest(beatmapId, BeatmapSetLookupType.BeatmapId);
|
if (state.BeatmapID == null)
|
||||||
|
{
|
||||||
|
beatmapPanelContainer.Clear();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var req = new GetBeatmapSetRequest(state.BeatmapID.Value, BeatmapSetLookupType.BeatmapId);
|
||||||
req.Success += res => Schedule(() =>
|
req.Success += res => Schedule(() =>
|
||||||
{
|
{
|
||||||
|
if (state != this.state)
|
||||||
|
return;
|
||||||
|
|
||||||
beatmapPanelContainer.Child = new GridBeatmapPanel(res.ToBeatmapSet(rulesets));
|
beatmapPanelContainer.Child = new GridBeatmapPanel(res.ToBeatmapSet(rulesets));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user