Skip to content

Commit 1a0c7b0

Browse files
authored
Merge pull request #4758 from youzi-3222/feat-98
导出整合包 复活
2 parents a6ebf3b + fc1519e commit 1a0c7b0

12 files changed

Lines changed: 858 additions & 17 deletions

File tree

Plain Craft Launcher 2/Controls/MyListItem.xaml.vb

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,16 @@
337337
Return _Checked
338338
End Get
339339
Set(value As Boolean)
340-
SetChecked(value, False, True)
340+
SetChecked(value, False, True, _Half)
341+
End Set
342+
End Property
343+
Private _Half As Boolean = False
344+
Public Property Half As Boolean
345+
Get
346+
Return _Half
347+
End Get
348+
Set(value As Boolean)
349+
SetChecked(_Checked, False, True, value)
341350
End Set
342351
End Property
343352
''' <summary>
@@ -346,7 +355,8 @@
346355
''' <param name="value">新的 Checked 属性。</param>
347356
''' <param name="user">是否由用户引发。</param>
348357
''' <param name="anime">是否执行动画。</param>
349-
Public Sub SetChecked(value As Boolean, user As Boolean, anime As Boolean)
358+
''' <param name="half">是否为部分选中。</param>
359+
Public Sub SetChecked(value As Boolean, user As Boolean, anime As Boolean, Optional half As Boolean = False)
350360
Try
351361

352362
'自定义属性基础
@@ -364,8 +374,9 @@
364374
End If
365375
_Checked = value
366376
Else
367-
If value = _Checked Then Exit Sub
377+
If value = _Checked AndAlso half = _Half Then Exit Sub
368378
_Checked = value
379+
_Half = half
369380
If IsInitialized Then
370381
RaiseEvent Changed(Me, ChangedEventArgs)
371382
If ChangedEventArgs.Handled Then
@@ -429,9 +440,9 @@
429440
'由无变有
430441
If Not IsNothing(RectCheck) Then
431442
Dim Delta = ActualHeight - RectCheck.ActualHeight - 12
432-
Anim.Add(AaHeight(RectCheck, Delta * 0.4, 200,, New AniEaseOutFluent(AniEasePower.Weak)))
433-
Anim.Add(AaHeight(RectCheck, Delta * 0.6, 300,, New AniEaseOutBack(AniEasePower.Weak)))
434-
Anim.Add(AaOpacity(RectCheck, 1 - RectCheck.Opacity, 30))
443+
Anim.Add(AaHeight(RectCheck, Delta * If(half, 0.2, 0.4), 200,, New AniEaseOutFluent(AniEasePower.Weak)))
444+
Anim.Add(AaHeight(RectCheck, Delta * If(half, 0.3, 0.6), 300,, New AniEaseOutBack(AniEasePower.Weak)))
445+
Anim.Add(AaOpacity(RectCheck, If(half, 0.5, 1) - RectCheck.Opacity, 30))
435446
RectCheck.VerticalAlignment = VerticalAlignment.Center
436447
RectCheck.Margin = New Thickness(-1, 0, 0, 0)
437448
End If
@@ -450,12 +461,17 @@
450461
Else
451462
'不使用动画
452463
AniStop("MyListItem Checked " & Uuid)
453-
If Checked Then
464+
465+
If Checked OrElse half Then
454466
If Not IsNothing(RectCheck) Then
455467
RectCheck.Height = Double.NaN
456468
RectCheck.Margin = New Thickness(-1, 6, 0, 6)
457469
RectCheck.Opacity = 1
458470
RectCheck.VerticalAlignment = VerticalAlignment.Stretch
471+
If half Then
472+
RectCheck.Height = Height * 0.4
473+
RectCheck.Opacity = 0.5
474+
End If
459475
End If
460476
SetResourceReference(ForegroundProperty, If(Height < 40, "ColorBrush3", "ColorBrush2"))
461477
Else

Plain Craft Launcher 2/FormMain.xaml.vb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -987,6 +987,7 @@ Public Class FormMain
987987
VersionSetup = 1
988988
VersionMod = 2
989989
VersionModDisabled = 3
990+
VersionExport = 4
990991
End Enum
991992
''' <summary>
992993
''' 获取次级页面的名称。若并非次级页面则返回空字符串,故可以以此判断是否为次级页面。

Plain Craft Launcher 2/Modules/Base/ModBase.vb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,10 @@ Public Module ModBase
180180
''' </summary>
181181
Public Const IconButtonServer As String = "M224 160a64 64 0 0 0-64 64v576a64 64 0 0 0 64 64h576a64 64 0 0 0 64-64V224a64 64 0 0 0-64-64H224z m0 384h576v256H224v-256z m192 96v64h320v-64H416z m-128 0v64h64v-64H288zM224 224h576v256H224V224z m192 96v64h320v-64H416z m-128 0v64h64v-64H288z"
182182
''' <summary>
183+
''' 图标,向右箭头,1x
184+
''' </summary>
185+
Public Const IconButtonRight As String = "M757.792745 435.407215L419.597482 96.904967c-40.010393-40.010393-104.886579-40.010393-144.896972 0-40.010393 40.010393-40.010393 104.988908 0 144.9993L540.344959 507.855701 274.70051 773.807135c-40.010393 40.112721-40.010393 104.988908 0 144.9993 40.010393 40.010393 104.886579 40.010393 144.896972 0l338.092935-338.39992c40.112721-40.010393 40.112721-104.988908 0.102328-144.9993z"
186+
''' <summary>
183187
''' 图标,音符,1x
184188
''' </summary>
185189
Public Const IconMusic As String = "M348.293565 716.53287V254.797913c0-41.672348 28.004174-78.358261 68.919652-90.37913L815.994435 40.826435c62.775652-18.610087 125.907478 26.579478 125.907478 89.933913v539.158261c8.013913 42.25113-8.94887 89.177043-47.014956 127.109565a232.848696 232.848696 0 0 1-170.785392 65.758609c-61.885217-2.938435-111.081739-33.435826-129.113043-80.050087-18.031304-46.614261-2.137043-102.177391 41.672348-145.853218a232.848696 232.848696 0 0 1 170.785391-65.80313c21.014261 1.024 40.514783 5.164522 57.878261 12.065391V233.338435c0-12.109913-10.551652-20.034783-20.569044-20.034783a24.620522 24.620522 0 0 0-5.787826 0.934957L439.785739 338.18713a19.545043 19.545043 0 0 0-14.825739 19.144348v438.984348H423.846957c11.53113 43.987478-5.164522 94.208-45.412174 134.322087a232.848696 232.848696 0 0 1-170.785392 65.758609c-61.885217-2.938435-111.081739-33.435826-129.113043-80.050087-18.031304-46.614261-2.137043-102.177391 41.672348-145.853218a232.848696 232.848696 0 0 1 170.785391-65.80313c20.791652 1.024 40.069565 5.075478 57.299478 11.842783z"

