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