diff --git a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/UrlProvider/GachaLogUrlWebCacheProvider.cs b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/UrlProvider/GachaLogUrlWebCacheProvider.cs
index dee7caf6..4b0263f0 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/UrlProvider/GachaLogUrlWebCacheProvider.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/UrlProvider/GachaLogUrlWebCacheProvider.cs
@@ -36,7 +36,16 @@ internal class GachaLogUrlWebCacheProvider : IGachaLogUrlProvider
public static string GetCacheFile(string path)
{
string folder = Path.GetDirectoryName(path) ?? string.Empty;
- return Path.Combine(folder, @"YuanShen_Data\webCaches\Cache\Cache_Data\data_2");
+ var cacheDataPath = Path.Combine(folder, @"YuanShen_Data\webCaches\Cache\Cache_Data\data_2");
+ var cacheDataPathIntl = Path.Combine(folder, @"GenshinImpact_Data\webCaches\Cache\Cache_Data\data_2");
+ if (File.Exists(cacheDataPath))
+ {
+ return cacheDataPath;
+ }
+ else
+ {
+ return cacheDataPathIntl;
+ }
}
///
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs
index bc2261b6..4ca0e9b4 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs
@@ -207,7 +207,7 @@ internal class GameService : IGameService, IDisposable
return true;
}
- return Process.GetProcessesByName("YuanShen.exe").Any();
+ return Process.GetProcessesByName("YuanShen.exe").Any() || Process.GetProcessesByName("GenshinImpact.exe").Any();
}
///
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/Locator/ManualGameLocator.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/Locator/ManualGameLocator.cs
index d9d741cd..90320f2b 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/Game/Locator/ManualGameLocator.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/Locator/ManualGameLocator.cs
@@ -30,18 +30,26 @@ internal class ManualGameLocator : IGameLocator
///
public Task> LocateGamePathAsync()
{
- return LocateInternalAsync("YuanShen.exe");
+ List filenames = new List()
+ {
+ "YuanShen.exe",
+ "GenshinImpact.exe",
+ };
+ return LocateInternalAsync(filenames);
}
- private async Task> LocateInternalAsync(string fileName)
+ private async Task> LocateInternalAsync(List fileNames)
{
FileOpenPicker picker = pickerFactory.GetFileOpenPicker(PickerLocationId.Desktop, "选择游戏本体", ".exe");
if (await picker.PickSingleFileAsync() is StorageFile file)
{
string path = file.Path;
- if (path.Contains(fileName))
+ foreach (string fileName in fileNames)
{
- return new(true, path);
+ if (path.Contains(fileName))
+ {
+ return new(true, path);
+ }
}
}
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/Locator/UnityLogGameLocator.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/Locator/UnityLogGameLocator.cs
index e66f4645..b8a99764 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/Game/Locator/UnityLogGameLocator.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/Locator/UnityLogGameLocator.cs
@@ -22,28 +22,48 @@ internal partial class UnityLogGameLocator : IGameLocator
await ThreadHelper.SwitchToBackgroundAsync();
string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string logFilePath = Path.Combine(appDataPath, @"..\LocalLow\miHoYo\原神\output_log.txt");
+ string logFilePathIntl = Path.Combine(appDataPath, @"..\LocalLow\miHoYo\Genshin Impact\output_log.txt");
- using (TempFile? tempFile = TempFile.CreateFromFileCopy(logFilePath))
+ using (TempFile? tempFile = TempFile.CreateFromFileCopy(logFilePath), tempFileIntl = TempFile.CreateFromFileCopy(logFilePathIntl))
{
- if (tempFile == null)
+ if (tempFile != null)
{
- return new(false, $"找不到 Unity 日志文件:\n{logFilePath}");
+ string content = File.ReadAllText(tempFile.Path);
+
+ Match matchResult = WarmupFileLine().Match(content);
+ if (!matchResult.Success)
+ {
+ return new(false, $"在 Unity 日志文件中找不到游戏路径");
+ }
+
+ string entryName = matchResult.Groups[0].Value.Replace("_Data", ".exe");
+ string fullPath = Path.GetFullPath(Path.Combine(matchResult.Value, "..", entryName));
+ return new(true, fullPath);
}
-
- string content = File.ReadAllText(tempFile.Path);
-
- Match matchResult = WarmupFileLine().Match(content);
- if (!matchResult.Success)
+ else if (tempFileIntl != null)
{
- return new(false, $"在 Unity 日志文件中找不到游戏路径");
- }
+ string content = File.ReadAllText(tempFileIntl.Path);
- string entryName = matchResult.Groups[0].Value.Replace("_Data", ".exe");
- string fullPath = Path.GetFullPath(Path.Combine(matchResult.Value, "..", entryName));
- return new(true, fullPath);
+ Match matchResult = WarmupFileLineIntl().Match(content);
+ if (!matchResult.Success)
+ {
+ return new(false, $"在 Unity 日志文件中找不到游戏路径");
+ }
+
+ string entryName = matchResult.Groups[0].Value.Replace("_Data", ".exe");
+ string fullPath = Path.GetFullPath(Path.Combine(matchResult.Value, "..", entryName));
+ return new(true, fullPath);
+ }
+ else
+ {
+ return new(false, $"找不到 Unity 日志文件:\n{logFilePath}\n{logFilePathIntl}");
+ }
}
}
[GeneratedRegex(@"(?m).:/.+YuanShen_Data")]
private static partial Regex WarmupFileLine();
+
+ [GeneratedRegex(@"(?m).:/.+GenshinImpact_Data")]
+ private static partial Regex WarmupFileLineIntl();
}
\ No newline at end of file