Files
Nitrox/NitroxClient/Communication/Packets/Processors/MedicalCabinetClickedProcessor.cs
2025-07-06 00:23:46 +02:00

37 lines
1.2 KiB
C#

using NitroxClient.Communication.Packets.Processors.Abstract;
using NitroxClient.GameLogic.FMOD;
using NitroxClient.MonoBehaviours;
using NitroxClient.Unity.Helper;
using NitroxModel.Packets;
using UnityEngine;
namespace NitroxClient.Communication.Packets.Processors;
public class MedicalCabinetClickedProcessor : ClientPacketProcessor<MedicalCabinetClicked>
{
public override void Process(MedicalCabinetClicked packet)
{
GameObject gameObject = NitroxEntity.RequireObjectFrom(packet.Id);
MedicalCabinet cabinet = gameObject.RequireComponent<MedicalCabinet>();
bool medkitPickedUp = !packet.HasMedKit && cabinet.hasMedKit;
bool doorChangedState = cabinet.doorOpen != packet.DoorOpen;
cabinet.hasMedKit = packet.HasMedKit;
cabinet.timeSpawnMedKit = packet.NextSpawnTime;
using (PacketSuppressor<FMODCustomEmitterPacket>.Suppress())
using (FMODSystem.SuppressSubnauticaSounds())
{
if (doorChangedState)
{
cabinet.Invoke(nameof(MedicalCabinet.ToggleDoorState), 0f);
}
else if (medkitPickedUp)
{
cabinet.Invoke(nameof(MedicalCabinet.ToggleDoorState), 2f);
}
}
}
}