Skip to content

Commit 05a9d08

Browse files
committed
refactor(LocalComp): 重构模组、材质包、光影包查看界面
1 parent 7168cbb commit 05a9d08

17 files changed

+654
-1068
lines changed

Plain Craft Launcher 2/FormMain.xaml.vb

+4-4
Original file line numberDiff line numberDiff line change
@@ -665,7 +665,7 @@ Public Class FormMain
665665
Try
666666
If PageCurrent = PageType.VersionSetup AndAlso PageCurrentSub = PageSubType.VersionMod Then
667667
'Mod 管理自动刷新
668-
FrmVersionMod.ReloadModList()
668+
FrmVersionMod.ReloadCompFileList()
669669
ElseIf PageCurrent = PageType.VersionSelect Then
670670
'版本选择自动刷新
671671
LoaderFolderRun(McVersionListLoader, PathMcFolder, LoaderFolderRunType.RunOnUpdated, MaxDepth:=1, ExtraPath:="versions\")
@@ -799,7 +799,7 @@ Public Class FormMain
799799
Exit Sub
800800
End If
801801
'安装 Mod
802-
If PageVersionMod.InstallMods(FilePathList) Then Exit Sub
802+
If FrmVersionMod.InstallMods(FilePathList) Then Exit Sub
803803
'处理资源安装
804804
If PageCurrent = PageType.VersionSetup AndAlso {"zip"}.Any(Function(i) i = Extension) Then
805805
Select Case PageCurrentSub
@@ -821,7 +821,7 @@ Public Class FormMain
821821
End If
822822
CopyFile(FilePath, DestFile)
823823
Hint($"已导入 {GetFileNameFromPath(FilePath)}", HintType.Finish)
824-
If FrmVersionResourcePack IsNot Nothing Then RunInUi(Sub() FrmVersionResourcePack.Reload())
824+
If FrmVersionResourcePack IsNot Nothing Then RunInUi(Sub() FrmVersionResourcePack.ReloadCompFileList())
825825
Exit Sub
826826
Case PageSubType.VersionShader
827827
Dim DestFile = PageVersionLeft.Version.PathIndie + "shaderpacks\" + GetFileNameFromPath(FilePath)
@@ -831,7 +831,7 @@ Public Class FormMain
831831
End If
832832
CopyFile(FilePath, DestFile)
833833
Hint($"已导入 {GetFileNameFromPath(FilePath)}", HintType.Finish)
834-
If FrmVersionShader IsNot Nothing Then RunInUi(Sub() FrmVersionShader.Reload())
834+
If FrmVersionShader IsNot Nothing Then RunInUi(Sub() FrmVersionShader.ReloadCompFileList())
835835
Exit Sub
836836
End Select
837837
End If

Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb

+49-36
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,27 @@
1313
''' 资源包。
1414
''' </summary>
1515
ResourcePack = 2
16+
''' <summary>
17+
''' 光影包。
18+
''' </summary>
19+
Shader = 3
1620
End Enum
17-
Public Enum CompModLoaderType
21+
Public Enum CompLoaderType
1822
'https://docs.curseforge.com/?http#tocS_ModLoaderType
23+
' 模组
1924
Any = 0
2025
Forge = 1
2126
LiteLoader = 3
2227
Fabric = 4
2328
Quilt = 5
2429
NeoForge = 6
30+
' 材质包
31+
Minecraft = 7
32+
' 光影包
33+
OptiFine = 8
34+
Iris = 9
35+
Canvas = 10
36+
Vanilla = 11
2537
End Enum
2638
<Flags> Public Enum CompSourceType
2739
CurseForge = 1
@@ -153,7 +165,7 @@
153165
''' <summary>
154166
''' 支持的 Mod 加载器列表。可能为空。
155167
''' </summary>
156-
Public ReadOnly ModLoaders As List(Of CompModLoaderType)
168+
Public ReadOnly ModLoaders As List(Of CompLoaderType)
157169
''' <summary>
158170
''' 描述性标签的内容。已转换为中文。
159171
''' </summary>
@@ -223,9 +235,9 @@
223235
If Data.ContainsKey("LastUpdate") Then LastUpdate = Data("LastUpdate")
224236
DownloadCount = Data("DownloadCount")
225237
If Data.ContainsKey("ModLoaders") Then
226-
ModLoaders = CType(Data("ModLoaders"), JArray).Select(Function(t) CType(t.ToObject(Of Integer), CompModLoaderType)).ToList
238+
ModLoaders = CType(Data("ModLoaders"), JArray).Select(Function(t) CType(t.ToObject(Of Integer), CompLoaderType)).ToList
227239
Else
228-
ModLoaders = New List(Of CompModLoaderType)
240+
ModLoaders = New List(Of CompLoaderType)
229241
End If
230242
Tags = CType(Data("Tags"), JArray).Select(Function(t) t.ToString).ToList
231243
If Data.ContainsKey("LogoUrl") Then LogoUrl = Data("LogoUrl")
@@ -255,7 +267,7 @@
255267
End If
256268
End If
257269
'FileIndexes / GameVersions / ModLoaders
258-
ModLoaders = New List(Of CompModLoaderType)
270+
ModLoaders = New List(Of CompLoaderType)
259271
Dim Files As New List(Of KeyValuePair(Of Integer, List(Of String))) 'FileId, GameVersions
260272
For Each File In If(Data("latestFiles"), New JArray)
261273
Dim NewFile As New CompFile(File, Type)
@@ -356,17 +368,18 @@
356368
Case "mod" : Type = CompType.Mod
357369
Case "modpack" : Type = CompType.ModPack
358370
Case "resourcepack" : Type = CompType.ResourcePack
371+
Case "shader" : Type = CompType.Shader
359372
End Select
360373
'Tags & ModLoaders
361374
Tags = New List(Of String)
362-
ModLoaders = New List(Of CompModLoaderType)
375+
ModLoaders = New List(Of CompLoaderType)
363376
For Each Category In Data("categories").Select(Function(t) t.ToString)
364377
Select Case Category
365378
'加载器
366-
Case "forge" : ModLoaders.Add(CompModLoaderType.Forge)
367-
Case "fabric" : ModLoaders.Add(CompModLoaderType.Fabric)
368-
Case "quilt" : ModLoaders.Add(CompModLoaderType.Quilt)
369-
Case "neoforge" : ModLoaders.Add(CompModLoaderType.NeoForge)
379+
Case "forge" : ModLoaders.Add(CompLoaderType.Forge)
380+
Case "fabric" : ModLoaders.Add(CompLoaderType.Fabric)
381+
Case "quilt" : ModLoaders.Add(CompLoaderType.Quilt)
382+
Case "neoforge" : ModLoaders.Add(CompLoaderType.NeoForge)
370383
'Mod
371384
Case "worldgen" : Tags.Add("世界元素")
372385
Case "technology" : Tags.Add("科技")
@@ -481,8 +494,8 @@
481494
End If
482495
'获取 Mod 加载器描述
483496
Dim ModLoaderDescriptionFull As String, ModLoaderDescriptionPart As String
484-
Dim ModLoadersForDesc As New List(Of CompModLoaderType)(ModLoaders)
485-
If Setup.Get("ToolDownloadIgnoreQuilt") Then ModLoadersForDesc.Remove(CompModLoaderType.Quilt)
497+
Dim ModLoadersForDesc As New List(Of CompLoaderType)(ModLoaders)
498+
If Setup.Get("ToolDownloadIgnoreQuilt") Then ModLoadersForDesc.Remove(CompLoaderType.Quilt)
486499
Select Case ModLoadersForDesc.Count
487500
Case 0
488501
If ModLoaders.Count = 1 Then
@@ -496,17 +509,17 @@
496509
ModLoaderDescriptionFull = "仅 " & ModLoadersForDesc.Single.ToString
497510
ModLoaderDescriptionPart = ModLoadersForDesc.Single.ToString
498511
Case Else
499-
If ModLoaders.Contains(CompModLoaderType.Forge) AndAlso Not AllSnapshot AndAlso
500-
(GameVersions.Max < 14 OrElse ModLoaders.Contains(CompModLoaderType.Fabric)) AndAlso
501-
(GameVersions.Max < 20 OrElse ModLoaders.Contains(CompModLoaderType.NeoForge)) AndAlso
502-
(GameVersions.Max < 14 OrElse ModLoaders.Contains(CompModLoaderType.Quilt) OrElse Setup.Get("ToolDownloadIgnoreQuilt")) Then
512+
If ModLoaders.Contains(CompLoaderType.Forge) AndAlso Not AllSnapshot AndAlso
513+
(GameVersions.Max < 14 OrElse ModLoaders.Contains(CompLoaderType.Fabric)) AndAlso
514+
(GameVersions.Max < 20 OrElse ModLoaders.Contains(CompLoaderType.NeoForge)) AndAlso
515+
(GameVersions.Max < 14 OrElse ModLoaders.Contains(CompLoaderType.Quilt) OrElse Setup.Get("ToolDownloadIgnoreQuilt")) Then
503516
ModLoaderDescriptionFull = "任意"
504517
ModLoaderDescriptionPart = ""
505518
ElseIf AllSnapshot AndAlso
506-
ModLoaders.Contains(CompModLoaderType.Forge) AndAlso
507-
ModLoaders.Contains(CompModLoaderType.Fabric) AndAlso
508-
ModLoaders.Contains(CompModLoaderType.NeoForge) AndAlso
509-
(ModLoaders.Contains(CompModLoaderType.Quilt) OrElse Setup.Get("ToolDownloadIgnoreQuilt")) Then
519+
ModLoaders.Contains(CompLoaderType.Forge) AndAlso
520+
ModLoaders.Contains(CompLoaderType.Fabric) AndAlso
521+
ModLoaders.Contains(CompLoaderType.NeoForge) AndAlso
522+
(ModLoaders.Contains(CompLoaderType.Quilt) OrElse Setup.Get("ToolDownloadIgnoreQuilt")) Then
510523
ModLoaderDescriptionFull = "任意"
511524
ModLoaderDescriptionPart = ""
512525
Else
@@ -733,7 +746,7 @@ NoSubtitle:
733746
''' <summary>
734747
''' 筛选 Mod 加载器类别。
735748
''' </summary>
736-
Public ModLoader As CompModLoaderType = CompModLoaderType.Any
749+
Public ModLoader As CompLoaderType = CompLoaderType.Any
737750
''' <summary>
738751
''' 筛选 MC 版本。
739752
''' </summary>
@@ -775,7 +788,7 @@ NoSubtitle:
775788
'FUTURE: Res
776789
End Select
777790
Address += "&categoryId=" & If(Tag = "", "0", Tag.BeforeFirst("/"))
778-
If ModLoader <> CompModLoaderType.Any Then Address += "&modLoaderType=" & CType(ModLoader, Integer)
791+
If ModLoader <> CompLoaderType.Any Then Address += "&modLoaderType=" & CType(ModLoader, Integer)
779792
If Not String.IsNullOrEmpty(GameVersion) Then Address += "&gameVersion=" & GameVersion
780793
If Not String.IsNullOrEmpty(SearchText) Then Address += "&searchFilter=" & Net.WebUtility.UrlEncode(SearchText)
781794
If Storage.CurseForgeOffset > 0 Then Address += "&index=" & Storage.CurseForgeOffset
@@ -796,7 +809,7 @@ NoSubtitle:
796809
Dim Facets As New List(Of String)
797810
Facets.Add($"[""project_type:{GetStringFromEnum(Type).ToLower}""]")
798811
If Not String.IsNullOrEmpty(Tag) Then Facets.Add($"[""categories:'{Tag.AfterLast("/")}'""]")
799-
If ModLoader <> CompModLoaderType.Any Then Facets.Add($"[""categories:'{GetStringFromEnum(ModLoader).ToLower}'""]")
812+
If ModLoader <> CompLoaderType.Any Then Facets.Add($"[""categories:'{GetStringFromEnum(ModLoader).ToLower}'""]")
800813
If Not String.IsNullOrEmpty(GameVersion) Then Facets.Add($"[""versions:'{GameVersion}'""]")
801814
Address += "&facets=[" & String.Join(",", Facets) & "]"
802815
Return Address
@@ -868,7 +881,7 @@ NoSubtitle:
868881

869882
#Region "拒绝 1.13- Quilt(这个版本根本没有 Quilt)"
870883

871-
If Task.Input.ModLoader = CompModLoaderType.Quilt AndAlso VersionSortInteger(If(Task.Input.GameVersion, "1.15"), "1.14") = -1 Then
884+
If Task.Input.ModLoader = CompLoaderType.Quilt AndAlso VersionSortInteger(If(Task.Input.GameVersion, "1.15"), "1.14") = -1 Then
872885
Throw New Exception("Quilt 不支持 Minecraft " & Task.Input.GameVersion)
873886
End If
874887

@@ -1170,7 +1183,7 @@ Retry:
11701183
''' <summary>
11711184
''' 支持的 Mod 加载器列表。可能为空。
11721185
''' </summary>
1173-
Public ReadOnly ModLoaders As List(Of CompModLoaderType)
1186+
Public ReadOnly ModLoaders As List(Of CompLoaderType)
11741187
''' <summary>
11751188
''' 支持的游戏版本列表。类型包括:"1.18.5","1.18","1.18 预览版","21w15a","未知版本"。
11761189
''' </summary>
@@ -1250,7 +1263,7 @@ Retry:
12501263
Status = CType(Data("Status").ToObject(Of Integer), CompFileStatus)
12511264
If Data.ContainsKey("FileName") Then FileName = Data("FileName").ToString
12521265
If Data.ContainsKey("DownloadUrls") Then DownloadUrls = Data("DownloadUrls").ToObject(Of List(Of String))
1253-
If Data.ContainsKey("ModLoaders") Then ModLoaders = Data("ModLoaders").ToObject(Of List(Of CompModLoaderType))
1266+
If Data.ContainsKey("ModLoaders") Then ModLoaders = Data("ModLoaders").ToObject(Of List(Of CompLoaderType))
12541267
If Data.ContainsKey("Hash") Then Hash = Data("Hash").ToString
12551268
If Data.ContainsKey("GameVersions") Then GameVersions = Data("GameVersions").ToObject(Of List(Of String))
12561269
If Data.ContainsKey("RawDependencies") Then RawDependencies = Data("RawDependencies").ToObject(Of List(Of String))
@@ -1298,11 +1311,11 @@ Retry:
12981311
GameVersions = New List(Of String) From {"未知版本"}
12991312
End If
13001313
'ModLoaders
1301-
ModLoaders = New List(Of CompModLoaderType)
1302-
If RawVersions.Contains("forge") Then ModLoaders.Add(CompModLoaderType.Forge)
1303-
If RawVersions.Contains("fabric") Then ModLoaders.Add(CompModLoaderType.Fabric)
1304-
If RawVersions.Contains("quilt") Then ModLoaders.Add(CompModLoaderType.Quilt)
1305-
If RawVersions.Contains("neoforge") Then ModLoaders.Add(CompModLoaderType.NeoForge)
1314+
ModLoaders = New List(Of CompLoaderType)
1315+
If RawVersions.Contains("forge") Then ModLoaders.Add(CompLoaderType.Forge)
1316+
If RawVersions.Contains("fabric") Then ModLoaders.Add(CompLoaderType.Fabric)
1317+
If RawVersions.Contains("quilt") Then ModLoaders.Add(CompLoaderType.Quilt)
1318+
If RawVersions.Contains("neoforge") Then ModLoaders.Add(CompLoaderType.NeoForge)
13061319
#End Region
13071320
Else
13081321
#Region "Modrinth"
@@ -1342,11 +1355,11 @@ Retry:
13421355
End If
13431356
'ModLoaders
13441357
Dim RawLoaders As List(Of String) = Data("loaders").Select(Function(v) v.ToString).ToList
1345-
ModLoaders = New List(Of CompModLoaderType)
1346-
If RawLoaders.Contains("forge") Then ModLoaders.Add(CompModLoaderType.Forge)
1347-
If RawLoaders.Contains("neoforge") Then ModLoaders.Add(CompModLoaderType.NeoForge)
1348-
If RawLoaders.Contains("fabric") Then ModLoaders.Add(CompModLoaderType.Fabric)
1349-
If RawLoaders.Contains("quilt") Then ModLoaders.Add(CompModLoaderType.Quilt)
1358+
ModLoaders = New List(Of CompLoaderType)
1359+
If RawLoaders.Contains("forge") Then ModLoaders.Add(CompLoaderType.Forge)
1360+
If RawLoaders.Contains("neoforge") Then ModLoaders.Add(CompLoaderType.NeoForge)
1361+
If RawLoaders.Contains("fabric") Then ModLoaders.Add(CompLoaderType.Fabric)
1362+
If RawLoaders.Contains("quilt") Then ModLoaders.Add(CompLoaderType.Quilt)
13501363
#End Region
13511364
End If
13521365
End If

0 commit comments

Comments
 (0)