|
@@ -34,7 +34,7 @@
|
|
|
End Sub
|
|
End Sub
|
|
|
|
|
|
|
|
Private Sub LoaderInit() Handles Me.Initialized
|
|
Private Sub LoaderInit() Handles Me.Initialized
|
|
|
- PageLoaderInit(Load, PanLoad, PanAllBack, Nothing, McModLoader, AddressOf Load_Finish, AutoRun:=False)
|
|
|
|
|
|
|
+ PageLoaderInit(Load, PanLoad, PanAllBack, Nothing, McModLoader, AddressOf LoadUIFromLoaderOutput, AutoRun:=False)
|
|
|
End Sub
|
|
End Sub
|
|
|
Private Sub Load_Click(sender As Object, e As MouseButtonEventArgs) Handles Load.Click
|
|
Private Sub Load_Click(sender As Object, e As MouseButtonEventArgs) Handles Load.Click
|
|
|
If McModLoader.State = LoadState.Failed Then
|
|
If McModLoader.State = LoadState.Failed Then
|
|
@@ -46,55 +46,36 @@
|
|
|
|
|
|
|
|
#Region "UI 化"
|
|
#Region "UI 化"
|
|
|
|
|
|
|
|
- Private PanItems As StackPanel
|
|
|
|
|
''' <summary>
|
|
''' <summary>
|
|
|
- ''' 将 Mod 列表加载为 UI。
|
|
|
|
|
|
|
+ ''' 已加载的 Mod UI 缓存,不确保按显示顺序排列。Key 为 Mod 的 RawFileName。
|
|
|
''' </summary>
|
|
''' </summary>
|
|
|
- Private Sub Load_Finish(Loader As LoaderTask(Of String, List(Of McMod)))
|
|
|
|
|
- Dim List As List(Of McMod) = Loader.Output
|
|
|
|
|
|
|
+ Public ModItems As New Dictionary(Of String, MyLocalModItem)
|
|
|
|
|
+ ''' <summary>
|
|
|
|
|
+ ''' 将加载器结果的 Mod 列表加载为 UI。
|
|
|
|
|
+ ''' </summary>
|
|
|
|
|
+ Private Sub LoadUIFromLoaderOutput()
|
|
|
|
|
+ Dim Mods As List(Of McMod) = McModLoader.Output
|
|
|
Try
|
|
Try
|
|
|
- PanList.Children.Clear()
|
|
|
|
|
-
|
|
|
|
|
'判断应该显示哪一个页面
|
|
'判断应该显示哪一个页面
|
|
|
- If List.Count = 0 Then
|
|
|
|
|
|
|
+ If Mods.Any() Then
|
|
|
|
|
+ PanBack.Visibility = Visibility.Visible
|
|
|
|
|
+ PanEmpty.Visibility = Visibility.Collapsed
|
|
|
|
|
+ Else
|
|
|
PanEmpty.Visibility = Visibility.Visible
|
|
PanEmpty.Visibility = Visibility.Visible
|
|
|
PanBack.Visibility = Visibility.Collapsed
|
|
PanBack.Visibility = Visibility.Collapsed
|
|
|
Exit Sub
|
|
Exit Sub
|
|
|
- Else
|
|
|
|
|
- PanBack.Visibility = Visibility.Visible
|
|
|
|
|
- PanEmpty.Visibility = Visibility.Collapsed
|
|
|
|
|
End If
|
|
End If
|
|
|
-
|
|
|
|
|
SearchBox.Text = ""
|
|
SearchBox.Text = ""
|
|
|
- '建立 StackPanel
|
|
|
|
|
- PanItems = New StackPanel With {.Margin = New Thickness(20, 38, 18, If(List.Count > 0, 20, 0)), .VerticalAlignment = VerticalAlignment.Top, .RenderTransform = New TranslateTransform(0, 0)}
|
|
|
|
|
- For Each ModEntity As McMod In List
|
|
|
|
|
- PanItems.Children.Add(McModListItem(ModEntity))
|
|
|
|
|
|
|
+ '输出结果
|
|
|
|
|
+ ModItems.Clear()
|
|
|
|
|
+ For Each ModEntity As McMod In Mods
|
|
|
|
|
+ ModItems(ModEntity.RawFileName) = McModListItem(ModEntity)
|
|
|
Next
|
|
Next
|
|
|
- '建立 MyCard
|
|
|
|
|
- Dim NewCard As New MyCard With {.Title = McModGetTitle(List), .Margin = New Thickness(0, 0, 0, 15)}
|
|
|
|
|
- NewCard.Children.Add(PanItems)
|
|
|
|
|
- PanList.Children.Add(NewCard)
|
|
|
|
|
-
|
|
|
|
|
|
|
+ RefreshResult(Mods)
|
|
|
Catch ex As Exception
|
|
Catch ex As Exception
|
|
|
Log(ex, "加载 Mod 列表 UI 失败", LogLevel.Feedback)
|
|
Log(ex, "加载 Mod 列表 UI 失败", LogLevel.Feedback)
|
|
|
End Try
|
|
End Try
|
|
|
End Sub
|
|
End Sub
|
|
|
- ''' <summary>
|
|
|
|
|
- ''' 获取 Card 的标题。
|
|
|
|
|
- ''' </summary>
|
|
|
|
|
- Private Function McModGetTitle(List As List(Of McMod)) As String
|
|
|
|
|
- Dim Counter = {0, 0, 0}
|
|
|
|
|
- For Each ModEntity As McMod In List
|
|
|
|
|
- Counter(ModEntity.State) += 1
|
|
|
|
|
- Next
|
|
|
|
|
- If List.Count = 0 Then Return "未找到任何 Mod"
|
|
|
|
|
- Dim TypeList As New List(Of String)
|
|
|
|
|
- If Counter(McMod.McModState.Fine) > 0 Then TypeList.Add("启用 " & Counter(McMod.McModState.Fine))
|
|
|
|
|
- If Counter(McMod.McModState.Disabled) > 0 Then TypeList.Add("禁用 " & Counter(McMod.McModState.Disabled))
|
|
|
|
|
- If Counter(McMod.McModState.Unavaliable) > 0 Then TypeList.Add("错误 " & Counter(McMod.McModState.Unavaliable))
|
|
|
|
|
- Return "Mod 列表(" & Join(TypeList, ",") & ")"
|
|
|
|
|
- End Function
|
|
|
|
|
Private Function McModListItem(Entry As McMod) As MyLocalModItem
|
|
Private Function McModListItem(Entry As McMod) As MyLocalModItem
|
|
|
AniControlEnabled += 1
|
|
AniControlEnabled += 1
|
|
|
Dim NewItem As New MyLocalModItem With {.SnapsToDevicePixels = True, .Entry = Entry,
|
|
Dim NewItem As New MyLocalModItem With {.SnapsToDevicePixels = True, .Entry = Entry,
|
|
@@ -109,26 +90,26 @@
|
|
|
AddHandler sender.Changed, AddressOf CheckChanged
|
|
AddHandler sender.Changed, AddressOf CheckChanged
|
|
|
AddHandler sender.Click, Sub(ss As MyLocalModItem, ee As EventArgs) ss.Checked = Not ss.Checked
|
|
AddHandler sender.Click, Sub(ss As MyLocalModItem, ee As EventArgs) ss.Checked = Not ss.Checked
|
|
|
'图标按钮
|
|
'图标按钮
|
|
|
- Dim BtnOpen As New MyIconButton With {.LogoScale = 1.15, .Logo = Logo.IconButtonOpen, .Tag = sender}
|
|
|
|
|
|
|
+ Dim BtnOpen As New MyIconButton With {.LogoScale = 1.05, .Logo = Logo.IconButtonOpen, .Tag = sender}
|
|
|
BtnOpen.ToolTip = "打开文件位置"
|
|
BtnOpen.ToolTip = "打开文件位置"
|
|
|
ToolTipService.SetPlacement(BtnOpen, Primitives.PlacementMode.Center)
|
|
ToolTipService.SetPlacement(BtnOpen, Primitives.PlacementMode.Center)
|
|
|
ToolTipService.SetVerticalOffset(BtnOpen, 30)
|
|
ToolTipService.SetVerticalOffset(BtnOpen, 30)
|
|
|
ToolTipService.SetHorizontalOffset(BtnOpen, 2)
|
|
ToolTipService.SetHorizontalOffset(BtnOpen, 2)
|
|
|
AddHandler BtnOpen.Click, AddressOf Open_Click
|
|
AddHandler BtnOpen.Click, AddressOf Open_Click
|
|
|
- Dim BtnCont As New MyIconButton With {.LogoScale = 1.05, .Logo = Logo.IconButtonInfo, .Tag = sender}
|
|
|
|
|
|
|
+ Dim BtnCont As New MyIconButton With {.LogoScale = 1, .Logo = Logo.IconButtonInfo, .Tag = sender}
|
|
|
BtnCont.ToolTip = "详情"
|
|
BtnCont.ToolTip = "详情"
|
|
|
ToolTipService.SetPlacement(BtnCont, Primitives.PlacementMode.Center)
|
|
ToolTipService.SetPlacement(BtnCont, Primitives.PlacementMode.Center)
|
|
|
ToolTipService.SetVerticalOffset(BtnCont, 30)
|
|
ToolTipService.SetVerticalOffset(BtnCont, 30)
|
|
|
ToolTipService.SetHorizontalOffset(BtnCont, 2)
|
|
ToolTipService.SetHorizontalOffset(BtnCont, 2)
|
|
|
AddHandler BtnCont.Click, AddressOf Info_Click
|
|
AddHandler BtnCont.Click, AddressOf Info_Click
|
|
|
AddHandler sender.MouseRightButtonDown, AddressOf Info_Click
|
|
AddHandler sender.MouseRightButtonDown, AddressOf Info_Click
|
|
|
- Dim BtnDelete As New MyIconButton With {.LogoScale = 1.1, .Logo = Logo.IconButtonDelete, .Tag = sender}
|
|
|
|
|
|
|
+ Dim BtnDelete As New MyIconButton With {.LogoScale = 1, .Logo = Logo.IconButtonDelete, .Tag = sender}
|
|
|
BtnDelete.ToolTip = "删除"
|
|
BtnDelete.ToolTip = "删除"
|
|
|
ToolTipService.SetPlacement(BtnDelete, Primitives.PlacementMode.Center)
|
|
ToolTipService.SetPlacement(BtnDelete, Primitives.PlacementMode.Center)
|
|
|
ToolTipService.SetVerticalOffset(BtnDelete, 30)
|
|
ToolTipService.SetVerticalOffset(BtnDelete, 30)
|
|
|
ToolTipService.SetHorizontalOffset(BtnDelete, 2)
|
|
ToolTipService.SetHorizontalOffset(BtnDelete, 2)
|
|
|
AddHandler BtnDelete.Click, AddressOf Delete_Click
|
|
AddHandler BtnDelete.Click, AddressOf Delete_Click
|
|
|
- Dim BtnED As New MyIconButton With {.LogoScale = 1.1, .Logo = If(sender.Entry.State = McMod.McModState.Fine,
|
|
|
|
|
|
|
+ Dim BtnED As New MyIconButton With {.LogoScale = 1, .Logo = If(sender.Entry.State = McMod.McModState.Fine,
|
|
|
"M508 990.4c-261.6 0-474.4-212-474.4-474.4S246.4 41.6 508 41.6s474.4 212 474.4 474.4S769.6 990.4 508 990.4zM508 136.8c-209.6 0-379.2 169.6-379.2 379.2 0 209.6 169.6 379.2 379.2 379.2s379.2-169.6 379.2-379.2C887.2 306.4 717.6 136.8 508 136.8zM697.6 563.2 318.4 563.2c-26.4 0-47.2-21.6-47.2-47.2 0-26.4 21.6-47.2 47.2-47.2l379.2 0c26.4 0 47.2 21.6 47.2 47.2C744.8 542.4 724 563.2 697.6 563.2z",
|
|
"M508 990.4c-261.6 0-474.4-212-474.4-474.4S246.4 41.6 508 41.6s474.4 212 474.4 474.4S769.6 990.4 508 990.4zM508 136.8c-209.6 0-379.2 169.6-379.2 379.2 0 209.6 169.6 379.2 379.2 379.2s379.2-169.6 379.2-379.2C887.2 306.4 717.6 136.8 508 136.8zM697.6 563.2 318.4 563.2c-26.4 0-47.2-21.6-47.2-47.2 0-26.4 21.6-47.2 47.2-47.2l379.2 0c26.4 0 47.2 21.6 47.2 47.2C744.8 542.4 724 563.2 697.6 563.2z",
|
|
|
"M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m0 921.6a409.6 409.6 0 1 1 409.6-409.6 409.6 409.6 0 0 1-409.6 409.6z M716.8 339.968l-256 253.44L328.192 460.8A51.2 51.2 0 0 0 256 532.992l168.448 168.96a51.2 51.2 0 0 0 72.704 0l289.28-289.792A51.2 51.2 0 0 0 716.8 339.968z"),
|
|
"M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m0 921.6a409.6 409.6 0 1 1 409.6-409.6 409.6 409.6 0 0 1-409.6 409.6z M716.8 339.968l-256 253.44L328.192 460.8A51.2 51.2 0 0 0 256 532.992l168.448 168.96a51.2 51.2 0 0 0 72.704 0l289.28-289.792A51.2 51.2 0 0 0 716.8 339.968z"),
|
|
|
.Tag = sender}
|
|
.Tag = sender}
|
|
@@ -144,6 +125,39 @@
|
|
|
End If
|
|
End If
|
|
|
End Sub
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
+ ''' <summary>
|
|
|
|
|
+ ''' 刷新结果显示。
|
|
|
|
|
+ ''' </summary>
|
|
|
|
|
+ Private Sub RefreshResult(Mods As List(Of McMod))
|
|
|
|
|
+ PanList.Children.Clear()
|
|
|
|
|
+ For Each TargetMod In Mods
|
|
|
|
|
+ PanList.Children.Add(ModItems(TargetMod.RawFileName))
|
|
|
|
|
+ Next
|
|
|
|
|
+ RefreshTitle()
|
|
|
|
|
+ End Sub
|
|
|
|
|
+ ''' <summary>
|
|
|
|
|
+ ''' 刷新卡片标题。
|
|
|
|
|
+ ''' </summary>
|
|
|
|
|
+ Private Sub RefreshTitle()
|
|
|
|
|
+ Dim Mods = PanList.Children.Cast(Of MyLocalModItem).Select(Function(i) i.Entry).ToList
|
|
|
|
|
+ Dim Counter = {0, 0, 0}
|
|
|
|
|
+ For Each ModEntity As McMod In Mods
|
|
|
|
|
+ Counter(ModEntity.State) += 1
|
|
|
|
|
+ Next
|
|
|
|
|
+ Dim TypeList As New List(Of String)
|
|
|
|
|
+ If Counter(McMod.McModState.Disabled) > 0 Then TypeList.Add("禁用 " & Counter(McMod.McModState.Disabled))
|
|
|
|
|
+ If Counter(McMod.McModState.Unavaliable) > 0 Then TypeList.Add("错误 " & Counter(McMod.McModState.Unavaliable))
|
|
|
|
|
+ If Counter(McMod.McModState.Fine) > 0 Then TypeList.Insert(0, If(TypeList.Any, "启用 ", "") & Counter(McMod.McModState.Fine))
|
|
|
|
|
+ If Not IsSearching Then
|
|
|
|
|
+ PanListBack.Title = "Mod 列表 (" & Join(TypeList, ",") & ")"
|
|
|
|
|
+ ElseIf TypeList.Any() Then
|
|
|
|
|
+ PanListBack.Title = "搜索结果 (" & Join(TypeList, ",") & ")"
|
|
|
|
|
+ Else
|
|
|
|
|
+ PanListBack.Title = "无搜索结果"
|
|
|
|
|
+ End If
|
|
|
|
|
+ PanList.Visibility = If(Mods.Any(), Visibility.Visible, Visibility.Collapsed)
|
|
|
|
|
+ End Sub
|
|
|
|
|
+
|
|
|
#End Region
|
|
#End Region
|
|
|
|
|
|
|
|
#Region "管理"
|
|
#Region "管理"
|
|
@@ -182,7 +196,7 @@
|
|
|
''' 全选。
|
|
''' 全选。
|
|
|
''' </summary>
|
|
''' </summary>
|
|
|
Private Sub BtnManageSelectAll_Click(sender As Object, e As MouseButtonEventArgs) Handles BtnManageSelectAll.Click
|
|
Private Sub BtnManageSelectAll_Click(sender As Object, e As MouseButtonEventArgs) Handles BtnManageSelectAll.Click
|
|
|
- If SelectedMods.Count < If(IsSearching, PanSearchList.Children.Count, McModLoader.Output.Count) Then
|
|
|
|
|
|
|
+ If SelectedMods.Count < PanList.Children.Count Then
|
|
|
ChangeAllSelected(True)
|
|
ChangeAllSelected(True)
|
|
|
Else
|
|
Else
|
|
|
ChangeAllSelected(False)
|
|
ChangeAllSelected(False)
|
|
@@ -289,28 +303,10 @@
|
|
|
Private Sub ChangeAllSelected(Value As Boolean)
|
|
Private Sub ChangeAllSelected(Value As Boolean)
|
|
|
AniControlEnabled += 1
|
|
AniControlEnabled += 1
|
|
|
SelectedMods.Clear()
|
|
SelectedMods.Clear()
|
|
|
- If IsSearching Then
|
|
|
|
|
- '搜索中
|
|
|
|
|
- For Each Item As MyLocalModItem In PanSearchList.Children
|
|
|
|
|
- Item.Checked = Value
|
|
|
|
|
- If Value Then SelectedMods.Add(Item.Entry.RawFileName)
|
|
|
|
|
- Next
|
|
|
|
|
- If Not Value Then '只取消选择
|
|
|
|
|
- If PanItems IsNot Nothing Then
|
|
|
|
|
- For Each Item As MyLocalModItem In PanItems.Children
|
|
|
|
|
- Item.Checked = Value
|
|
|
|
|
- Next
|
|
|
|
|
- End If
|
|
|
|
|
- End If
|
|
|
|
|
- Else
|
|
|
|
|
- '非搜索中
|
|
|
|
|
- If PanItems IsNot Nothing Then
|
|
|
|
|
- For Each Item As MyLocalModItem In PanItems.Children
|
|
|
|
|
- Item.Checked = Value
|
|
|
|
|
- If Value Then SelectedMods.Add(Item.Entry.RawFileName)
|
|
|
|
|
- Next
|
|
|
|
|
- End If
|
|
|
|
|
- End If
|
|
|
|
|
|
|
+ For Each Item As MyLocalModItem In PanList.Children
|
|
|
|
|
+ Item.Checked = Value
|
|
|
|
|
+ If Value Then SelectedMods.Add(Item.Entry.RawFileName)
|
|
|
|
|
+ Next
|
|
|
AniControlEnabled -= 1
|
|
AniControlEnabled -= 1
|
|
|
'更新下边栏 UI
|
|
'更新下边栏 UI
|
|
|
RefreshBottomBar()
|
|
RefreshBottomBar()
|
|
@@ -331,13 +327,13 @@
|
|
|
|
|
|
|
|
'启用 / 禁用
|
|
'启用 / 禁用
|
|
|
Private Sub BtnSelectED_Click(sender As MyIconTextButton, e As RouteEventArgs) Handles BtnSelectEnable.Click, BtnSelectDisable.Click
|
|
Private Sub BtnSelectED_Click(sender As MyIconTextButton, e As RouteEventArgs) Handles BtnSelectEnable.Click, BtnSelectDisable.Click
|
|
|
- EDMods(McModLoader.Output.Where(Function(m) SelectedMods.Contains(m.RawFileName)).ToList(),
|
|
|
|
|
|
|
+ EDMods(McModLoader.Output.Where(Function(m) SelectedMods.Contains(m.RawFileName)),
|
|
|
Not sender.Equals(BtnSelectDisable))
|
|
Not sender.Equals(BtnSelectDisable))
|
|
|
ChangeAllSelected(False)
|
|
ChangeAllSelected(False)
|
|
|
End Sub
|
|
End Sub
|
|
|
- Private Sub EDMods(ModList As List(Of McMod), IsEnable As Boolean)
|
|
|
|
|
|
|
+ Private Sub EDMods(ModList As IEnumerable(Of McMod), IsEnable As Boolean)
|
|
|
Dim IsSuccessful As Boolean = True
|
|
Dim IsSuccessful As Boolean = True
|
|
|
- For Each ModEntity In ModList
|
|
|
|
|
|
|
+ For Each ModEntity In ModList.ToList
|
|
|
Dim NewPath As String = Nothing
|
|
Dim NewPath As String = Nothing
|
|
|
If ModEntity.State = McMod.McModState.Fine AndAlso Not IsEnable Then
|
|
If ModEntity.State = McMod.McModState.Fine AndAlso Not IsEnable Then
|
|
|
'禁用
|
|
'禁用
|
|
@@ -361,24 +357,21 @@
|
|
|
Log(ex, $"重命名 Mod 失败({If(ModEntity.Path, "null")})")
|
|
Log(ex, $"重命名 Mod 失败({If(ModEntity.Path, "null")})")
|
|
|
IsSuccessful = False
|
|
IsSuccessful = False
|
|
|
End Try
|
|
End Try
|
|
|
- '更改 Loader 和 UI 中的列表
|
|
|
|
|
|
|
+ '更改 Loader 中的列表
|
|
|
Dim NewModEntity As New McMod(NewPath)
|
|
Dim NewModEntity As New McMod(NewPath)
|
|
|
NewModEntity.Comp = ModEntity.Comp
|
|
NewModEntity.Comp = ModEntity.Comp
|
|
|
Dim IndexOfLoader As Integer = McModLoader.Output.IndexOf(ModEntity)
|
|
Dim IndexOfLoader As Integer = McModLoader.Output.IndexOf(ModEntity)
|
|
|
McModLoader.Output.RemoveAt(IndexOfLoader)
|
|
McModLoader.Output.RemoveAt(IndexOfLoader)
|
|
|
McModLoader.Output.Insert(IndexOfLoader, NewModEntity)
|
|
McModLoader.Output.Insert(IndexOfLoader, NewModEntity)
|
|
|
- Dim List = If(IsSearching, PanSearchList, PanItems).Children
|
|
|
|
|
- Dim IndexOfUi As Integer = List.IndexOf(List.OfType(Of MyLocalModItem).FirstOrDefault(Function(i) i.Entry Is ModEntity))
|
|
|
|
|
|
|
+ '更改 UI 中的列表
|
|
|
|
|
+ Dim NewItem As MyLocalModItem = McModListItem(NewModEntity)
|
|
|
|
|
+ ModItems(ModEntity.RawFileName) = NewItem
|
|
|
|
|
+ Dim IndexOfUi As Integer = PanList.Children.IndexOf(PanList.Children.OfType(Of MyLocalModItem).FirstOrDefault(Function(i) i.Entry Is ModEntity))
|
|
|
If IndexOfUi = -1 Then Continue For '因为未知原因 Mod 的状态已经切换完了
|
|
If IndexOfUi = -1 Then Continue For '因为未知原因 Mod 的状态已经切换完了
|
|
|
- List.RemoveAt(IndexOfUi)
|
|
|
|
|
- List.Insert(IndexOfUi, McModListItem(NewModEntity))
|
|
|
|
|
|
|
+ PanList.Children.RemoveAt(IndexOfUi)
|
|
|
|
|
+ PanList.Children.Insert(IndexOfUi, NewItem)
|
|
|
Next
|
|
Next
|
|
|
- If Not IsSearching Then
|
|
|
|
|
- '改变禁用数量的显示
|
|
|
|
|
- CType(PanItems.Parent, MyCard).Title = McModGetTitle(McModLoader.Output)
|
|
|
|
|
- '更新加载器状态
|
|
|
|
|
- LoaderFolderRun(McModLoader, PageVersionLeft.Version.PathIndie & "mods\", LoaderFolderRunType.UpdateOnly)
|
|
|
|
|
- End If
|
|
|
|
|
|
|
+ RefreshTitle() '改变数量显示
|
|
|
If Not IsSuccessful Then
|
|
If Not IsSuccessful Then
|
|
|
Hint("由于文件被占用,Mod 的状态切换失败,请尝试关闭正在运行的游戏后再试!", HintType.Critical)
|
|
Hint("由于文件被占用,Mod 的状态切换失败,请尝试关闭正在运行的游戏后再试!", HintType.Critical)
|
|
|
RefreshList(True)
|
|
RefreshList(True)
|
|
@@ -416,21 +409,16 @@
|
|
|
SelectedMods.Remove(ModEntity.RawFileName)
|
|
SelectedMods.Remove(ModEntity.RawFileName)
|
|
|
'更改 Loader 和 UI 中的列表
|
|
'更改 Loader 和 UI 中的列表
|
|
|
McModLoader.Output.Remove(ModEntity)
|
|
McModLoader.Output.Remove(ModEntity)
|
|
|
- Dim Parent As StackPanel = If(IsSearching, PanSearchList, PanItems)
|
|
|
|
|
- Dim IndexOfUi As Integer = Parent.Children.IndexOf(Parent.Children.OfType(Of MyLocalModItem).First(Function(i) i.Entry Is ModEntity))
|
|
|
|
|
- Parent.Children.RemoveAt(IndexOfUi)
|
|
|
|
|
|
|
+ ModItems.Remove(ModEntity.RawFileName)
|
|
|
|
|
+ Dim IndexOfUi As Integer = PanList.Children.IndexOf(PanList.Children.OfType(Of MyLocalModItem).First(Function(i) i.Entry Is ModEntity))
|
|
|
|
|
+ PanList.Children.RemoveAt(IndexOfUi)
|
|
|
Next
|
|
Next
|
|
|
- If Not IsSearching Then
|
|
|
|
|
- '改变禁用数量的显示
|
|
|
|
|
- CType(PanItems.Parent, MyCard).Title = McModGetTitle(McModLoader.Output)
|
|
|
|
|
- '更新加载器状态
|
|
|
|
|
- LoaderFolderRun(McModLoader, PageVersionLeft.Version.PathIndie & "mods\", LoaderFolderRunType.UpdateOnly)
|
|
|
|
|
- End If
|
|
|
|
|
|
|
+ RefreshTitle()
|
|
|
If Not IsSuccessful Then
|
|
If Not IsSuccessful Then
|
|
|
Hint("由于文件被占用,Mod 删除失败,请尝试关闭正在运行的游戏后再试!", HintType.Critical)
|
|
Hint("由于文件被占用,Mod 删除失败,请尝试关闭正在运行的游戏后再试!", HintType.Critical)
|
|
|
RefreshList(True)
|
|
RefreshList(True)
|
|
|
- ElseIf If(IsSearching, PanSearchList, PanItems).Children.Count = 0 Then
|
|
|
|
|
- RefreshList(True)
|
|
|
|
|
|
|
+ ElseIf PanList.Children.Count = 0 Then
|
|
|
|
|
+ RefreshList(True) '删除了全部文件
|
|
|
Else
|
|
Else
|
|
|
RefreshBottomBar()
|
|
RefreshBottomBar()
|
|
|
End If
|
|
End If
|
|
@@ -553,7 +541,7 @@
|
|
|
'启用 / 禁用
|
|
'启用 / 禁用
|
|
|
Public Sub ED_Click(sender As MyIconButton, e As EventArgs)
|
|
Public Sub ED_Click(sender As MyIconButton, e As EventArgs)
|
|
|
Dim ListItem As MyLocalModItem = sender.Tag
|
|
Dim ListItem As MyLocalModItem = sender.Tag
|
|
|
- EDMods(New List(Of McMod) From {ListItem.Entry}, ListItem.Entry.State = McMod.McModState.Disabled)
|
|
|
|
|
|
|
+ EDMods({ListItem.Entry}, ListItem.Entry.State = McMod.McModState.Disabled)
|
|
|
End Sub
|
|
End Sub
|
|
|
|
|
|
|
|
#End Region
|
|
#End Region
|
|
@@ -588,43 +576,12 @@
|
|
|
End If
|
|
End If
|
|
|
QueryList.Add(New SearchEntry(Of McMod) With {.Item = Entry, .SearchSource = SearchSource})
|
|
QueryList.Add(New SearchEntry(Of McMod) With {.Item = Entry, .SearchSource = SearchSource})
|
|
|
Next
|
|
Next
|
|
|
- '进行搜索,构造列表
|
|
|
|
|
|
|
+ '进行搜索
|
|
|
Dim SearchResult = Search(QueryList, SearchBox.Text, MaxBlurCount:=6, MinBlurSimilarity:=0.35)
|
|
Dim SearchResult = Search(QueryList, SearchBox.Text, MaxBlurCount:=6, MinBlurSimilarity:=0.35)
|
|
|
- PanSearchList.Children.Clear()
|
|
|
|
|
- If SearchResult.Count = 0 Then
|
|
|
|
|
- PanSearch.Title = "无搜索结果"
|
|
|
|
|
- PanSearchList.Visibility = Visibility.Collapsed
|
|
|
|
|
- Else
|
|
|
|
|
- PanSearch.Title = "搜索结果"
|
|
|
|
|
- For Each Result In SearchResult
|
|
|
|
|
- Dim Item = McModListItem(Result.Item)
|
|
|
|
|
- If ModeDebug Then Item.Description = If(Result.AbsoluteRight, "完全匹配,", "") & "相似度:" & Math.Round(Result.Similarity, 3) & "," & Item.Description
|
|
|
|
|
- PanSearchList.Children.Add(Item)
|
|
|
|
|
- Next
|
|
|
|
|
- PanSearchList.Visibility = Visibility.Visible
|
|
|
|
|
- End If
|
|
|
|
|
- '显示
|
|
|
|
|
- AniStart({
|
|
|
|
|
- AaOpacity(PanList, -PanList.Opacity, 100),
|
|
|
|
|
- AaCode(Sub()
|
|
|
|
|
- PanList.Visibility = Visibility.Collapsed
|
|
|
|
|
- PanSearch.Visibility = Visibility.Visible
|
|
|
|
|
- PanSearch.TriggerForceResize()
|
|
|
|
|
- End Sub,, True),
|
|
|
|
|
- AaOpacity(PanSearch, 1 - PanSearch.Opacity, 200, 60)
|
|
|
|
|
- }, "FrmVersionMod Search Switch", True)
|
|
|
|
|
|
|
+ RefreshResult(SearchResult.Select(Function(r) r.Item).ToList)
|
|
|
Else
|
|
Else
|
|
|
- '隐藏
|
|
|
|
|
- LoaderFolderRun(McModLoader, PageVersionLeft.Version.PathIndie & "mods\", LoaderFolderRunType.RunOnUpdated)
|
|
|
|
|
- AniStart({
|
|
|
|
|
- AaOpacity(PanSearch, -PanSearch.Opacity, 100),
|
|
|
|
|
- AaCode(Sub()
|
|
|
|
|
- PanSearch.Height = 0
|
|
|
|
|
- PanSearch.Visibility = Visibility.Collapsed
|
|
|
|
|
- PanList.Visibility = Visibility.Visible
|
|
|
|
|
- End Sub,, True),
|
|
|
|
|
- AaOpacity(PanList, 1 - PanList.Opacity, 150, 30)
|
|
|
|
|
- }, "FrmVersionMod Search Switch", True)
|
|
|
|
|
|
|
+ '退出搜索状态
|
|
|
|
|
+ RefreshResult(McModLoader.Output)
|
|
|
End If
|
|
End If
|
|
|
End Sub
|
|
End Sub
|
|
|
|
|
|