从全角更改到半角MySkin.xaml.vb

This commit is contained in:
单莉斯
2025-03-19 20:21:59 +08:00
committed by GitHub
parent fce8781b22
commit a4284dbc50
@@ -1,39 +1,39 @@
Public Class MySkin 公共 Class MySkin
'事件 '事件
Public Event Click(sender As Object, e As MouseButtonEventArgs) 公共 Event Click(sender As Object, e As MouseButtonEventArgs)
'皮肤储存 '皮肤储存
Private _Address As String 私有 _Address As String
Public Property Address As String 公共 Property Address As String
Get Get
Return _Address Return _Address
End Get End Get
Set(value As String) Set(value As String)
_Address = value _Address = value
ToolTip = If(_Address = "", "加载中", "点击更换皮肤(右键查看更多选项)") ToolTip = If(_Address = "", "加载中", "点击更换皮肤(右键查看更多选项)")
End Set End Set
End Property End Property
Public Loader As LoaderTask(Of EqualableList(Of String), String) 公共 Loader As LoaderTask(Of EqualableList(Of String), String)
'控件动画 '控件动画
Private Sub PanSkin_MouseEnter(sender As Object, e As MouseEventArgs) Handles Me.MouseEnter 私有 Sub PanSkin_MouseEnter(sender As Object, e As MouseEventArgs) Handles Me.MouseEnter
AniStart(AaOpacity(ShadowSkin, 0.8 - ShadowSkin.Opacity, 200, 100), "Skin Shadow") AniStart(AaOpacity(ShadowSkin, 0.8 - ShadowSkin.Opacity, 200, 100), "Skin Shadow")
End Sub End Sub
Private Sub PanSkin_MouseLeave(sender As Object, e As MouseEventArgs) Handles Me.MouseLeave 私有 Sub PanSkin_MouseLeave(sender As Object, e As MouseEventArgs) Handles Me.MouseLeave
AniStart(AaOpacity(ShadowSkin, 0.2 - ShadowSkin.Opacity, 200), "Skin Shadow") AniStart(AaOpacity(ShadowSkin, 0.2 - ShadowSkin.Opacity, 200), "Skin Shadow")
IsSkinMouseDown = False IsSkinMouseDown = False
AniStart(AaScaleTransform(Me, 1 - CType(Me.RenderTransform, ScaleTransform).ScaleX, 60,, New AniEaseOutFluent), "Skin Scale") AniStart(AaScaleTransform(Me, 1 - CType(Me.RenderTransform, ScaleTransform).ScaleX, 60,, New AniEaseOutFluent), "Skin Scale")
End Sub End Sub
'点击 '点击
Private IsSkinMouseDown As Boolean = False 私有 IsSkinMouseDown As Boolean = False
Private Sub PanSkin_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs) Handles Me.MouseLeftButtonDown 私有 Sub PanSkin_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs) Handles Me.MouseLeftButtonDown
IsSkinMouseDown = True IsSkinMouseDown = True
AniStart(AaScaleTransform(Me, 0.9 - CType(Me.RenderTransform, ScaleTransform).ScaleX, 60,, New AniEaseOutFluent), "Skin Scale") AniStart(AaScaleTransform(Me, 0.9 - CType(Me.RenderTransform, ScaleTransform).ScaleX, 60,, New AniEaseOutFluent), "Skin Scale")
End Sub End Sub
Private Sub PanSkin_MouseLeftButtonUp(sender As Object, e As MouseButtonEventArgs) Handles Me.MouseLeftButtonUp 私有 Sub PanSkin_MouseLeftButtonUp(sender As Object, e As MouseButtonEventArgs) Handles Me.MouseLeftButtonUp
AniStart(AaScaleTransform(Me, 1 - CType(Me.RenderTransform, ScaleTransform).ScaleX, 60,, New AniEaseOutFluent), "Skin Scale") AniStart(AaScaleTransform(Me, 1 - CType(Me.RenderTransform, ScaleTransform).ScaleX, 60,, New AniEaseOutFluent), "Skin Scale")
If IsSkinMouseDown Then If IsSkinMouseDown Then
IsSkinMouseDown = False IsSkinMouseDown = False
RaiseEvent Click(sender, e) RaiseEvent Click(sender, e)
@@ -41,10 +41,10 @@
End Sub End Sub
'保存皮肤 '保存皮肤
Public Sub BtnSkinSave_Click() Handles BtnSkinSave.Click 公共 Sub BtnSkinSave_Click() Handles BtnSkinSave.Click
Save(Loader) Save(Loader)
End Sub End Sub
Public Shared Sub Save(Loader As LoaderTask(Of EqualableList(Of String), String)) 公共 Shared Sub Save(Loader As LoaderTask(Of EqualableList(Of String), String))
Dim Address = Loader.Output Dim Address = Loader.Output
If Not Loader.State = LoadState.Finished Then If Not Loader.State = LoadState.Finished Then
Hint("皮肤正在获取中,请稍候!", HintType.Critical) Hint("皮肤正在获取中,请稍候!", HintType.Critical)
@@ -67,14 +67,14 @@
Log(ex, "保存皮肤失败", LogLevel.Hint) Log(ex, "保存皮肤失败", LogLevel.Hint)
End Try End Try
End Sub End Sub
Private Sub BtnSkinSave_Checked(sender As MyMenuItem, e As RoutedEventArgs) Handles BtnSkinSave.Checked 私有 Sub BtnSkinSave_Checked(sender As MyMenuItem, e As RoutedEventArgs) Handles BtnSkinSave.Checked
sender.IsEnabled = Address = "" sender.IsEnabled = Address = ""
End Sub End Sub
''' <summary> ''' <summary>
''' 载入皮肤。 ''' 载入皮肤。
''' </summary> ''' </summary>
Public Sub Load() 公共 Sub Load()
Try Try
'检查文件存在 '检查文件存在
Address = Loader.Output Address = Loader.Output
@@ -98,10 +98,10 @@
End If End If
'头发层(附加层) '头发层(附加层)
If Image.Pic.Width >= 64 AndAlso Image.Pic.Height >= 32 Then If Image.Pic.Width >= 64 AndAlso Image.Pic.Height >= 32 Then
If (Image.Pic.GetPixel(1, 1).A = 0 OrElse '如果图片中有任何透明像素(避免纯色白底) If (Image.Pic.GetPixel(1, 1).A = 0 OrElse '如果图片中有任何透明像素(避免纯色白底)
Image.Pic.GetPixel(Image.Pic.Width - 1, Image.Pic.Height - 1).A = 0 OrElse Image.Pic.GetPixel(Image.Pic.Width - 1, Image.Pic.Height - 1).A = 0 OrElse
Image.Pic.GetPixel(Image.Pic.Width - 2, Image.Pic.Height / 2 - 2).A = 0) OrElse Image.Pic.GetPixel(Image.Pic.Width - 2, Image.Pic.Height / 2 - 2).A = 0) OrElse
(Image.Pic.GetPixel(1, 1) <> Image.Pic.GetPixel(Scale * 41, Scale * 9) AndAlso '或是头部颜色和透明区均不一样 (Image.Pic.GetPixel(1, 1) <> Image.Pic.GetPixel(Scale * 41, Scale * 9) AndAlso '或是头部颜色和透明区均不一样
Image.Pic.GetPixel(Image.Pic.Width - 1, Image.Pic.Height - 1) <> Image.Pic.GetPixel(Scale * 41, Scale * 9) AndAlso Image.Pic.GetPixel(Image.Pic.Width - 1, Image.Pic.Height - 1) <> Image.Pic.GetPixel(Scale * 41, Scale * 9) AndAlso
Image.Pic.GetPixel(Image.Pic.Width - 2, Image.Pic.Height / 2 - 2) <> Image.Pic.GetPixel(Scale * 41, Scale * 9)) Then Image.Pic.GetPixel(Image.Pic.Width - 2, Image.Pic.Height / 2 - 2) <> Image.Pic.GetPixel(Scale * 41, Scale * 9)) Then
ImgFore.Source = Image.Clip(Scale * 40, Scale * 8, Scale * 8, Scale * 8) ImgFore.Source = Image.Clip(Scale * 40, Scale * 8, Scale * 8, Scale * 8)
@@ -121,26 +121,26 @@
''' <summary> ''' <summary>
''' 清空皮肤。 ''' 清空皮肤。
''' </summary> ''' </summary>
Public Sub Clear() 公共 Sub Clear()
Address = "" Address = ""
ImgFore.Source = Nothing ImgFore.Source = Nothing
ImgBack.Source = Nothing ImgBack.Source = Nothing
End Sub End Sub
'刷新缓存 '刷新缓存
Public Sub RefreshClick() Handles BtnSkinRefresh.Click 公共 Sub RefreshClick() Handles BtnSkinRefresh.Click
RefreshCache(Loader) RefreshCache(Loader)
End Sub End Sub
''' <summary> ''' <summary>
''' 刷新皮肤缓存。 ''' 刷新皮肤缓存。
''' </summary> ''' </summary>
Public Shared Sub RefreshCache(Optional sender As LoaderTask(Of EqualableList(Of String), String) = Nothing) 公共 Shared Sub RefreshCache(Optional sender As LoaderTask(Of EqualableList(Of String), String) = Nothing)
Dim HasLoaderRunning As Boolean = False Dim HasLoaderRunning As Boolean = False
For Each SkinLoader In PageLaunchLeft.SkinLoaders For Each SkinLoader In PageLaunchLeft.SkinLoaders
If SkinLoader.State = LoadState.Loading Then If SkinLoader.State = LoadState.Loading Then
HasLoaderRunning = True : Exit For HasLoaderRunning = True : Exit For
End If End If
Next 下一页
If FrmLaunchLeft IsNot Nothing AndAlso HasLoaderRunning Then If FrmLaunchLeft IsNot Nothing AndAlso HasLoaderRunning Then
'由于 Abort 不是实时的,暂时不会释放文件,会导致删除报错,故只能取消执行 '由于 Abort 不是实时的,暂时不会释放文件,会导致删除报错,故只能取消执行
Hint("有正在获取中的皮肤,请稍后再试!", HintType.Info) Hint("有正在获取中的皮肤,请稍后再试!", HintType.Info)
@@ -160,7 +160,7 @@
'刷新控件 '刷新控件
For Each SkinLoader In If(sender IsNot Nothing, {sender}, {PageLaunchLeft.SkinLegacy, PageLaunchLeft.SkinMs}) For Each SkinLoader In If(sender IsNot Nothing, {sender}, {PageLaunchLeft.SkinLegacy, PageLaunchLeft.SkinMs})
SkinLoader.WaitForExit(IsForceRestart:=True) SkinLoader.WaitForExit(IsForceRestart:=True)
Next 下一页
Hint("已刷新头像!", HintType.Finish) Hint("已刷新头像!", HintType.Finish)
Catch ex As Exception Catch ex As Exception
Log(ex, "刷新皮肤缓存失败", LogLevel.Msgbox) Log(ex, "刷新皮肤缓存失败", LogLevel.Msgbox)
@@ -172,7 +172,7 @@
''' 在更换正版皮肤后,刷新正版皮肤。 ''' 在更换正版皮肤后,刷新正版皮肤。
''' </summary> ''' </summary>
''' <param name="SkinAddress">新的正版皮肤完整地址。</param> ''' <param name="SkinAddress">新的正版皮肤完整地址。</param>
Public Shared Sub ReloadCache(SkinAddress As String) 公共 Shared Sub ReloadCache(SkinAddress As String)
RunInThread( RunInThread(
Sub() Sub()
Try Try
@@ -182,7 +182,7 @@
'刷新控件 '刷新控件
For Each SkinLoader In {PageLaunchLeft.SkinMs, PageLaunchLeft.SkinLegacy} For Each SkinLoader In {PageLaunchLeft.SkinMs, PageLaunchLeft.SkinLegacy}
SkinLoader.WaitForExit(IsForceRestart:=True) SkinLoader.WaitForExit(IsForceRestart:=True)
Next 下一页
'完成提示 '完成提示
Hint("更改皮肤成功!", HintType.Finish) Hint("更改皮肤成功!", HintType.Finish)
Catch ex As Exception Catch ex As Exception
@@ -192,7 +192,7 @@
End Sub End Sub
'披风 '披风
Public Property HasCape As Boolean 公共 Property HasCape As Boolean
Get Get
Return BtnSkinCape.Visibility = Visibility.Collapsed Return BtnSkinCape.Visibility = Visibility.Collapsed
End Get End Get
@@ -204,8 +204,8 @@
End If End If
End Set End Set
End Property End Property
Private IsChanging As Boolean = False 私有 IsChanging As Boolean = False
Public Sub BtnSkinCape_Click() Handles BtnSkinCape.Click 公共 Sub BtnSkinCape_Click() Handles BtnSkinCape.Click
'检查条件,获取新披风 '检查条件,获取新披风
If IsChanging Then If IsChanging Then
Hint("正在更改披风中,请稍候!") Hint("正在更改披风中,请稍候!")
@@ -236,32 +236,32 @@ Retry:
RunInUiWait( RunInUiWait(
Sub() Sub()
Try Try
Dim CapeNames As New Dictionary(Of String, String) From { Dim CapeNames As New Dictionary(Of String, String) From {
{"Migrator", "迁移者披风"}, {"MapMaker", "Realms 地图制作者披风"}, {"Moderator", "Mojira 管理员披风"}, {"Migrator", "迁移者披风"}, {"MapMaker", "Realms 地图制作者披风"}, {"Moderator", "Mojira 管理员披风"},
{"Translator-Chinese", "Crowdin 中文翻译者披风"}, {"Translator", "Crowdin 翻译者披风"}, {"Cobalt", "Cobalt 披风"}, {"Translator-Chinese", "Crowdin 中文翻译者披风"}, {"Translator", "Crowdin 翻译者披风"}, {"Cobalt", "Cobalt 披风"},
{"Vanilla", "原版披风"}, {"Minecon2011", "Minecon 2011 参与者披风"}, {"Minecon2012", "Minecon 2012 参与者披风"}, {"Vanilla", "原版披风"}, {"Minecon2011", "Minecon 2011 参与者披风"}, {"Minecon2012", "Minecon 2012 参与者披风"},
{"Minecon2013", "Minecon 2013 参与者披风"}, {"Minecon2015", "Minecon 2015 参与者披风"}, {"Minecon2016", "Minecon 2016 参与者披风"}, {"Minecon2013", "Minecon 2013 参与者披风"}, {"Minecon2015", "Minecon 2015 参与者披风"}, {"Minecon2016", "Minecon 2016 参与者披风"},
{"Cherry Blossom", "樱花披风"}, {"15th Anniversary", "15 周年纪念披风"}, {"Purple Heart", "紫色心形披风"}, {"Cherry Blossom", "樱花披风"}, {"15th Anniversary", "15 周年纪念披风"}, {"Purple Heart", "紫色心形披风"},
{"Follower's", "追随者披风"}, {"MCC 15th Year", "MCC 15 周年披风"}, {"Minecraft Experience", "村民救援披风"}, {"Follower's", "追随者披风"}, {"MCC 15th Year", "MCC 15 周年披风"}, {"Minecraft Experience", "村民救援披风"},
{"Mojang Office", "Mojang 办公室披风"},{"Home", "家园披风"},{"Menace", "威胁披风"} {"Mojang Office","Mojang 办公室披风"},{"Home","家园披风"},{"Menace","威胁披风"}
} }
Dim SelectionControl As New List(Of IMyRadio) From {New MyRadioBox With {.Text = "无披风"}} Dim SelectionControl As New List(Of IMyRadio) From {New MyRadioBox With {.Text = "无披风"}}
For Each Cape In SkinData("capes") For Each Cape In SkinData("capes")
Dim CapeName As String = Cape("alias").ToString Dim CapeName As String = Cape("alias").ToString
If CapeNames.ContainsKey(CapeName) Then CapeName = CapeNames(CapeName) If CapeNames.ContainsKey(CapeName) Then CapeName = CapeNames(CapeName)
SelectionControl.Add(New MyRadioBox With {.Text = CapeName}) SelectionControl.Add(New MyRadioBox With {.Text = CapeName})
Next 下一页
SelId = MyMsgBoxSelect(SelectionControl, "选择披风", "确定", "取消") SelId = MyMsgBoxSelect(SelectionControl, "选择披风", "确定", "取消")
Catch ex As Exception Catch ex As Exception
Log(ex, "获取玩家皮肤列表失败", LogLevel.Feedback) Log(ex, "获取玩家皮肤列表失败", LogLevel.Feedback)
End Try End Try
End Sub) End Sub)
If SelId Is Nothing Then Exit Sub If SelId Is Nothing Then Exit Sub
'发送请求 '发送请求
Dim Result As String = NetRequestRetry("https://api.minecraftservices.com/minecraft/profile/capes/active", Dim Result As String = NetRequestRetry("https://api.minecraftservices.com/minecraft/profile/capes/active",
If(SelId = 0, "DELETE", "PUT"), If(SelId = 0, "DELETE", "PUT"),
If(SelId = 0, "", New JObject(New JProperty("capeId", SkinData("capes")(SelId - 1)("id"))).ToString(0)), If(SelId = 0, "", New JObject(New JProperty("capeId", SkinData("capes")(SelId - 1)("id"))).ToString(0)),
"application/json", Headers:=New Dictionary(Of String, String) From {{"Authorization", "Bearer " & AccessToken}}) "application/json", Headers:=New Dictionary(Of String, String) From {{"Authorization", "Bearer " & AccessToken}})
If Result.Contains("""errorMessage""") Then If Result.Contains("""errorMessage""") Then
Hint("更改披风失败:" & GetJson(Result)("errorMessage"), HintType.Critical) Hint("更改披风失败:" & GetJson(Result)("errorMessage"), HintType.Critical)
Exit Sub Exit Sub
@@ -273,7 +273,7 @@ Retry:
Finally Finally
IsChanging = False IsChanging = False
End Try End Try
End Sub, "Cape Change") End Sub, "Cape Change")
End Sub End Sub
End Class End Class