113 lines
6.0 KiB
VB.net
113 lines
6.0 KiB
VB.net
Public Class PageDownloadClient
|
|
|
|
Private Sub LoaderInit() Handles Me.Initialized
|
|
PageLoaderInit(Load, PanLoad, PanBack, Nothing, DlClientListLoader, AddressOf Load_OnFinish)
|
|
End Sub
|
|
Private Sub Init() Handles Me.Loaded
|
|
PanBack.ScrollToHome()
|
|
End Sub
|
|
|
|
Private Sub Load_OnFinish()
|
|
'结果数据化
|
|
Try
|
|
'归类
|
|
Dim Dict As New Dictionary(Of String, List(Of JObject)) From {
|
|
{"正式版", New List(Of JObject)}, {"预览版", New List(Of JObject)}, {"远古版", New List(Of JObject)}, {"愚人节版", New List(Of JObject)}
|
|
}
|
|
Dim Versions As JArray = DlClientListLoader.Output.Value("versions")
|
|
For Each Version As JObject In Versions
|
|
'确定分类
|
|
Dim Type As String = Version("type")
|
|
Select Case Type
|
|
Case "release"
|
|
Type = "正式版"
|
|
Case "snapshot"
|
|
Type = "预览版"
|
|
'Mojang 误分类
|
|
If Version("id").ToString.StartsWith("1.") AndAlso
|
|
Not Version("id").ToString.ToLower.Contains("combat") AndAlso
|
|
Not Version("id").ToString.ToLower.Contains("rc") AndAlso
|
|
Not Version("id").ToString.ToLower.Contains("experimental") AndAlso
|
|
Not Version("id").ToString.ToLower.Contains("pre") Then
|
|
Type = "正式版"
|
|
Version("type") = "release"
|
|
End If
|
|
'愚人节版本
|
|
Select Case Version("id").ToString.ToLower
|
|
Case "20w14infinite", "20w14∞"
|
|
Type = "愚人节版"
|
|
Version("id") = "20w14∞"
|
|
Version("type") = "special"
|
|
Version.Add("lore", GetMcFoolName(Version("id")))
|
|
Case "3d shareware v1.34", "1.rv-pre1", "15w14a", "2.0", "22w13oneblockatatime", "23w13a_or_b", "24w14potato"
|
|
Type = "愚人节版"
|
|
Version("type") = "special"
|
|
Version.Add("lore", GetMcFoolName(Version("id")))
|
|
Case Else '4/1 自动视作愚人节版
|
|
Dim ReleaseDate = Version("releaseTime").Value(Of Date).ToUniversalTime().AddHours(2)
|
|
If ReleaseDate.Month = 4 AndAlso ReleaseDate.Day = 1 Then
|
|
Type = "愚人节版"
|
|
Version("type") = "special"
|
|
End If
|
|
End Select
|
|
Case "special"
|
|
'已被处理的愚人节版
|
|
Type = "愚人节版"
|
|
Case Else
|
|
Type = "远古版"
|
|
End Select
|
|
'加入辞典
|
|
Dict(Type).Add(Version)
|
|
Next
|
|
'排序
|
|
For i = 0 To Dict.Keys.Count - 1
|
|
Dict(Dict.Keys(i)) = Sort(Dict.Values(i),
|
|
Function(a, b) a("releaseTime").Value(Of Date) > b("releaseTime").Value(Of Date))
|
|
Next
|
|
'清空当前
|
|
PanMain.Children.Clear()
|
|
'添加最新版本
|
|
Dim CardInfo As New MyCard With {.Title = "最新版本", .Margin = New Thickness(0, 0, 0, 15), .SwapType = 2}
|
|
Dim TopestVersions As New List(Of JObject)
|
|
Dim Release As JObject = Dict("正式版")(0).DeepClone()
|
|
Release("lore") = "最新正式版,发布于 " & Release("releaseTime").Value(Of Date).ToString("yyyy'/'MM'/'dd HH':'mm")
|
|
TopestVersions.Add(Release)
|
|
If Dict("正式版")(0)("releaseTime").Value(Of Date) < Dict("预览版")(0)("releaseTime").Value(Of Date) Then
|
|
Dim Snapshot As JObject = Dict("预览版")(0).DeepClone()
|
|
Snapshot("lore") = "最新预览版,发布于 " & Snapshot("releaseTime").Value(Of Date).ToString("yyyy'/'MM'/'dd HH':'mm")
|
|
TopestVersions.Add(Snapshot)
|
|
End If
|
|
Dim PanInfo As New StackPanel With {.Margin = New Thickness(20, MyCard.SwapedHeight, 18, 0), .VerticalAlignment = VerticalAlignment.Top, .RenderTransform = New TranslateTransform(0, 0), .Tag = TopestVersions}
|
|
MyCard.StackInstall(PanInfo, 2)
|
|
CardInfo.Children.Add(PanInfo)
|
|
PanMain.Children.Add(CardInfo)
|
|
'添加其他版本
|
|
For Each Pair As KeyValuePair(Of String, List(Of JObject)) In Dict
|
|
If Not Pair.Value.Any() Then Continue For
|
|
'增加卡片
|
|
Dim NewCard As New MyCard With {.Title = Pair.Key & " (" & Pair.Value.Count & ")", .Margin = New Thickness(0, 0, 0, 15), .SwapType = 2}
|
|
Dim NewStack As New StackPanel With {.Margin = New Thickness(20, MyCard.SwapedHeight, 18, 0), .VerticalAlignment = VerticalAlignment.Top, .RenderTransform = New TranslateTransform(0, 0), .Tag = Pair.Value}
|
|
NewCard.Children.Add(NewStack)
|
|
NewCard.SwapControl = NewStack
|
|
NewCard.IsSwaped = True
|
|
PanMain.Children.Add(NewCard)
|
|
Next
|
|
Catch ex As Exception
|
|
Log(ex, "可视化 MC 版本列表出错", LogLevel.Feedback)
|
|
End Try
|
|
End Sub
|
|
|
|
Public Sub DownloadStart(sender As MyListItem, e As Object)
|
|
McDownloadClient(NetPreDownloadBehaviour.HintWhileExists, sender.Title, sender.Tag("url").ToString)
|
|
End Sub
|
|
|
|
''介绍栏
|
|
'Private Sub BtnWeb_Click(sender As Object, e As EventArgs) Handles BtnWeb.Click
|
|
' OpenWebsite("https://www.minecraft.net/zh-hans")
|
|
'End Sub
|
|
'Private Sub BtnInstall_Click(sender As Object, e As EventArgs) Handles BtnInstall.Click
|
|
' FrmMain.PageChange(FormMain.PageType.Download, FormMain.PageSubType.DownloadInstall)
|
|
'End Sub
|
|
|
|
End Class
|