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

98 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
namespace Models;
/// <summary>
/// 任务类型枚举
/// </summary>
public enum TaskType
{
Paper, // 论文:重学术(Intelligence) + 表达(Expression)
Project, // 项目:重工程(Strength) + 学术(Intelligence)
Admin // 杂务:消耗体力,低收益,但必须做
}
/// <summary>
/// 任务 (Task)
/// 核心游戏对象之一,相当于地图上的“怪物”。
/// 学生需要“攻击”任务(消耗工作量)来完成它。
/// </summary>
public class Task
{
public Guid Id { get; private set; } = Guid.NewGuid();
/// <summary>
/// 任务名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 任务类型
/// </summary>
public TaskType Type { get; set; }
/// <summary>
/// 总工作量 (HP)
/// </summary>
public float TotalWorkload { get; set; }
/// <summary>
/// 当前进度
/// </summary>
public float CurrentProgress { get; set; }
/// <summary>
/// 难度系数 (Defense)
/// 影响学生攻克该任务的效率。若学生能力低于难度,效率会大幅下降。
/// </summary>
public float Difficulty { get; set; }
/// <summary>
/// 截止日期 (剩余回合数)
/// 归零时如果未完成,触发失败惩罚。
/// </summary>
public int Deadline { get; set; }
/// <summary>
/// 奖励:经费
/// </summary>
public int RewardMoney { get; set; }
/// <summary>
/// 奖励:声望
/// </summary>
public int RewardReputation { get; set; }
/// <summary>
/// 任务是否已完成
/// </summary>
public bool IsCompleted => CurrentProgress >= TotalWorkload;
/// <summary>
/// 任务是否已失败(超时未完成)
/// </summary>
public bool IsFailed => Deadline <= 0 && !IsCompleted;
public Task(string name, TaskType type, float workload, int deadline)
{
Name = name;
Type = type;
TotalWorkload = workload;
Deadline = deadline;
CurrentProgress = 0;
Difficulty = 1.0f;
}
/// <summary>
/// 增加进度
/// </summary>
/// <param name="amount">工作量数值</param>
public void AddProgress(float amount)
{
CurrentProgress += amount;
if (CurrentProgress > TotalWorkload) CurrentProgress = TotalWorkload;
}
}