using System;
namespace Models;
///
/// 雇员/合作人数据模型 (StaffModel)
/// 设计说明:
/// 1) 覆盖“博后/小老师”等非学生角色,强调长期合作与野心值。
/// 2) 继续复用 UnitModel 组件,保证与学生/导师统一的数据接口。
/// 注意事项:
/// - Staff 行为逻辑应由系统层决定(例如背刺/跳槽)。
/// 未来扩展:
/// - 可加入“合作者关系网”和“派系归属”。
///
public sealed class StaffModel
{
///
/// 职员类型
///
public enum StaffType
{
PostDoc, // 博士后
JuniorFaculty // 青年教师
}
///
/// 核心单位数据
///
public UnitModel Core { get; }
///
/// 职员类型
///
public StaffType Type { get; private set; }
///
/// 动机数据
///
public StaffMotivation Motivation { get; }
///
/// 名字(便捷访问)
///
public string Name
{
get => Core.Name;
set => Core.Name = value;
}
///
/// 构造函数
///
/// 名字
/// 类型
/// 随机数生成器
public StaffModel(string name, StaffType type, Random random = null)
{
Core = new UnitModel(name, random);
Type = type;
Motivation = new StaffMotivation();
}
}
///
/// 职员动机组件
///
public sealed class StaffMotivation
{
///
/// 野心
///
public StatusValue Ambition { get; set; } = new(50, 100, 0);
///
/// 忠诚度
///
public StatusValue Loyalty { get; set; } = new(70, 100, 0);
///
/// 合同剩余回合
///
public StatusValue ContractTurns { get; set; } = new(6, 12, 0);
}