using System.Threading.Tasks; using Robust.Shared.GameStates; using Robust.Shared.Serialization; namespace Content.Shared.DoAfter; [RegisterComponent, NetworkedComponent] [Access(typeof(SharedDoAfterSystem))] public sealed class DoAfterComponent : Component { [DataField("nextId")] public ushort NextId; [DataField("doAfters")] public readonly Dictionary DoAfters = new(); // Used by obsolete async do afters public readonly Dictionary> AwaitedDoAfters = new(); } [Serializable, NetSerializable] public sealed class DoAfterComponentState : ComponentState { public readonly ushort NextId; public readonly Dictionary DoAfters; public DoAfterComponentState(DoAfterComponent component) { NextId = component.NextId; DoAfters = component.DoAfters; } } [Serializable, NetSerializable] public enum DoAfterStatus : byte { Invalid, Running, Cancelled, Finished, }