using Content.Shared.DoAfter;
using Content.Shared.Whitelist;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
namespace Content.Shared._DV.Construction;
///
/// Component for an upgrade kit that upgrades allowed machines then deletes itself.
///
[RegisterComponent, NetworkedComponent, Access(typeof(UpgradeKitSystem))]
public sealed partial class UpgradeKitComponent : Component
{
///
/// A whitelist that entities must match to be upgraded.
///
[DataField(required: true)]
public EntityWhitelist Whitelist = new();
///
/// A blacklist that entities cannot match to be upgraded.
///
[DataField(required: true)]
public EntityWhitelist Blacklist = new();
///
/// Components added to the machine after it's upgraded.
/// Some of these must blacklist it from upgrades to prevent stacking.
///
[DataField(required: true)]
public ComponentRegistry Components = new();
///
/// How long the doafter is
///
[DataField]
public TimeSpan Delay = TimeSpan.FromSeconds(4);
///
/// Sound played when upgrading an entity.
///
[DataField]
public SoundSpecifier? UpgradeSound = new SoundPathSpecifier("/Audio/Items/rped.ogg");
public EntityUid? SoundStream;
}
[Serializable, NetSerializable]
public sealed partial class UpgradeKitDoAfterEvent : SimpleDoAfterEvent;