2023-01-04 12:56:35 -06:00
|
|
|
|
using Content.Server.Explosion.EntitySystems;
|
2021-06-27 21:55:18 +02:00
|
|
|
|
using Content.Server.Sound.Components;
|
2022-04-08 17:17:05 -04:00
|
|
|
|
using Content.Server.UserInterface;
|
2023-01-04 12:56:35 -06:00
|
|
|
|
using Content.Shared.Sound;
|
2022-03-25 17:17:29 +13:00
|
|
|
|
using Robust.Shared.Random;
|
2021-06-19 11:35:56 +02:00
|
|
|
|
|
2023-01-04 12:56:35 -06:00
|
|
|
|
namespace Content.Server.Sound;
|
|
|
|
|
|
|
|
|
|
|
|
public sealed class EmitSoundSystem : SharedEmitSoundSystem
|
2021-06-19 11:35:56 +02:00
|
|
|
|
{
|
2023-01-04 12:56:35 -06:00
|
|
|
|
public override void Update(float frameTime)
|
2021-06-19 11:35:56 +02:00
|
|
|
|
{
|
2023-01-04 12:56:35 -06:00
|
|
|
|
base.Update(frameTime);
|
|
|
|
|
|
foreach (var soundSpammer in EntityQuery<SpamEmitSoundComponent>())
|
2022-07-15 03:54:34 -04:00
|
|
|
|
{
|
2023-01-04 12:56:35 -06:00
|
|
|
|
if (!soundSpammer.Enabled)
|
|
|
|
|
|
continue;
|
2022-07-15 03:54:34 -04:00
|
|
|
|
|
2023-01-04 12:56:35 -06:00
|
|
|
|
soundSpammer.Accumulator += frameTime;
|
|
|
|
|
|
if (soundSpammer.Accumulator < soundSpammer.RollInterval)
|
|
|
|
|
|
{
|
|
|
|
|
|
continue;
|
2022-07-15 03:54:34 -04:00
|
|
|
|
}
|
2023-01-04 12:56:35 -06:00
|
|
|
|
soundSpammer.Accumulator -= soundSpammer.RollInterval;
|
2022-08-31 12:24:21 +02:00
|
|
|
|
|
2023-01-04 12:56:35 -06:00
|
|
|
|
if (Random.Prob(soundSpammer.PlayChance))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (soundSpammer.PopUp != null)
|
|
|
|
|
|
Popup.PopupEntity(Loc.GetString(soundSpammer.PopUp), soundSpammer.Owner);
|
|
|
|
|
|
TryEmitSound(soundSpammer);
|
|
|
|
|
|
}
|
2021-07-12 13:38:05 +02:00
|
|
|
|
}
|
2023-01-04 12:56:35 -06:00
|
|
|
|
}
|
2021-07-12 13:38:05 +02:00
|
|
|
|
|
2023-01-04 12:56:35 -06:00
|
|
|
|
public override void Initialize()
|
|
|
|
|
|
{
|
|
|
|
|
|
base.Initialize();
|
2022-04-08 17:17:05 -04:00
|
|
|
|
|
2023-01-04 12:56:35 -06:00
|
|
|
|
SubscribeLocalEvent<EmitSoundOnTriggerComponent, TriggerEvent>(HandleEmitSoundOnTrigger);
|
|
|
|
|
|
SubscribeLocalEvent<EmitSoundOnUIOpenComponent, AfterActivatableUIOpenEvent>(HandleEmitSoundOnUIOpen);
|
|
|
|
|
|
}
|
2022-08-09 12:14:55 +03:00
|
|
|
|
|
2023-01-04 12:56:35 -06:00
|
|
|
|
private void HandleEmitSoundOnUIOpen(EntityUid eUI, EmitSoundOnUIOpenComponent component, AfterActivatableUIOpenEvent args)
|
|
|
|
|
|
{
|
|
|
|
|
|
TryEmitSound(component, args.User);
|
|
|
|
|
|
}
|
2022-08-09 12:14:55 +03:00
|
|
|
|
|
2023-01-04 12:56:35 -06:00
|
|
|
|
private void HandleEmitSoundOnTrigger(EntityUid uid, EmitSoundOnTriggerComponent component, TriggerEvent args)
|
|
|
|
|
|
{
|
2023-03-06 07:34:08 +03:00
|
|
|
|
TryEmitSound(component);
|
2023-01-04 12:56:35 -06:00
|
|
|
|
args.Handled = true;
|
2021-06-19 11:35:56 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|