feat: 项目初始化 + 3D方块世界原型 + AI助搭系统
CI / Go Backend (push) Canceled after 0s

初始化 monorepo: Go后端(7微服务) + Unity客户端(9模块) + 启动器

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

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

AI助搭策划文档 + 客户端/服务端骨架 + Docker Compose + CI
This commit is contained in:
xyou
2026-08-08 14:07:56 +08:00
parent 9500c4c80a
commit f70b061d1a
1972 changed files with 159760 additions and 6 deletions
@@ -0,0 +1,106 @@
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace PCL;
public class MyTextButton : Label
{
public delegate void ClickEventHandler(object sender, EventArgs e);
// 指向动画
private const int animationTimeIn = 100;
private const int animationTimeOut = 200;
public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string),
typeof(MyTextButton), new PropertyMetadata("", (sender, e) =>
{
if (Equals(e.OldValue, e.NewValue)) return;
var button = (MyTextButton)sender;
ModAnimation.AniStart(
new[]
{
ModAnimation.AaOpacity(button, -button.Opacity, 50),
ModAnimation.AaCode(() => button.Content = e.NewValue, after: true),
ModAnimation.AaOpacity(button, 1d, 170)
}, "MyTextButton Text " + button.Uuid);
}));
private string colorName;
// 鼠标事件
public bool isMouseDown;
// 基础
public int Uuid = ModBase.GetUuid();
public MyTextButton()
{
SetResourceReference(ForegroundProperty, "ColorBrush1");
Background = ThemeManager.colorSemiTransparent;
PreviewMouseLeftButtonDown += MyTextButton_MouseLeftButtonDown;
MouseLeave += (_, _) => MyTextButton_MouseLeave();
PreviewMouseLeftButtonUp += MyTextButton_MouseLeftButtonUp;
MouseEnter += (_, _) => RefreshColor();
MouseLeave += (_, _) => RefreshColor();
IsEnabledChanged += (_, _) => RefreshColor();
MouseLeftButtonDown += (_, _) => RefreshColor();
MouseLeftButtonUp += (_, _) => RefreshColor();
}
// 文本
public string Text
{
get => (string)GetValue(TextProperty);
set => SetValue(TextProperty, value);
}
public event ClickEventHandler? Click;
private (string ForeName, int Time) GetVisualState()
{
if (isMouseDown)
return ("ColorBrush4", 30);
if (IsMouseOver)
return ("ColorBrush3", animationTimeIn);
return ("ColorBrush1", animationTimeOut);
}
private void MyTextButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
isMouseDown = true;
e.Handled = true;
}
private void MyTextButton_MouseLeave()
{
isMouseDown = false;
}
private void MyTextButton_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (!isMouseDown) return;
isMouseDown = false;
ModBase.Log("[Control] 按下文本按钮:" + Text);
Click?.Invoke(this, null);
ModMain.RaiseCustomEvent(this);
e.Handled = true;
}
private void RefreshColor()
{
var (ForeName, Time) = GetVisualState();
// 重复性验证
if ((colorName ?? "") == (ForeName ?? ""))
return;
colorName = ForeName;
// 触发颜色动画
ControlVisualHelpers.AnimateColorOrSetResource(this, ForegroundProperty, ForeName, Time,
"MyTextButton Color " + Uuid, ControlVisualHelpers.ShouldAnimate(this));
}
}