PageDownloadClient.xaml.vb 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. Public Class PageDownloadClient
  2. Private Sub LoaderInit() Handles Me.Initialized
  3. PageLoaderInit(Load, PanLoad, PanBack, Nothing, DlClientListLoader, AddressOf Load_OnFinish)
  4. End Sub
  5. Private Sub Init() Handles Me.Loaded
  6. PanBack.ScrollToHome()
  7. End Sub
  8. Private Sub Load_OnFinish()
  9. '结果数据化
  10. Try
  11. '归类
  12. Dim Dict As New Dictionary(Of String, List(Of JObject)) From {
  13. {"正式版", New List(Of JObject)}, {"预览版", New List(Of JObject)}, {"远古版", New List(Of JObject)}, {"愚人节版", New List(Of JObject)}
  14. }
  15. Dim Versions As JArray = DlClientListLoader.Output.Value("versions")
  16. For Each Version As JObject In Versions
  17. '确定分类
  18. Dim Type As String = Version("type")
  19. Select Case Type
  20. Case "release"
  21. Type = "正式版"
  22. Case "snapshot"
  23. Type = "预览版"
  24. 'Mojang 误分类
  25. If Version("id").ToString.StartsWith("1.") AndAlso
  26. Not Version("id").ToString.ToLower.Contains("combat") AndAlso
  27. Not Version("id").ToString.ToLower.Contains("rc") AndAlso
  28. Not Version("id").ToString.ToLower.Contains("experimental") AndAlso
  29. Not Version("id").ToString.ToLower.Contains("pre") Then
  30. Type = "正式版"
  31. Version("type") = "release"
  32. End If
  33. '愚人节版本
  34. Select Case Version("id").ToString.ToLower
  35. Case "20w14infinite", "20w14∞"
  36. Type = "愚人节版"
  37. Version("id") = "20w14∞"
  38. Version("type") = "special"
  39. Version.Add("lore", GetMcFoolName(Version("id")))
  40. Case "3d shareware v1.34", "1.rv-pre1", "15w14a", "2.0", "22w13oneblockatatime", "23w13a_or_b", "24w14potato"
  41. Type = "愚人节版"
  42. Version("type") = "special"
  43. Version.Add("lore", GetMcFoolName(Version("id")))
  44. End Select
  45. '所有4月1日发布的版本可视为愚人节版,但不改动版本描述
  46. Dim swedenTime As Date = Version("releaseTime").Value(Of Date).ToUniversalTime().AddHours(2)
  47. Select Case swedenTime.ToString("MM'/'dd")
  48. Case "04/01"
  49. If Not Version("type") = "special" Then
  50. Type = "愚人节版"
  51. Version("type") = "special"
  52. End If
  53. End Select
  54. Case "special"
  55. '已被处理的愚人节版
  56. Type = "愚人节版"
  57. Case Else
  58. Type = "远古版"
  59. End Select
  60. '加入辞典
  61. Dict(Type).Add(Version)
  62. Next
  63. '排序
  64. For i = 0 To Dict.Keys.Count - 1
  65. Dict(Dict.Keys(i)) = Sort(Dict.Values(i),
  66. Function(a, b) a("releaseTime").Value(Of Date) > b("releaseTime").Value(Of Date))
  67. Next
  68. '清空当前
  69. PanMain.Children.Clear()
  70. '添加最新版本
  71. Dim CardInfo As New MyCard With {.Title = "最新版本", .Margin = New Thickness(0, 0, 0, 15), .SwapType = 2}
  72. Dim TopestVersions As New List(Of JObject)
  73. Dim Release As JObject = Dict("正式版")(0).DeepClone()
  74. Release("lore") = "最新正式版,发布于 " & Release("releaseTime").Value(Of Date).ToString("yyyy'/'MM'/'dd HH':'mm")
  75. TopestVersions.Add(Release)
  76. If Dict("正式版")(0)("releaseTime").Value(Of Date) < Dict("预览版")(0)("releaseTime").Value(Of Date) Then
  77. Dim Snapshot As JObject = Dict("预览版")(0).DeepClone()
  78. Snapshot("lore") = "最新预览版,发布于 " & Snapshot("releaseTime").Value(Of Date).ToString("yyyy'/'MM'/'dd HH':'mm")
  79. TopestVersions.Add(Snapshot)
  80. End If
  81. Dim PanInfo As New StackPanel With {.Margin = New Thickness(20, MyCard.SwapedHeight, 18, 0), .VerticalAlignment = VerticalAlignment.Top, .RenderTransform = New TranslateTransform(0, 0), .Tag = TopestVersions}
  82. MyCard.StackInstall(PanInfo, 2)
  83. CardInfo.Children.Add(PanInfo)
  84. PanMain.Children.Add(CardInfo)
  85. '添加其他版本
  86. For Each Pair As KeyValuePair(Of String, List(Of JObject)) In Dict
  87. If Not Pair.Value.Any() Then Continue For
  88. '增加卡片
  89. Dim NewCard As New MyCard With {.Title = Pair.Key & " (" & Pair.Value.Count & ")", .Margin = New Thickness(0, 0, 0, 15), .SwapType = 2}
  90. 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}
  91. NewCard.Children.Add(NewStack)
  92. NewCard.SwapControl = NewStack
  93. NewCard.IsSwaped = True
  94. PanMain.Children.Add(NewCard)
  95. Next
  96. Catch ex As Exception
  97. Log(ex, "可视化 MC 版本列表出错", LogLevel.Feedback)
  98. End Try
  99. End Sub
  100. Public Sub DownloadStart(sender As MyListItem, e As Object)
  101. McDownloadClient(NetPreDownloadBehaviour.HintWhileExists, sender.Title, sender.Tag("url").ToString)
  102. End Sub
  103. ''介绍栏
  104. 'Private Sub BtnWeb_Click(sender As Object, e As EventArgs) Handles BtnWeb.Click
  105. ' OpenWebsite("https://www.minecraft.net/zh-hans")
  106. 'End Sub
  107. 'Private Sub BtnInstall_Click(sender As Object, e As EventArgs) Handles BtnInstall.Click
  108. ' FrmMain.PageChange(FormMain.PageType.Download, FormMain.PageSubType.DownloadInstall)
  109. 'End Sub
  110. End Class