using Content.Shared.Changeling.Systems;
using Content.Shared.Cloning;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
namespace Content.Shared.Changeling.Components;
///
/// The component containing information about Changelings Transformation action
/// Like how long their windup is, the sounds as well as the Target Cloning settings for changing between identities
///
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
[Access(typeof(ChangelingTransformSystem))]
public sealed partial class ChangelingTransformComponent : Component
{
///
/// The action Prototype for Transforming
///
[DataField]
public EntProtoId? ChangelingTransformAction = "ActionChangelingTransform";
///
/// The Action Entity for transforming associated with this Component
///
[DataField, AutoNetworkedField]
public EntityUid? ChangelingTransformActionEntity;
///
/// Time it takes to Transform
///
[DataField, AutoNetworkedField]
public TimeSpan TransformWindup = TimeSpan.FromSeconds(5);
///
/// The noise used when attempting to transform
///
[DataField, AutoNetworkedField]
public SoundSpecifier? TransformAttemptNoise = new SoundCollectionSpecifier("ChangelingTransformAttempt", AudioParams.Default.WithMaxDistance(6)); // 6 distance due to the default 15 being hearable all the way across PVS. Changeling is meant to be stealthy. 6 still allows the sound to be hearable, but not across an entire department.
///
/// The currently active transform in the world
///
[DataField]
public EntityUid? CurrentTransformSound;
///
/// The cloning settings passed to the CloningSystem, contains a list of all components to copy or have handled by their
/// respective systems.
///
public ProtoId TransformCloningSettings = "ChangelingCloningSettings";
public override bool SendOnlyToOwner => true;
}