using System.Diagnostics.CodeAnalysis; namespace NeonSprawl.Server.Game.Npc; /// /// Session in-memory NPC runtime behavior state (NEO-93). /// HTTP projection lands in NEO-94; lazy tick advance reads/writes rows here. /// public interface INpcRuntimeStateStore { /// UTC instant of the last successful call. DateTimeOffset LastAdvancedUtc { get; set; } /// Reads runtime state for a known prototype NPC instance. Lazy-initializes an idle row. bool TryGet(string? npcInstanceId, [NotNullWhen(true)] out NpcRuntimeStateSnapshot snapshot); /// Writes runtime state for a known prototype NPC instance. bool TryWrite(string? npcInstanceId, in NpcRuntimeStateSnapshot snapshot); /// Resets one prototype NPC runtime row to idle with no active telegraph. bool TryResetPrototypeRow(string? npcInstanceId); /// Resets all prototype NPC runtime rows to idle. void ResetAllPrototypeRows(); }