Files
MRCC/launcher/PCL-CE/Plain Craft Launcher 2/Pages/PageLaunch/PageLoginProfileSkin.xaml.cs
T
xyou f70b061d1a
CI / Go Backend (push) Canceled after 0s
feat: 项目初始化 + 3D方块世界原型 + AI助搭系统
初始化 monorepo: Go后端(7微服务) + Unity客户端(9模块) + 启动器

HTML5原型: Three.js 3D体素世界, Perlin噪声地形, 原版材质, 22种方块

Minecraft创造模式背包: 双栏布局, 拖拽移动物品, 方向性元件引脚

AI助搭策划文档 + 客户端/服务端骨架 + Docker Compose + CI
2026-08-08 14:07:56 +08:00

159 lines
5.1 KiB
C#

using System.Windows;
using System.Windows.Input;
using PCL.Core.App.Localization;
namespace PCL;
public partial class PageLoginProfileSkin
{
public PageLoginProfileSkin()
{
InitializeComponent();
Loaded += (_, _) => Reload();
// Handles
PanData.MouseEnter += ShowPanel;
PanData.MouseLeave += HidePanel;
BtnSkin.Click += BtnSkin_Click;
BtnEdit.Click += BtnEdit_Click;
BtnSelect.Click += ChangeProfile;
}
/// <summary>
/// 刷新页面显示的所有信息。
/// </summary>
public void Reload()
{
ModBase.Log("[Profile] 刷新档案界面");
Skin.Clear();
if (ModProfile.selectedProfile.Type == ModLaunch.McLoginType.Ms)
{
BtnEdit.Visibility = Visibility.Visible;
ModBase.Log("[Profile] 使用正版皮肤加载器");
Skin.loader = PageLaunchLeft.skinMs;
}
else if (ModProfile.selectedProfile.Type == ModLaunch.McLoginType.Auth)
{
BtnEdit.Visibility = Visibility.Visible;
ModBase.Log("[Profile] 使用 Authlib 皮肤加载器");
Skin.loader = PageLaunchLeft.skinAuth;
}
else
{
BtnEdit.Visibility = Visibility.Collapsed;
ModBase.Log("[Profile] 使用离线皮肤加载器");
Skin.loader = PageLaunchLeft.skinLegacy;
}
Skin.loader.Start(isForceRestart: true);
TextName.Text = ModProfile.selectedProfile.Username;
TextType.Text = (string)ModProfile.GetProfileInfo(ModProfile.selectedProfile);
}
#region 控制与编辑
// 显示 / 隐藏控制
private void ShowPanel(object sender, MouseEventArgs e)
{
ModAnimation.AniStart(ModAnimation.AaOpacity(PanButtons, 1d - PanButtons.Opacity, 120),
"PageLoginProfileSkin Button");
}
private void HidePanel(object sender, EventArgs e)
{
if (BtnEdit.ContextMenu.IsOpen || BtnSkin.ContextMenu.IsOpen || PanData.IsMouseOver)
return;
ModAnimation.AniStart(ModAnimation.AaOpacity(PanButtons, -PanButtons.Opacity, 120),
"PageLoginProfileSkin Button");
}
private void MenuAccountOptions_Closed(object sender, RoutedEventArgs e)
{
HidePanel(sender, e);
}
// 皮肤与披风子菜单
private void BtnSkin_Click(object sender, EventArgs e)
{
BtnSkin.ContextMenu.IsOpen = true;
}
// 账号信息子菜单
private void BtnEdit_Click(object sender, EventArgs e)
{
BtnEdit.ContextMenu.IsOpen = true;
}
// 修改密码
private void BtnEditPassword_Click(object sender, RoutedEventArgs e)
{
if (ModProfile.selectedProfile.Type == ModLaunch.McLoginType.Ms)
{
ModBase.OpenWebsite("https://account.live.com/password/Change");
}
else if (ModProfile.selectedProfile.Type == ModLaunch.McLoginType.Auth)
{
var server = ModProfile.selectedProfile.Server;
ModBase.OpenWebsite(server.Replace("/api/yggdrasil/authserver" + (server.EndsWithF("/") ? "/" : ""),
"/user/profile"));
}
else
{
HintService.Hint(Lang.Text("Launch.Account.ProfileSkin.PasswordUnsupported"));
}
}
// 修改 ID
private void BtnEditName_Click(object sender, RoutedEventArgs e)
{
ModProfile.EditProfileId();
}
// 选择档案
private void ChangeProfile(object sender, EventArgs e)
{
ModProfile.selectedProfile = null;
ModBase.RunInUi(() =>
{
ModMain.frmLaunchLeft.RefreshPage(true);
ModMain.frmLaunchLeft.BtnLaunch.IsEnabled = false;
});
}
// 修改皮肤
private void Skin_Click(object sender, RoutedEventArgs e)
{
if (ModProfile.selectedProfile.Type == ModLaunch.McLoginType.Ms)
ModProfile.ChangeSkinMs();
else if (ModProfile.selectedProfile.Type == ModLaunch.McLoginType.Auth)
ModBase.OpenWebsite(ModProfile.selectedProfile.Server.BeforeFirst("api/yggdrasil/authserver") +
"user/closet");
else
HintService.Hint(Lang.Text("Launch.Account.ProfileSkin.SkinUnsupported"));
}
// 保存皮肤
private void BtnSkinSave_Click(object sender, RoutedEventArgs e)
{
Skin.BtnSkinSave_Click(sender, e);
}
// 刷新皮肤
private void BtnSkinRefresh_Click(object sender, RoutedEventArgs e)
{
Skin.RefreshClick(sender, e);
}
// 修改披风
private void BtnSkinCape_Click(object sender, RoutedEventArgs e)
{
if (ModProfile.selectedProfile.Type == ModLaunch.McLoginType.Ms)
Skin.BtnSkinCape_Click(sender, e);
else if (ModProfile.selectedProfile.Type == ModLaunch.McLoginType.Auth)
ModBase.OpenWebsite(ModProfile.selectedProfile.Server.BeforeFirst("api/yggdrasil/authserver") +
"user/closet");
else
HintService.Hint(Lang.Text("Launch.Account.ProfileSkin.CapeUnsupported"));
}
#endregion
}