1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-14 10:12:54 +08:00

Allow subclasses of LegacyScoreParser to specify beatmap/ruleset retrieval

This commit is contained in:
smoogipoo 2018-05-15 11:42:40 +09:00
parent 92c9c2d63a
commit fe2ea17e7f

View File

@ -25,6 +25,10 @@ namespace osu.Game.Rulesets.Scoring.Legacy
this.beatmaps = beatmaps;
}
protected LegacyScoreParser()
{
}
private IBeatmap currentBeatmap;
private Ruleset currentRuleset;
@ -34,16 +38,15 @@ namespace osu.Game.Rulesets.Scoring.Legacy
using (SerializationReader sr = new SerializationReader(stream))
{
score = new Score { Ruleset = rulesets.GetRuleset(sr.ReadByte()) };
currentRuleset = score.Ruleset.CreateInstance();
currentRuleset = GetRuleset(sr.ReadByte());
score = new Score { Ruleset = currentRuleset.RulesetInfo };
/* score.Pass = true;*/
var version = sr.ReadInt32();
/* score.FileChecksum = */
var beatmapHash = sr.ReadString();
score.Beatmap = beatmaps.QueryBeatmap(b => b.MD5Hash == beatmapHash);
currentBeatmap = beatmaps.GetWorkingBeatmap(score.Beatmap).Beatmap;
currentBeatmap = GetBeatmap(sr.ReadString()).Beatmap;
score.Beatmap = currentBeatmap.BeatmapInfo;
/* score.PlayerName = */
score.User = new User { Username = sr.ReadString() };
@ -181,5 +184,8 @@ namespace osu.Game.Rulesets.Scoring.Legacy
return frame;
}
protected virtual Ruleset GetRuleset(int rulesetId) => rulesets.GetRuleset(rulesetId).CreateInstance();
protected virtual WorkingBeatmap GetBeatmap(string md5Hash) => beatmaps.GetWorkingBeatmap(beatmaps.QueryBeatmap(b => b.MD5Hash == md5Hash));
}
}