LethalCompany/Lethal Company/ExportedProject/Assets/Scripts/Assembly-CSharp/RandomPeriodicAudioPlayer.cs
2023-12-22 19:55:14 -05:00

90 lines
2.8 KiB
C#

using Unity.Netcode;
using UnityEngine;
public class RandomPeriodicAudioPlayer : NetworkBehaviour
{
public GrabbableObject attachedGrabbableObject;
public AudioClip[] randomClips;
public AudioSource thisAudio;
public float audioMinInterval;
public float audioMaxInterval;
public float audioChancePercent;
private float currentInterval;
private float lastIntervalTime;
private void Update()
{
if (base.IsServer && !(GameNetworkManager.Instance.localPlayerController == null) && (!(attachedGrabbableObject != null) || !attachedGrabbableObject.deactivated) && Time.realtimeSinceStartup - lastIntervalTime > currentInterval)
{
lastIntervalTime = Time.realtimeSinceStartup;
currentInterval = Time.realtimeSinceStartup + Random.Range(audioMinInterval, audioMaxInterval);
if (Random.Range(0f, 100f) < audioChancePercent)
{
PlayRandomAudioClientRpc(Random.Range(0, randomClips.Length));
}
}
}
[ClientRpc]
public void PlayRandomAudioClientRpc(int clipIndex)
{
NetworkManager networkManager = base.NetworkManager;
if ((object)networkManager != null && networkManager.IsListening)
{
if (__rpc_exec_stage != __RpcExecStage.Client && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams clientRpcParams = default(ClientRpcParams);
FastBufferWriter bufferWriter = __beginSendClientRpc(1557920159u, clientRpcParams, RpcDelivery.Reliable);
BytePacker.WriteValueBitPacked(bufferWriter, clipIndex);
__endSendClientRpc(ref bufferWriter, 1557920159u, clientRpcParams, RpcDelivery.Reliable);
}
if (__rpc_exec_stage == __RpcExecStage.Client && (networkManager.IsClient || networkManager.IsHost))
{
PlayAudio(clipIndex);
}
}
}
private void PlayAudio(int clipIndex)
{
AudioClip clip = randomClips[clipIndex];
thisAudio.PlayOneShot(clip, 1f);
WalkieTalkie.TransmitOneShotAudio(thisAudio, clip);
RoundManager.Instance.PlayAudibleNoise(thisAudio.transform.position, 7f, 0.6f);
}
protected override void __initializeVariables()
{
base.__initializeVariables();
}
[RuntimeInitializeOnLoadMethod]
internal static void InitializeRPCS_RandomPeriodicAudioPlayer()
{
NetworkManager.__rpc_func_table.Add(1557920159u, __rpc_handler_1557920159);
}
private static void __rpc_handler_1557920159(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
NetworkManager networkManager = target.NetworkManager;
if ((object)networkManager != null && networkManager.IsListening)
{
ByteUnpacker.ReadValueBitPacked(reader, out int value);
target.__rpc_exec_stage = __RpcExecStage.Client;
((RandomPeriodicAudioPlayer)target).PlayRandomAudioClientRpc(value);
target.__rpc_exec_stage = __RpcExecStage.None;
}
}
protected internal override string __getTypeName()
{
return "RandomPeriodicAudioPlayer";
}
}