using Minesweeper.Commands; using Minesweeper.Config; using Minesweeper.Core; using Minesweeper.Presentation.Adapters; using Minesweeper.Presentation.Factories; using Minesweeper.Presentation.Presenters; using Minesweeper.Presentation.ReadModels; using Minesweeper.Presentation.Views; using UnityEngine; using VContainer; using VContainer.Unity; namespace Minesweeper.Infrastructure { public sealed class MinesweeperLifetimeScope : LifetimeScope { [SerializeField] private MinesweeperGameConfig gameConfig; protected override void Configure(IContainerBuilder builder) { builder.RegisterInstance(GetConfig()); builder.Register(Lifetime.Singleton).As(); builder.Register(Lifetime.Singleton).As(); builder.Register(Lifetime.Singleton).As(); builder.Register(Lifetime.Singleton).As(); builder.Register(Lifetime.Singleton).As(); builder.Register(Lifetime.Singleton).As(); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton).As(); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.RegisterEntryPoint(); } private MinesweeperGameConfig GetConfig() { if (gameConfig != null) { return gameConfig; } return ScriptableObject.CreateInstance(); } } }