using Models; using Models.Interfaces; using Presenter; using ScriptableObjects; using Services; using Services.Interfaces; using UnityEngine; using VContainer; using VContainer.Unity; using Views; namespace Scopes { public class LevelLifetimeScope : LifetimeScope { [SerializeField] private GameVariables gameVariables; [SerializeField] private Transform gemsHolder; protected override void Configure(IContainerBuilder builder) { builder.RegisterInstance(this.gameVariables); builder.RegisterInstance(this.gemsHolder); builder.RegisterComponentInHierarchy(); builder.Register(c => new GameBoard(this.gameVariables.width, this.gameVariables.height), Lifetime.Scoped); builder.Register(Lifetime.Scoped); builder.Register(Lifetime.Scoped); builder.Register>(c => new ObjectPoolService(this.gameVariables.gemsPrefabs, this.gemsHolder), Lifetime.Scoped); builder.Register(Lifetime.Scoped); builder.Register(Lifetime.Scoped).AsImplementedInterfaces(); builder.RegisterEntryPoint(); } } }