从全角更改到半角MySkin.xaml.vb
This commit is contained in:
@@ -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
|
||||
Public Property Address As String
|
||||
私有 _Address As String
|
||||
公共 Property Address As String
|
||||
Get
|
||||
Return _Address
|
||||
End Get
|
||||
Set(value As String)
|
||||
_Address = value
|
||||
ToolTip = If(_Address = "", "加载中", "点击更换皮肤(右键查看更多选项)")
|
||||
ToolTip = If(_Address = "", "加载中", "点击更换皮肤(右键查看更多选项)")
|
||||
End Set
|
||||
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
|
||||
AniStart(AaOpacity(ShadowSkin, 0.8 - ShadowSkin.Opacity, 200, 100), "Skin Shadow")
|
||||
私有 Sub PanSkin_MouseEnter(sender As Object, e As MouseEventArgs) Handles Me.MouseEnter
|
||||
AniStart(AaOpacity(ShadowSkin, 0.8 - ShadowSkin.Opacity, 200, 100), "Skin Shadow")
|
||||
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")
|
||||
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
|
||||
|
||||
'点击
|
||||
Private IsSkinMouseDown As Boolean = False
|
||||
Private Sub PanSkin_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs) Handles Me.MouseLeftButtonDown
|
||||
私有 IsSkinMouseDown As Boolean = False
|
||||
私有 Sub PanSkin_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs) Handles Me.MouseLeftButtonDown
|
||||
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
|
||||
Private 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")
|
||||
私有 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")
|
||||
If IsSkinMouseDown Then
|
||||
IsSkinMouseDown = False
|
||||
RaiseEvent Click(sender, e)
|
||||
@@ -41,10 +41,10 @@
|
||||
End Sub
|
||||
|
||||
'保存皮肤
|
||||
Public Sub BtnSkinSave_Click() Handles BtnSkinSave.Click
|
||||
公共 Sub BtnSkinSave_Click() Handles BtnSkinSave.Click
|
||||
Save(Loader)
|
||||
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
|
||||
If Not Loader.State = LoadState.Finished Then
|
||||
Hint("皮肤正在获取中,请稍候!", HintType.Critical)
|
||||
@@ -67,14 +67,14 @@
|
||||
Log(ex, "保存皮肤失败", LogLevel.Hint)
|
||||
End Try
|
||||
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 = ""
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 载入皮肤。
|
||||
''' </summary>
|
||||
Public Sub Load()
|
||||
公共 Sub Load()
|
||||
Try
|
||||
'检查文件存在
|
||||
Address = Loader.Output
|
||||
@@ -98,10 +98,10 @@
|
||||
End If
|
||||
'头发层(附加层)
|
||||
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 - 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 - 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)
|
||||
@@ -121,26 +121,26 @@
|
||||
''' <summary>
|
||||
''' 清空皮肤。
|
||||
''' </summary>
|
||||
Public Sub Clear()
|
||||
公共 Sub Clear()
|
||||
Address = ""
|
||||
ImgFore.Source = Nothing
|
||||
ImgBack.Source = Nothing
|
||||
End Sub
|
||||
|
||||
'刷新缓存
|
||||
Public Sub RefreshClick() Handles BtnSkinRefresh.Click
|
||||
公共 Sub RefreshClick() Handles BtnSkinRefresh.Click
|
||||
RefreshCache(Loader)
|
||||
End Sub
|
||||
''' <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
|
||||
For Each SkinLoader In PageLaunchLeft.SkinLoaders
|
||||
If SkinLoader.State = LoadState.Loading Then
|
||||
HasLoaderRunning = True : Exit For
|
||||
End If
|
||||
Next
|
||||
下一页
|
||||
If FrmLaunchLeft IsNot Nothing AndAlso HasLoaderRunning Then
|
||||
'由于 Abort 不是实时的,暂时不会释放文件,会导致删除报错,故只能取消执行
|
||||
Hint("有正在获取中的皮肤,请稍后再试!", HintType.Info)
|
||||
@@ -160,7 +160,7 @@
|
||||
'刷新控件
|
||||
For Each SkinLoader In If(sender IsNot Nothing, {sender}, {PageLaunchLeft.SkinLegacy, PageLaunchLeft.SkinMs})
|
||||
SkinLoader.WaitForExit(IsForceRestart:=True)
|
||||
Next
|
||||
下一页
|
||||
Hint("已刷新头像!", HintType.Finish)
|
||||
Catch ex As Exception
|
||||
Log(ex, "刷新皮肤缓存失败", LogLevel.Msgbox)
|
||||
@@ -172,7 +172,7 @@
|
||||
''' 在更换正版皮肤后,刷新正版皮肤。
|
||||
''' </summary>
|
||||
''' <param name="SkinAddress">新的正版皮肤完整地址。</param>
|
||||
Public Shared Sub ReloadCache(SkinAddress As String)
|
||||
公共 Shared Sub ReloadCache(SkinAddress As String)
|
||||
RunInThread(
|
||||
Sub()
|
||||
Try
|
||||
@@ -182,7 +182,7 @@
|
||||
'刷新控件
|
||||
For Each SkinLoader In {PageLaunchLeft.SkinMs, PageLaunchLeft.SkinLegacy}
|
||||
SkinLoader.WaitForExit(IsForceRestart:=True)
|
||||
Next
|
||||
下一页
|
||||
'完成提示
|
||||
Hint("更改皮肤成功!", HintType.Finish)
|
||||
Catch ex As Exception
|
||||
@@ -192,7 +192,7 @@
|
||||
End Sub
|
||||
|
||||
'披风
|
||||
Public Property HasCape As Boolean
|
||||
公共 Property HasCape As Boolean
|
||||
Get
|
||||
Return BtnSkinCape.Visibility = Visibility.Collapsed
|
||||
End Get
|
||||
@@ -204,8 +204,8 @@
|
||||
End If
|
||||
End Set
|
||||
End Property
|
||||
Private IsChanging As Boolean = False
|
||||
Public Sub BtnSkinCape_Click() Handles BtnSkinCape.Click
|
||||
私有 IsChanging As Boolean = False
|
||||
公共 Sub BtnSkinCape_Click() Handles BtnSkinCape.Click
|
||||
'检查条件,获取新披风
|
||||
If IsChanging Then
|
||||
Hint("正在更改披风中,请稍候!")
|
||||
@@ -236,32 +236,32 @@ Retry:
|
||||
RunInUiWait(
|
||||
Sub()
|
||||
Try
|
||||
Dim CapeNames As New Dictionary(Of String, String) From {
|
||||
{"Migrator", "迁移者披风"}, {"MapMaker", "Realms 地图制作者披风"}, {"Moderator", "Mojira 管理员披风"},
|
||||
{"Translator-Chinese", "Crowdin 中文翻译者披风"}, {"Translator", "Crowdin 翻译者披风"}, {"Cobalt", "Cobalt 披风"},
|
||||
{"Vanilla", "原版披风"}, {"Minecon2011", "Minecon 2011 参与者披风"}, {"Minecon2012", "Minecon 2012 参与者披风"},
|
||||
{"Minecon2013", "Minecon 2013 参与者披风"}, {"Minecon2015", "Minecon 2015 参与者披风"}, {"Minecon2016", "Minecon 2016 参与者披风"},
|
||||
{"Cherry Blossom", "樱花披风"}, {"15th Anniversary", "15 周年纪念披风"}, {"Purple Heart", "紫色心形披风"},
|
||||
{"Follower's", "追随者披风"}, {"MCC 15th Year", "MCC 15 周年披风"}, {"Minecraft Experience", "村民救援披风"},
|
||||
{"Mojang Office", "Mojang 办公室披风"},{"Home", "家园披风"},{"Menace", "威胁披风"}
|
||||
Dim CapeNames As New Dictionary(Of String, String) From {
|
||||
{"Migrator", "迁移者披风"}, {"MapMaker", "Realms 地图制作者披风"}, {"Moderator", "Mojira 管理员披风"},
|
||||
{"Translator-Chinese", "Crowdin 中文翻译者披风"}, {"Translator", "Crowdin 翻译者披风"}, {"Cobalt", "Cobalt 披风"},
|
||||
{"Vanilla", "原版披风"}, {"Minecon2011", "Minecon 2011 参与者披风"}, {"Minecon2012", "Minecon 2012 参与者披风"},
|
||||
{"Minecon2013", "Minecon 2013 参与者披风"}, {"Minecon2015", "Minecon 2015 参与者披风"}, {"Minecon2016", "Minecon 2016 参与者披风"},
|
||||
{"Cherry Blossom", "樱花披风"}, {"15th Anniversary", "15 周年纪念披风"}, {"Purple Heart", "紫色心形披风"},
|
||||
{"Follower's", "追随者披风"}, {"MCC 15th Year", "MCC 15 周年披风"}, {"Minecraft Experience", "村民救援披风"},
|
||||
{"Mojang Office","Mojang 办公室披风"},{"Home","家园披风"},{"Menace","威胁披风"}
|
||||
}
|
||||
Dim SelectionControl As New List(Of IMyRadio) From {New MyRadioBox With {.Text = "无披风"}}
|
||||
For Each Cape In SkinData("capes")
|
||||
Dim CapeName As String = Cape("alias").ToString
|
||||
If CapeNames.ContainsKey(CapeName) Then CapeName = CapeNames(CapeName)
|
||||
SelectionControl.Add(New MyRadioBox With {.Text = CapeName})
|
||||
Next
|
||||
SelId = MyMsgBoxSelect(SelectionControl, "选择披风", "确定", "取消")
|
||||
下一页
|
||||
SelId = MyMsgBoxSelect(SelectionControl, "选择披风", "确定", "取消")
|
||||
Catch ex As Exception
|
||||
Log(ex, "获取玩家皮肤列表失败", LogLevel.Feedback)
|
||||
End Try
|
||||
End Sub)
|
||||
If SelId Is Nothing Then Exit Sub
|
||||
'发送请求
|
||||
Dim Result As String = NetRequestRetry("https://api.minecraftservices.com/minecraft/profile/capes/active",
|
||||
If(SelId = 0, "DELETE", "PUT"),
|
||||
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}})
|
||||
Dim Result As String = NetRequestRetry("https://api.minecraftservices.com/minecraft/profile/capes/active",
|
||||
If(SelId = 0, "DELETE", "PUT"),
|
||||
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}})
|
||||
If Result.Contains("""errorMessage""") Then
|
||||
Hint("更改披风失败:" & GetJson(Result)("errorMessage"), HintType.Critical)
|
||||
Exit Sub
|
||||
@@ -273,7 +273,7 @@ Retry:
|
||||
Finally
|
||||
IsChanging = False
|
||||
End Try
|
||||
End Sub, "Cape Change")
|
||||
End Sub, "Cape Change")
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
|
||||
Reference in New Issue
Block a user