using System; namespace Models; /// /// UnitModel(组合式数据容器) /// 设计说明: /// 1) 该类不再是“基类”,而是用于聚合组件的纯数据对象。 /// 2) 这样 Student/Mentor/Staff 可以按需组合组件,避免继承链的耦合。 /// 3) 任何业务逻辑应放在 System/Controller 层,Model 保持可序列化、可测试。 /// 注意事项: /// - 不引用 Godot 类型,保证与视图层隔离。 /// - 通过 Name 属性提供便捷访问,便于旧代码过渡。 /// 未来扩展: /// - 可以增加“能力衰减/成长曲线”等组件,而不影响现有对象结构。 /// - 可引入“只读快照”用于回放/结算等需求。 /// public sealed class UnitModel { /// /// 身份组件 /// public UnitComponents.UnitIdentity Identity { get; } /// /// 属性组件 /// public UnitComponents.UnitAttributes Attributes { get; } /// /// 状态组件 /// public UnitComponents.UnitStatuses Statuses { get; } /// /// 标签组件 /// public UnitComponents.UnitTags Tags { get; } /// /// 指派组件 /// public UnitComponents.UnitAssignment Assignment { get; } /// /// 位置组件 /// public UnitComponents.UnitPlacement Placement { get; } /// /// 装备组件 /// public UnitComponents.UnitEquipment Equipment { get; } /// /// 名字(便捷访问) /// public string Name { get => Identity.Name; set => Identity.Name = value; } /// /// 构造函数 /// /// 名字 /// 随机数生成器 public UnitModel(string name, Random random = null) { Identity = new UnitComponents.UnitIdentity(name); Attributes = new UnitComponents.UnitAttributes(random); Statuses = new UnitComponents.UnitStatuses(); Tags = new UnitComponents.UnitTags(); Assignment = new UnitComponents.UnitAssignment(); Placement = new UnitComponents.UnitPlacement(); Equipment = new UnitComponents.UnitEquipment(); } }