using UnityEngine; using VContainer; using VContainer.Unity; using YachtDice.Categories; using YachtDice.Economy; using YachtDice.Events; using YachtDice.Game; using YachtDice.Modifiers.Definition; using YachtDice.Modifiers.Pipeline; using YachtDice.Modifiers.Runtime; using YachtDice.Scoring; namespace YachtDice.DI { public class GameLifetimeScope : LifetimeScope { [SerializeField] private ModifierCatalogSO modifierCatalog; [SerializeField] private CategoryCatalog categoryCatalog; [Header("Scene References")] [SerializeField] private ScoringSystem scoringSystem; [SerializeField] private CurrencyBank currencyBank; [SerializeField] private GameManager gameManager; [SerializeField] private DiceManager diceManager; protected override void Configure(IContainerBuilder builder) { // SO catalogs builder.RegisterInstance(modifierCatalog); builder.RegisterInstance(categoryCatalog); // Core modifier services builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); // Scene MonoBehaviour components builder.RegisterComponent(scoringSystem); builder.RegisterComponent(currencyBank); builder.RegisterComponent(gameManager); builder.RegisterComponent(diceManager); } } }