neon-sprawl/server/NeonSprawl.Server/Game/Quests/QuestStepState.cs

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;
}