mirror of https://github.com/ppy/osu
Update hashing method in line with master
This commit is contained in:
parent
be37f3c328
commit
66e43e6ed9
|
@ -121,10 +121,8 @@ public void TestImportStatistics()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private ScoreInfo loadIntoOsu(OsuGameBase osu, ScoreInfo score, string guidOverride = null)
|
private ScoreInfo loadIntoOsu(OsuGameBase osu, ScoreInfo score)
|
||||||
{
|
{
|
||||||
score.MD5Hash = guidOverride ?? Guid.NewGuid().ToString();
|
|
||||||
|
|
||||||
var beatmapManager = osu.Dependencies.Get<BeatmapManager>();
|
var beatmapManager = osu.Dependencies.Get<BeatmapManager>();
|
||||||
|
|
||||||
score.Beatmap = beatmapManager.GetAllUsableBeatmapSets().First().Beatmaps.First();
|
score.Beatmap = beatmapManager.GetAllUsableBeatmapSets().First().Beatmaps.First();
|
||||||
|
@ -133,9 +131,7 @@ private ScoreInfo loadIntoOsu(OsuGameBase osu, ScoreInfo score, string guidOverr
|
||||||
var scoreManager = osu.Dependencies.Get<ScoreManager>();
|
var scoreManager = osu.Dependencies.Get<ScoreManager>();
|
||||||
scoreManager.Import(score);
|
scoreManager.Import(score);
|
||||||
|
|
||||||
var imported = scoreManager.Query(s => s.MD5Hash == score.MD5Hash);
|
return scoreManager.GetAllUsableScores().First();
|
||||||
|
|
||||||
return imported;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private string createTemporaryBeatmap()
|
private string createTemporaryBeatmap()
|
||||||
|
|
|
@ -46,7 +46,9 @@ public Score Parse(Stream stream)
|
||||||
score.ScoreInfo.Beatmap = currentBeatmap.BeatmapInfo;
|
score.ScoreInfo.Beatmap = currentBeatmap.BeatmapInfo;
|
||||||
|
|
||||||
score.ScoreInfo.User = score.Replay.User = new User { Username = sr.ReadString() };
|
score.ScoreInfo.User = score.Replay.User = new User { Username = sr.ReadString() };
|
||||||
score.ScoreInfo.MD5Hash = sr.ReadString();
|
|
||||||
|
// MD5Hash
|
||||||
|
sr.ReadString();
|
||||||
|
|
||||||
var count300 = (int)sr.ReadUInt16();
|
var count300 = (int)sr.ReadUInt16();
|
||||||
var count100 = (int)sr.ReadUInt16();
|
var count100 = (int)sr.ReadUInt16();
|
||||||
|
|
|
@ -110,14 +110,10 @@ public string StatisticsJson
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// MD5 is kept for legacy support.
|
|
||||||
/// </summary>
|
|
||||||
[JsonProperty("file_md5")]
|
|
||||||
public string MD5Hash { get; set; }
|
|
||||||
|
|
||||||
public List<ScoreFileInfo> Files { get; set; }
|
public List<ScoreFileInfo> Files { get; set; }
|
||||||
|
|
||||||
|
public string Hash { get; set; }
|
||||||
|
|
||||||
public bool DeletePending { get; set; }
|
public bool DeletePending { get; set; }
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
|
|
|
@ -20,20 +20,18 @@ public class ScoreManager : ArchiveModelManager<ScoreInfo, ScoreFileInfo>
|
||||||
{
|
{
|
||||||
public override string[] HandledExtensions => new[] { ".osr" };
|
public override string[] HandledExtensions => new[] { ".osr" };
|
||||||
|
|
||||||
|
protected override string[] HashableFileTypes => new[] { ".osr" };
|
||||||
|
|
||||||
protected override string ImportFromStablePath => "Replays";
|
protected override string ImportFromStablePath => "Replays";
|
||||||
|
|
||||||
private readonly RulesetStore rulesets;
|
private readonly RulesetStore rulesets;
|
||||||
private readonly BeatmapManager beatmaps;
|
private readonly BeatmapManager beatmaps;
|
||||||
|
|
||||||
private readonly ScoreStore scores;
|
|
||||||
|
|
||||||
public ScoreManager(RulesetStore rulesets, BeatmapManager beatmaps, Storage storage, IDatabaseContextFactory contextFactory, IIpcHost importHost = null)
|
public ScoreManager(RulesetStore rulesets, BeatmapManager beatmaps, Storage storage, IDatabaseContextFactory contextFactory, IIpcHost importHost = null)
|
||||||
: base(storage, contextFactory, new ScoreStore(contextFactory, storage), importHost)
|
: base(storage, contextFactory, new ScoreStore(contextFactory, storage), importHost)
|
||||||
{
|
{
|
||||||
this.rulesets = rulesets;
|
this.rulesets = rulesets;
|
||||||
this.beatmaps = beatmaps;
|
this.beatmaps = beatmaps;
|
||||||
|
|
||||||
scores = (ScoreStore)ModelStore;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override ScoreInfo CreateModel(ArchiveReader archive)
|
protected override ScoreInfo CreateModel(ArchiveReader archive)
|
||||||
|
@ -55,18 +53,6 @@ protected override ScoreInfo CreateModel(ArchiveReader archive)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override ScoreInfo CheckForExisting(ScoreInfo model)
|
|
||||||
{
|
|
||||||
var existingHashMatch = scores.ConsumableItems.FirstOrDefault(s => s.MD5Hash != null && s.MD5Hash == model.MD5Hash);
|
|
||||||
if (existingHashMatch != null)
|
|
||||||
{
|
|
||||||
Undelete(existingHashMatch);
|
|
||||||
return existingHashMatch;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Score GetScore(ScoreInfo score) => new LegacyDatabasedScore(score, rulesets, beatmaps, Files.Store);
|
public Score GetScore(ScoreInfo score) => new LegacyDatabasedScore(score, rulesets, beatmaps, Files.Store);
|
||||||
|
|
||||||
public List<ScoreInfo> GetAllUsableScores() => ModelStore.ConsumableItems.Where(s => !s.DeletePending).ToList();
|
public List<ScoreInfo> GetAllUsableScores() => ModelStore.ConsumableItems.Where(s => !s.DeletePending).ToList();
|
||||||
|
|
Loading…
Reference in New Issue