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