supervisor-simulator/scripts/Models/UnitModel.cs
2026-01-18 20:05:23 +08:00

76 lines
2.3 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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