using UnityEngine;
using BaseGames.Core.Events;
namespace BaseGames.Core
{
///
/// 在 Awake 时(最早执行)向 ServiceLocator 注册所有服务。
/// 挂载在 Persistent 场景的根 GameObject 上。
///
[DefaultExecutionOrder(-2000)]
public class GameServiceRegistrar : MonoBehaviour
{
[SerializeField] private DeathRespawnService _deathRespawnService;
[SerializeField] private SceneService _sceneService;
[SerializeField] private EventChannelRegistry _eventChannelRegistry;
private void Awake()
{
// 注册 NullAudioService 作为兜底;Phase 2 Audio 模块 Awake 后会用真实实现覆盖
ServiceLocator.RegisterIfAbsent(new NullAudioService());
if (_deathRespawnService)
ServiceLocator.Register(_deathRespawnService);
if (_sceneService)
ServiceLocator.Register(_sceneService);
if (_eventChannelRegistry)
ServiceLocator.Register(_eventChannelRegistry);
}
}
}