using Content.Shared.Actions.ActionTypes; using Robust.Shared.Audio; using Robust.Shared.Utility; namespace Content.Shared.Vehicle.Components { /// /// This is particularly for vehicles that use /// buckle. Stuff like clown cars may need a different /// component at some point. /// All vehicles should have Physics, Strap, and SharedPlayerInputMover components. /// [RegisterComponent] public sealed class VehicleComponent : Component { /// /// Whether someone is currently riding the vehicle /// public bool HasRider => Rider != null; /// /// The entity currently riding the vehicle. /// [ViewVariables] public EntityUid? Rider; /// /// The base offset for the vehicle (when facing east) /// public Vector2 BaseBuckleOffset = Vector2.Zero; /// /// The sound that the horn makes /// [DataField("hornSound")] public SoundSpecifier? HornSound = new SoundPathSpecifier("/Audio/Effects/Vehicle/carhorn.ogg") { Params = AudioParams.Default.WithVolume(-3f) }; public IPlayingAudioStream? HonkPlayingStream; /// Use ambient sound component for the idle sound. /// /// The action for the horn (if any) /// [DataField("hornAction")] public InstantAction HornAction = new() { UseDelay = TimeSpan.FromSeconds(3.4), Icon = new SpriteSpecifier.Texture(new ResourcePath("Objects/Fun/bikehorn.rsi/icon.png")), DisplayName = "action-name-honk", Description = "action-desc-honk", Event = new HonkActionEvent(), }; /// /// Whether the vehicle has a key currently inside it or not. /// [DataField("hasKey")] public bool HasKey = false; /// /// Determines from which side the vehicle will be displayed on top of the player. /// [DataField("southOver")] public bool SouthOver = false; [DataField("northOver")] public bool NorthOver = false; [DataField("westOver")] public bool WestOver = false; [DataField("eastOver")] public bool EastOver = false; /// /// What the y buckle offset should be in north / south /// [DataField("northOverride")] public float NorthOverride = 0f; /// /// What the y buckle offset should be in north / south /// [DataField("southOverride")] public float SouthOverride = 0f; } }