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 = false; /// /// 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. /// public bool HasKey = false; // TODO: Fix this /// /// Whether the vehicle should treat north as its unique direction in its visualizer /// [DataField("northOnly")] public bool NorthOnly = 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; } }