Add forceful set helper methods in OsuGame

This commit is contained in:
smoogipoo 2018-12-18 18:09:46 +09:00
parent e4e1bde5da
commit 3cdeeb7ac5
2 changed files with 33 additions and 11 deletions

View File

@ -671,6 +671,32 @@ protected override void UpdateAfterChildren()
MenuCursorContainer.CanShowCursor = currentScreen?.CursorVisible ?? false;
}
/// <summary>
/// Sets <see cref="Beatmap"/> while ignoring any beatmap.
/// </summary>
/// <param name="beatmap">The beatmap to set.</param>
public void ForcefullySetBeatmap(WorkingBeatmap beatmap)
{
var beatmapDisabled = Beatmap.Disabled;
Beatmap.Disabled = false;
Beatmap.Value = beatmap;
Beatmap.Disabled = beatmapDisabled;
}
/// <summary>
/// Sets <see cref="Ruleset"/> while ignoring any ruleset restrictions.
/// </summary>
/// <param name="beatmap">The beatmap to set.</param>
public void ForcefullySetRuleset(RulesetInfo ruleset)
{
var rulesetDisabled = this.ruleset.Disabled;
this.ruleset.Disabled = false;
this.ruleset.Value = ruleset;
this.ruleset.Disabled = rulesetDisabled;
}
private void screenAdded(Screen newScreen)
{
currentScreen = (OsuScreen)newScreen;

View File

@ -54,6 +54,9 @@ public class MatchScreen : MultiplayerScreen
[Resolved]
private APIAccess api { get; set; }
[Resolved]
private OsuGame game { get; set; }
public MatchScreen(Room room, Action<Screen> pushGameplayScreen)
{
this.room = room;
@ -167,18 +170,11 @@ private void setFromPlaylist()
// Todo: item.Beatmap can be null here...
var localBeatmap = beatmapManager.QueryBeatmap(b => b.OnlineBeatmapID == item.BeatmapID) ?? item.Beatmap;
// Bypass any beatmap and ruleset restrictions
var beatmapDisabled = Beatmap.Disabled;
var rulesetDisabled = Ruleset.Disabled;
Beatmap.Disabled = false;
Ruleset.Disabled = false;
var newBeatmap = beatmapManager.GetWorkingBeatmap(localBeatmap);
newBeatmap.Mods.Value = item.RequiredMods.ToArray();
Beatmap.Value = beatmapManager.GetWorkingBeatmap(localBeatmap);
Beatmap.Value.Mods.Value = item.RequiredMods.ToArray();
Ruleset.Value = item.Ruleset;
Beatmap.Disabled = beatmapDisabled;
Ruleset.Disabled = rulesetDisabled;
game.ForcefullySetBeatmap(newBeatmap);
game.ForcefullySetRuleset(item.Ruleset);
}
private void onStart()