Danro/Assets/Scripts/Audio/LevelPlayerSFX.cs

50 lines
1.3 KiB
C#

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<PlayerController>();
if (playerController == null) return;
if (levelStepSounds != null)
{
playerController.stepSounds = levelStepSounds;
SFXChanged?.Invoke();
}
}
}
}