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