Skip to content

Commit c1abb85

Browse files
committed
perf: 游戏资源服务只读取需要处理的文件格式
1 parent 2fd1c87 commit c1abb85

File tree

2 files changed

+14
-11
lines changed

2 files changed

+14
-11
lines changed

Moder.Core/Services/GameResources/Base/ResourcesService.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@ protected ResourcesService(string folderOrFileRelativePath, WatcherFilter filter
3737

3838
var isFolderPath = pathType == PathType.Folder;
3939
var filePaths = isFolderPath
40-
? gameResourcesPathService.GetAllFilePriorModByRelativePathForFolder(_folderOrFileRelativePath)
40+
? gameResourcesPathService.GetAllFilePriorModByRelativePathForFolder(
41+
_folderOrFileRelativePath,
42+
filter.Name
43+
)
4144
: [gameResourcesPathService.GetFilePathPriorModByRelativePath(folderOrFileRelativePath)];
4245

4346
// Resources 必须在使用 ParseFileAndAddToResources 之前初始化
@@ -55,11 +58,7 @@ protected ResourcesService(string folderOrFileRelativePath, WatcherFilter filter
5558
this,
5659
filter.Name
5760
);
58-
Log.Info(
59-
"初始化资源成功: {FolderRelativePath}, 共 {Count} 个文件",
60-
_folderOrFileRelativePath,
61-
filePaths.Count
62-
);
61+
Log.Info("初始化资源成功: {FolderRelativePath}, 共 {Count} 个文件", _folderOrFileRelativePath, filePaths.Count);
6362
LogItemsSum();
6463
}
6564

Moder.Core/Services/GameResources/GameResourcesPathService.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,13 @@ params string[] folderRelativePaths
2828
/// 获得所有应该加载的文件绝对路径, Mod优先, 遵循 replace_path 指令
2929
/// </summary>
3030
/// <param name="folderRelativePath"></param>
31+
/// <param name="filter"></param>
3132
/// <returns></returns>
3233
/// <exception cref="DirectoryNotFoundException"></exception>
33-
public IReadOnlyCollection<string> GetAllFilePriorModByRelativePathForFolder(string folderRelativePath)
34+
public IReadOnlyCollection<string> GetAllFilePriorModByRelativePathForFolder(
35+
string folderRelativePath,
36+
string filter = "*.*"
37+
)
3438
{
3539
Log.Info("正在获取文件夹 {Path} 下的文件", folderRelativePath);
3640
var modFolder = Path.Combine(_settingService.ModRootFolderPath, folderRelativePath);
@@ -43,7 +47,7 @@ public IReadOnlyCollection<string> GetAllFilePriorModByRelativePathForFolder(str
4347

4448
if (!Directory.Exists(modFolder))
4549
{
46-
return Directory.GetFiles(gameFolder);
50+
return Directory.GetFiles(gameFolder, filter);
4751
}
4852

4953
if (_descriptor.ReplacePaths.Contains(folderRelativePath))
@@ -53,11 +57,11 @@ public IReadOnlyCollection<string> GetAllFilePriorModByRelativePathForFolder(str
5357
gameFolder.ToFilePath(),
5458
modFolder.ToFilePath()
5559
);
56-
return Directory.GetFiles(modFolder);
60+
return Directory.GetFiles(modFolder, filter);
5761
}
5862

59-
var gameFilesPath = Directory.GetFiles(gameFolder);
60-
var modFilesPath = Directory.GetFiles(modFolder);
63+
var gameFilesPath = Directory.GetFiles(gameFolder, filter);
64+
var modFilesPath = Directory.GetFiles(modFolder, filter);
6165
return RemoveFileOfEqualName(gameFilesPath, modFilesPath);
6266
}
6367

0 commit comments

Comments
 (0)