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,84 @@
using System;
using System.Collections.ObjectModel;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
namespace PCL.Core.App.Tasks;
/// <summary>
/// 可观察的任务模型<br/>
/// <b>NOTE</b>: 请勿自行修改任何 observable 属性
/// </summary>
public partial class TaskModel : ObservableObject
{
/// <summary>
/// 任务标题
/// </summary>
public required string Title { get; init; }
/// <summary>
/// 任务是否支持进度
/// </summary>
public required bool SupportProgress { get; init; }
/// <summary>
/// 任务当前状态
/// </summary>
[ObservableProperty] private TaskState _state = TaskState.Waiting;
/// <summary>
/// 任务当前状态信息
/// </summary>
[ObservableProperty] private string _stateMessage = string.Empty;
/// <summary>
/// 任务当前进度,<see cref="SupportProgress"/> 为 <see langword="true"/> 时有效
/// </summary>
[ObservableProperty] private double _progress = 0.0;
private static readonly Action _EmptyAction = (static () => {});
/// <summary>
/// 取消任务时触发的事件,值为 <see langword="null"/> 表示不支持取消
/// </summary>
public required Action? OnCancel { private get; init; }
/// <summary>
/// 取消任务命令
/// </summary>
public RelayCommand Cancel
{
get => field ??= new RelayCommand(OnCancel ?? _EmptyAction, () => OnCancel is not null);
} = null!;
/// <summary>
/// 暂停任务时触发的事件,值为 <see langword="null"/> 表示不支持暂停
/// </summary>
public required Action? OnPause { private get; init; }
/// <summary>
/// 暂停任务命令
/// </summary>
public RelayCommand Pause
{
get => field ??= new RelayCommand(OnPause ?? _EmptyAction, () => OnPause is not null);
} = null!;
/// <summary>
/// 任务是否为任务组,即是否存在子任务
/// </summary>
[ObservableProperty] private bool _isGroup;
/// <summary>
/// 子任务模型
/// </summary>
public ObservableCollection<TaskModel> Children { get; } = [];
public TaskModel()
{
Children.CollectionChanged += (sender, _) =>
{
if (sender is ObservableCollection<TaskModel> c) IsGroup = c.Count > 0;
};
}
}