25 lines
872 B
C#
25 lines
872 B
C#
namespace NeonSprawl.Server.Game.Quests;
|
|
|
|
/// <summary>Immutable per-player quest progress snapshot (NEO-116; module contract <c>QuestStepState</c>).</summary>
|
|
public sealed class QuestStepState(
|
|
string playerId,
|
|
string questId,
|
|
QuestProgressStatus status,
|
|
int currentStepIndex,
|
|
IReadOnlyDictionary<string, int> objectiveCounters,
|
|
DateTimeOffset? completedAt)
|
|
{
|
|
public string PlayerId { get; } = playerId;
|
|
|
|
public string QuestId { get; } = questId;
|
|
|
|
public QuestProgressStatus Status { get; } = status;
|
|
|
|
public int CurrentStepIndex { get; } = currentStepIndex;
|
|
|
|
/// <summary>Objective id → accumulated count for the <see cref="CurrentStepIndex"/> step only.</summary>
|
|
public IReadOnlyDictionary<string, int> ObjectiveCounters { get; } = objectiveCounters;
|
|
|
|
public DateTimeOffset? CompletedAt { get; } = completedAt;
|
|
}
|