mirror of
https://github.com/space-syndicate/space-station-14.git
synced 2026-10-09 10:21:18 +03:00
* Replace WithVolume() with AddVolume(), Remove AudioHelpers.WithVariation(), Use specifier options for audio params * Undo switching to AudioParams.AddVariation() * Replace AudioHelpers.WithVariation with AudioParams.AddVariation() * Test AudioParams.AddVariation() and change input parameters to sound like previous AudioHelpers.WithVariation() * Fix build error * Fix build error v2 * Remove DoAfter * fixes --------- Co-authored-by: AJCM-git <ajcm_mail@disroot.org>
63 lines
2 KiB
C#
63 lines
2 KiB
C#
using System.Numerics;
|
|
using Content.Shared.Camera;
|
|
using Content.Shared.Gravity;
|
|
using Robust.Client.Player;
|
|
using Robust.Shared.Audio;
|
|
using Robust.Shared.Audio.Systems;
|
|
using Robust.Shared.Player;
|
|
using Robust.Shared.Random;
|
|
|
|
namespace Content.Client.Gravity;
|
|
|
|
public sealed partial class GravitySystem
|
|
{
|
|
[Dependency] private IPlayerManager _playerManager = default!;
|
|
[Dependency] private IRobustRandom _random = default!;
|
|
[Dependency] private SharedAudioSystem _audio = default!;
|
|
[Dependency] private SharedCameraRecoilSystem _sharedCameraRecoil = default!;
|
|
|
|
private void InitializeShake()
|
|
{
|
|
SubscribeLocalEvent<GravityShakeComponent, ComponentInit>(OnShakeInit);
|
|
}
|
|
|
|
private void OnShakeInit(EntityUid uid, GravityShakeComponent component, ComponentInit args)
|
|
{
|
|
var localPlayer = _playerManager.LocalEntity;
|
|
|
|
if (!TryComp(localPlayer, out TransformComponent? xform) ||
|
|
xform.GridUid != uid && xform.MapUid != uid)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (Timing.IsFirstTimePredicted && TryComp<GravityComponent>(uid, out var gravity))
|
|
{
|
|
var audioParams = gravity.GravityShakeSound?.Params ?? AudioParams.Default;
|
|
audioParams = audioParams.AddVolume(-2f);
|
|
_audio.PlayGlobal(gravity.GravityShakeSound, Filter.Local(), true, audioParams);
|
|
}
|
|
}
|
|
|
|
protected override void ShakeGrid(EntityUid uid, GravityComponent? gravity = null)
|
|
{
|
|
base.ShakeGrid(uid, gravity);
|
|
|
|
if (!Resolve(uid, ref gravity) || !Timing.IsFirstTimePredicted)
|
|
return;
|
|
|
|
var localPlayer = _playerManager.LocalEntity;
|
|
|
|
if (!TryComp(localPlayer, out TransformComponent? xform))
|
|
return;
|
|
|
|
if (xform.GridUid != uid ||
|
|
xform.GridUid == null && xform.MapUid != uid)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var kick = new Vector2(_random.NextFloat(), _random.NextFloat()) * GravityKick;
|
|
_sharedCameraRecoil.KickCamera(localPlayer.Value, kick);
|
|
}
|
|
}
|