using Minesweeper.Commands; using Minesweeper.Config; using Minesweeper.Core; using Minesweeper.ECS; 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; [SerializeField] private MainMenuView mainMenuView; [SerializeField] private GameView gameView; 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().As(); builder.Register(Lifetime.Singleton).As(); builder.Register(Lifetime.Singleton).As(); builder.Register(Lifetime.Singleton).As(); builder.Register(Lifetime.Singleton).As(); if (mainMenuView != null) { builder.RegisterComponent(mainMenuView).As(); } else { builder.Register(Lifetime.Singleton).As(); } if (gameView != null) { builder.RegisterComponent(gameView).As(); } else { 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(); } } }