supervisor-simulator/scripts/Models/UnitModel.cs
2025-12-06 18:54:23 +08:00

78 lines
2.2 KiB
C#

using Godot;
using System;
namespace Models;
/// <summary>
/// 所有角色的基类,无论是导师、学生还是博后。
/// </summary>
public class UnitModel
{
public Guid Id { get; private set; } = Guid.NewGuid();
public string Name { get; set; }
// 基础属性
/// <summary>
/// 学术能力,影响科研进度
/// </summary>
public PropertyValue Academic {get; set;}
/// <summary>
/// 工程能力,影响实验进度
/// </summary>
public PropertyValue Engineering {get; set;}
/// <summary>
/// 写作能力,影响论文发表
/// </summary>
public PropertyValue Writing {get; set;}
/// <summary>
/// 财务能力,影响资金相关任务
/// </summary>
public PropertyValue Financial {get; set;}
/// <summary>
/// 社交能力
/// </summary>
public PropertyValue Social {get; set;}
/// <summary>
/// 行动力,影响各种行为的效率和能动性
/// </summary>
public PropertyValue Activation {get; set;}
// 状态属性
/// <summary>
/// 压力值
/// </summary>
public StatusValue Stress {get; set;}
/// <summary>
/// 精神值 (Sanity) / 抗压能力
/// 范围 0-100。过低会导致崩溃(Breakdown)。
/// </summary>
public StatusValue Sanity { get; set; }
/// <summary>
/// 情绪值,影响工作效率
/// </summary>
public PropertyValue Mood {get; set;}
/// <summary>
/// 移动速度
/// </summary>
public float MoveSpeed {get; set;}
// 局内属性
public Vector2I TargetPosition {get; set;}
public Vector2I CurrentPosition {get; set;}
public Guid TargetTaskId {get; set;}
protected UnitModel(string name)
{
Name = name;
var random = new Random();
Academic = random.Next(PropertyValue.Min, PropertyValue.Max);
Engineering = random.Next(PropertyValue.Min, PropertyValue.Max);
Writing = random.Next(PropertyValue.Min, PropertyValue.Max);
Financial = random.Next(PropertyValue.Min, PropertyValue.Max);
Social = random.Next(PropertyValue.Min, PropertyValue.Max);
Activation = random.Next(PropertyValue.Min, PropertyValue.Max);
}
}