using System; using UnityEngine; using RR.Game2D.Behaviour; using RR.Game2D.Behaviour.ScriptableObjects; using RR.Game2D.Core.Managers; namespace RR.Common.Audio { public class LevelPlayerSFX : MonoBehaviour { public static LevelPlayerSFX Instance {get; private set; } [SerializeField] private SFXAsset levelStepSounds; public event Action SFXChanged; private void OnEnable() => GameManager.Instance.PlayerSpawned += OnPlayerSpawned; private void OnDisable() { if (GameManager.Instance) GameManager.Instance.PlayerSpawned -= OnPlayerSpawned; } private void Awake() { if (Instance != null && Instance != this) { Destroy(gameObject); return; } Instance = this; DontDestroyOnLoad(gameObject); } private void OnPlayerSpawned(GameObject obj) { PlayerController playerController = obj.GetComponent(); if (playerController == null) return; if (levelStepSounds != null) { playerController.stepSounds = levelStepSounds; SFXChanged?.Invoke(); } } } }