Skip to content

Commit 4d6d5ab

Browse files
Mark MSUs as unknown if not matching MSU details
1 parent a54adf9 commit 4d6d5ab

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

MSURandomizerLibrary/Services/MsuCacheService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace MSURandomizerLibrary.Services;
66

77
internal class MsuCacheService : IMsuCacheService
88
{
9-
private const int CurrentCacheVersion = 2;
9+
private const int CurrentCacheVersion = 3;
1010
private readonly IMsuTypeService _msuTypeService;
1111
private readonly MsuUserOptions _msuUserOptions;
1212
private readonly ILogger<MsuCacheService> _logger;

MSURandomizerLibrary/Services/MsuLookupService.cs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public IReadOnlyCollection<Msu> LookupMsus(string? defaultDirectory, Dictionary<
112112
{
113113
return null;
114114
}
115-
115+
116116
var msuDetails = _msuDetailsService.GetMsuDetails(msuPath, out var yamlHash, out var yamlError);
117117
if (!string.IsNullOrEmpty(yamlError))
118118
{
@@ -121,6 +121,17 @@ public IReadOnlyCollection<Msu> LookupMsus(string? defaultDirectory, Dictionary<
121121

122122
var baseName = Path.GetFileName(msuPath).Replace(".msu", "", StringComparison.OrdinalIgnoreCase);
123123
var pcmFiles = Directory.EnumerateFiles(directory, $"{baseName}-*.pcm", SearchOption.AllDirectories).ToList();
124+
var msuDetailMismatch = false;
125+
126+
if (msuDetails?.Tracks != null && pcmFiles.Count > 0)
127+
{
128+
var msuDetailSongCount = msuDetails.Tracks.Values.Sum(x => 1 + (x.Alts?.Count ?? 0)) * 0.75;
129+
if (pcmFiles.Count < msuDetailSongCount)
130+
{
131+
yamlHash = "";
132+
msuDetailMismatch = true;
133+
}
134+
}
124135

125136
// Load the MSU from cache if possible
126137
if (!ignoreCache)
@@ -130,10 +141,7 @@ public IReadOnlyCollection<Msu> LookupMsus(string? defaultDirectory, Dictionary<
130141
{
131142
var cacheSettings = _msuUserOptions.GetMsuSettings(msuPath);
132143
cacheMsu.Settings = cacheSettings;
133-
if (cacheMsu.MsuType != null || cacheMsu.Settings.IsUserUnknownMsu)
134-
{
135-
return cacheMsu;
136-
}
144+
return cacheMsu;
137145
}
138146
}
139147

@@ -153,7 +161,7 @@ public IReadOnlyCollection<Msu> LookupMsus(string? defaultDirectory, Dictionary<
153161
Msu msu;
154162

155163
// If it's an unknown MSU type, simply load the details as is
156-
if (msuType == null)
164+
if (msuType == null || msuDetailMismatch)
157165
{
158166
msu = LoadUnknownMsu(msuPath, directory, baseName, pcmFiles);
159167
}

0 commit comments

Comments
 (0)