Plain Craft Launcher 2/Modules/Base/ModValidate.vb

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ Public Class ValidateFileName
262262
Public Property IgnoreCase As Boolean = True
263263
Public Property ParentFolder As String = Nothing
264264
Public Property RequireParentFolderExists = True
265+
Public Property AllowNull As Boolean = False
265266
Public Sub New()
266267
End Sub
267268
Public Sub New(Name As String, Optional UseMinecraftCharCheck As Boolean = True, Optional IgnoreCase As Boolean = True)
@@ -271,14 +272,16 @@ Public Class ValidateFileName
271272
End Sub
272273
Public Overrides Function Validate(Str As String) As String
273274
Try
274-
'检查是否为空
275-
Dim LengthCheck As String = New ValidateNullOrWhiteSpace().Validate(Str)
276-
If Not LengthCheck = "" Then Return LengthCheck
275+
If Not AllowNull Then
276+
'检查是否为空
277+
Dim NullCheck As String = New ValidateNullOrWhiteSpace().Validate(Str)
278+
If Not NullCheck = "" Then Return NullCheck
279+
End If
277280
'检查空格
278281
If Str.StartsWithF(" ") Then Return "文件名不能以空格开头!"
279282
If Str.EndsWithF(" ") Then Return "文件名不能以空格结尾!"
280283
'检查长度
281-
LengthCheck = New ValidateLength(1, 253).Validate(Str & If(ParentFolder, ""))
284+
Dim LengthCheck = New ValidateLength(If(AllowNull, 0, 1), 253).Validate(Str & If(ParentFolder, ""))
282285
If Not LengthCheck = "" Then Return LengthCheck
283286
'检查尾部小数点
284287
If Str.EndsWithF(".") Then Return "文件名不能以小数点结尾!"
@@ -315,6 +318,7 @@ End Class
315318
Public Class ValidateFolderPath
316319
Inherits Validate
317320
Public Property UseMinecraftCharCheck As Boolean = True
321+
Public Property AllowNull As Boolean = False
318322
Public Sub New()
319323
End Sub
320324
Public Sub New(UseMinecraftCharCheck As Boolean)
@@ -326,9 +330,9 @@ Public Class ValidateFolderPath
326330
If Not Str.TrimEnd("\").EndsWithF(":") Then Str = Str.TrimEnd("\")
327331
'检查是否为空
328332
Dim LengthCheck As String = New ValidateNullOrWhiteSpace().Validate(Str)
329-
If Not LengthCheck = "" Then Return LengthCheck
333+
If Not AllowNull AndAlso Not LengthCheck = "" Then Return LengthCheck
330334
'检查长度
331-
LengthCheck = New ValidateLength(1, 254).Validate(Str)
335+
LengthCheck = New ValidateLength(If(AllowNull, 0, 1), 254).Validate(Str)
332336
If Not LengthCheck = "" Then Return LengthCheck
333337
'检查开头
334338
If Str.StartsWithF("\\Mac\") Then GoTo Fin

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1137,7 +1137,7 @@ Finished:
11371137
'刷新边栏
11381138
RunInUi(Sub() FrmVersionMod?.RefreshBars())
11391139
End Sub
1140-
Private Function GetTargetModLoaders() As List(Of CompModLoaderType)
1140+
Public Function GetTargetModLoaders() As List(Of CompModLoaderType)
11411141
Dim ModLoaders As New List(Of CompModLoaderType)
11421142
If PageVersionLeft.Version.Version.HasForge Then ModLoaders.Add(CompModLoaderType.Forge)
11431143
If PageVersionLeft.Version.Version.HasNeoForge Then ModLoaders.Add(CompModLoaderType.NeoForge)

0 commit comments

Comments
 (0)