using Robust.Shared.GameStates; using Robust.Shared.Serialization; namespace Content.Shared.Climbing; [RegisterComponent, NetworkedComponent] public sealed class ClimbingComponent : Component { /// /// Whether the owner is climbing on a climbable entity. /// [ViewVariables] public bool IsClimbing { get; set; } /// /// Whether the owner is being moved onto the climbed entity. /// [ViewVariables] public bool OwnerIsTransitioning { get; set; } /// /// We'll launch the mob onto the table and give them at least this amount of time to be on it. /// public const float BufferTime = 0.3f; [ViewVariables] public Dictionary DisabledFixtureMasks { get; } = new(); [Serializable, NetSerializable] public sealed class ClimbModeComponentState : ComponentState { public ClimbModeComponentState(bool climbing, bool isTransitioning) { Climbing = climbing; IsTransitioning = isTransitioning; } public bool Climbing { get; } public bool IsTransitioning { get; } } }