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