using Robust.Shared.GameStates; using Robust.Shared.Serialization; namespace Content.Shared.Climbing; [NetworkedComponent] public abstract class SharedClimbingComponent : Component { /// /// Whether the owner is climbing on a climbable entity. /// [ViewVariables] public virtual bool IsClimbing { get; set; } /// /// Whether the owner is being moved onto the climbed entity. /// [ViewVariables] public virtual 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; [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; } } }