78 lines
2.2 KiB
C#
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);
|
|
}
|
|
} |