using System; using UnityEngine; using VContainer; using VContainer.Unity; public class GameLifetimeScope : LifetimeScope { [SerializeField] private PlatformPool pool; [SerializeField] private PlatformManager manager; [SerializeField] private InputReaderSO inputReader; [SerializeField] private GameSession gameSession; [SerializeField] private Player player; [SerializeField] private AudioController audioController; //UI References [SerializeField] private GameScreenView gameScreenView; [SerializeField] private StartScreenView startScreenView; [SerializeField] private DeathScreenView deathScreenView; [SerializeField] private PauseScreenView pauseScreenView; protected override void Configure(IContainerBuilder builder) { builder.RegisterComponent(pool).As(); builder.RegisterComponent(manager).As(); builder.RegisterInstance(inputReader).As(); builder.Register(Lifetime.Singleton).As(); builder.RegisterInstance(gameSession).As(); builder.RegisterComponent(player).As(); builder.RegisterComponent(audioController).As().AsSelf(); builder.RegisterEntryPoint(Lifetime.Singleton).WithParameter(startScreenView); builder.Register(Lifetime.Singleton).WithParameter(gameScreenView).As(); builder.Register(Lifetime.Singleton).WithParameter(pauseScreenView).As(); builder.Register(Lifetime.Singleton).WithParameter(deathScreenView).As(); } }