Files
MRCC/launcher/PCL-CE/Plain Craft Launcher 2/Pages/PageSetup/PageSetupAbout.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

204 lines
7.4 KiB
C#

using System.Collections.ObjectModel;
using System.Text.Json.Serialization;
using System.Windows;
using System.Windows.Input;
using PCL.Core.App.Localization;
using PCL.Core.IO.Net.Http;
using PCL.Core.Utils;
namespace PCL;
public partial class PageSetupAbout
{
// 彩蛋
private int clickCount;
private new bool isLoaded;
public PageSetupAbout()
{
InitializeComponent();
Loaded += PageOtherAbout_Loaded;
}
public ObservableCollection<GitHubContributor> Contributors { get; set; } = new();
private void PageOtherAbout_Loaded(object sender, RoutedEventArgs e)
{
// 重复加载部分
PanBack.ScrollToHome();
// 非重复加载部分
if (isLoaded)
return;
isLoaded = true;
ItemAboutPcl.Info = ItemAboutPcl.Info.Replace("%VERSION%", ModBase.versionBaseName)
.Replace("%VERSIONCODE%", ModBase.versionCode.ToString()).Replace("%BRANCH%", ModBase.versionBranchName)
.Replace("%COMMIT_HASH%", ModBase.commitHashShort);
if (!Lang.IsChineseMainland)
{
ItemMcmod.Visibility = Visibility.Collapsed;
BtnMcmod.Visibility = Visibility.Collapsed;
ImgMcmod.Visibility = Visibility.Collapsed;
RowMcmod.Height = new GridLength(0);
}
LoadContributersAsync();
}
private async void LoadContributersAsync()
{
try
{
using (var response = await HttpRequest
.Create("https://api.github.com/repos/PCL-Community/PCL2-CE/contributors").SendAsync())
{
response.EnsureSuccessStatusCode();
var cos = await response.AsJsonAsync<List<GitHubContributor>>(JsonCompat.SerializerOptions);
Contributors.Clear();
foreach (var item in cos)
Contributors.Add((GitHubContributor)item);
}
}
catch (Exception ex)
{
ModBase.Log(ex, Lang.Text("Setup.About.Error.LoadContributorsFailed"));
}
}
private void ImgPCLCommunity_Click(object sender, MouseButtonEventArgs e)
{
ModAnimation.AniStart(new[] { ModAnimation.AaRotateTransform(sender, 360d) });
}
private void ImgPCLLogo_Click(object sender, MouseButtonEventArgs e)
{
if (clickCount < 200)
{
clickCount += 1;
switch (clickCount)
{
case 5:
{
HintService.Hint(Lang.Text("Setup.About.EasterEgg.NiceClick"));
break;
}
case 15:
{
HintService.Hint(Lang.Text("Setup.About.EasterEgg.StillClicking"));
break;
}
case 25:
{
switch (ModMain.MyMsgBox(Lang.Text("Setup.About.EasterEgg.Bored.Message"), Lang.Text("Setup.About.EasterEgg.Bored.Title"), Lang.Text("Setup.About.EasterEgg.Bored.Yes"), Lang.Text("Setup.About.EasterEgg.Bored.No")))
{
case 2:
{
HintService.Hint(Lang.Text("Setup.About.EasterEgg.Bored.Response"));
break;
}
}
break;
}
case 50:
{
HintService.Hint(Lang.Text("Setup.About.EasterEgg.Encouragement"));
break;
}
case 75:
{
HintService.Hint(Lang.Text("Setup.About.EasterEgg.HiddenTheme"));
break;
}
case 100:
{
HintService.Hint(Lang.Text("Setup.About.EasterEgg.StillStaring"));
break;
}
case 130:
{
HintService.Hint(Lang.Text("Setup.About.EasterEgg.NothingBehind"));
break;
}
case 150:
{
switch (ModMain.MyMsgBox(Lang.Text("Setup.About.EasterEgg.Tired.Message1"), Lang.Text("Setup.About.EasterEgg.Tired.Title1"), Lang.Text("Setup.About.EasterEgg.Tired.Exhausted"), Lang.Text("Setup.About.EasterEgg.Tired.NotTired")))
{
case 1:
{
HintService.Hint(Lang.Text("Setup.About.EasterEgg.Tired.StopClicking"));
break;
}
case 2:
{
switch (ModMain.MyMsgBox(Lang.Text("Setup.About.EasterEgg.Tired.Message2"), Lang.Text("Setup.About.EasterEgg.Tired.Title2"), Lang.Text("Setup.About.EasterEgg.Tired.Exhausted"), Lang.Text("Setup.About.EasterEgg.Tired.NotTired")))
{
case 1:
{
HintService.Hint(Lang.Text("Setup.About.EasterEgg.Tired.StopClicking"));
break;
}
case 2:
{
switch (ModMain.MyMsgBox(Lang.Text("Setup.About.EasterEgg.Tired.Message3"), Lang.Text("Setup.About.EasterEgg.Tired.Title3"), Lang.Text("Setup.About.EasterEgg.Tired.Exhausted"), Lang.Text("Setup.About.EasterEgg.Tired.ReallyNotTired")))
{
case 1:
{
HintService.Hint(Lang.Text("Setup.About.EasterEgg.Tired.StopClicking"));
break;
}
case 2:
{
HintService.Hint(Lang.Text("Setup.About.EasterEgg.Tired.FinallyGiveUp"));
break;
}
}
break;
}
}
break;
}
}
break;
}
case 200:
{
HintService.Hint(Lang.Text("Setup.About.EasterEgg.ClickDisabled"));
ImgPCLLogo.IsHitTestVisible = false;
return;
}
}
var rand = new Random();
var mx = rand.Next(-1, 1);
if (mx == 0)
mx = 1;
var my = rand.Next(-1, 1);
if (my == 0)
my = 1;
ModAnimation.AniStart(new[]
{
ModAnimation.AaTranslateX(sender, mx, 0), ModAnimation.AaTranslateY(sender, my, 0),
ModAnimation.AaTranslateX(sender, -mx, 0, 100), ModAnimation.AaTranslateY(sender, -my, 0, 100)
});
}
}
public class GitHubContributor
{
[JsonPropertyName("login")] public string Login { get; set; }
[JsonPropertyName("avatar_url")] public string AvatarUrl { get; set; }
[JsonPropertyName("html_url")] public string HtmlUrl { get; set; }
[JsonPropertyName("contributions")] public int Contributions { get; set; }
}
}