using VContainer; using VContainer.Unity; using UnityEngine; using Darkmatter.Core; using Darkmatter.Presentation; using Darkmatter.Domain; using System.Collections.Generic; namespace Darkmatter.App { public class GameLifetimeScope : LifetimeScope { [SerializeField] private InputReaderSO inputReader; [SerializeField] private PlayerMotor playerMotor; [SerializeField] private PlayerAnimController playerAnim; [SerializeField] private PlayerConfigSO playerConfig; [SerializeField] private EnemyConfigSO enemyConfig; [SerializeField] private CameraConfigSO cameraConfig; [SerializeField] private CameraService camService; [SerializeField] private GunWeapon gunWeapon; [SerializeField] private PlayerAimTargetProvider TargetProvider; [Header("Factory parameters")] [SerializeField] private Transform playerTransform; [SerializeField] private GameObject fatZombie; [SerializeField] private GameObject SlimZombie; [SerializeField] private List patrolPoints; [SerializeField] private EnemiesSpawnner spawnner; private readonly IObjectResolver resolver; protected override void Configure(IContainerBuilder builder) { builder.RegisterEntryPoint(Lifetime.Scoped); builder.RegisterComponent(playerAnim); builder.RegisterComponent(inputReader); builder.RegisterComponent(playerMotor); builder.RegisterComponent(TargetProvider); builder.RegisterComponent(playerConfig); builder.RegisterComponent(cameraConfig); builder.RegisterComponent(enemyConfig); builder.RegisterComponent(camService); builder.RegisterComponent(gunWeapon); builder.RegisterComponent(spawnner); builder.Register(Lifetime.Scoped); builder.Register(Lifetime.Scoped); builder.Register(c => new EnemyFactory( playerTransform, patrolPoints, fatZombie, SlimZombie, c.Resolve(), enemyConfig), // <-- inject resolver properly Lifetime.Scoped); } } }