using System; using UnityEngine; using UnityEngine.Events; public class ResidenceAudioEvents : MonoBehaviour { [Header("Residence")] [Space(10f)] public UnityEvent OnResidenceLampBuzz; public UnityEvent OnResidenceLampStopBuzz; public UnityEvent OnResidencePlayerSpawn; public UnityEvent OnDoorOpenPLay; public UnityEvent OnDoorOpenStop; private void OnEnable() { ResidenceLampsItem.OnLampBuzzGlobal = (Action)Delegate.Combine(ResidenceLampsItem.OnLampBuzzGlobal, new Action(OnResidenceLampBuzzPlay)); ResidenceLampsItem.OnLampBuzzStopGlobal = (Action)Delegate.Combine(ResidenceLampsItem.OnLampBuzzStopGlobal, new Action(OnResidenceLampStopBuzzStop)); PlayerResidence.OnResidencePlayerSpawnGlobal = (Action)Delegate.Combine(PlayerResidence.OnResidencePlayerSpawnGlobal, new Action(OnResidencePlayerSpawnPlay)); DoorTrigger.OnDoorOpen += DoorTrigger_OnDoorOpen; DoorTrigger.OnDoorClose += DoorTrigger_OnDoorClose; } private void OnDisable() { ResidenceLampsItem.OnLampBuzzGlobal = (Action)Delegate.Remove(ResidenceLampsItem.OnLampBuzzGlobal, new Action(OnResidenceLampBuzzPlay)); ResidenceLampsItem.OnLampBuzzStopGlobal = (Action)Delegate.Remove(ResidenceLampsItem.OnLampBuzzStopGlobal, new Action(OnResidenceLampStopBuzzStop)); PlayerResidence.OnResidencePlayerSpawnGlobal = (Action)Delegate.Remove(PlayerResidence.OnResidencePlayerSpawnGlobal, new Action(OnResidencePlayerSpawnPlay)); DoorTrigger.OnDoorOpen -= DoorTrigger_OnDoorOpen; DoorTrigger.OnDoorClose -= DoorTrigger_OnDoorClose; } private void OnResidenceLampBuzzPlay(Transform transform) { OnResidenceLampBuzz?.Invoke(transform); } private void OnResidenceLampStopBuzzStop(Transform transform) { OnResidenceLampStopBuzz?.Invoke(transform); } private void OnResidencePlayerSpawnPlay(Transform transform) { OnResidencePlayerSpawn?.Invoke(transform); } private void DoorTrigger_OnDoorOpen(DoorTrigger dt) { OnDoorOpenPLay?.Invoke(dt.transform); } private void DoorTrigger_OnDoorClose(DoorTrigger dt) { OnDoorOpenStop?.Invoke(dt.transform); } }