Files
MobileShooter/Assets/Darkmatter/Code/App/Installers/GameLifetimeScope.cs
2025-12-31 18:23:11 -08:00

70 lines
2.5 KiB
C#

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<Transform> patrolPoints;
[SerializeField] private EnemiesSpawnner spawnner;
private readonly IObjectResolver resolver;
protected override void Configure(IContainerBuilder builder)
{
builder.RegisterEntryPoint<PlayerController>(Lifetime.Scoped);
builder.RegisterComponent<IPlayerAnim>(playerAnim);
builder.RegisterComponent<IInputReader>(inputReader);
builder.RegisterComponent<IPlayerPawn>(playerMotor);
builder.RegisterComponent<ITargetProvider>(TargetProvider);
builder.RegisterComponent(playerConfig);
builder.RegisterComponent(cameraConfig);
builder.RegisterComponent(enemyConfig);
builder.RegisterComponent<ICameraService>(camService);
builder.RegisterComponent<IReloadableWeapon>(gunWeapon);
builder.RegisterComponent(spawnner);
//builder.RegisterComponentInHierarchy<IEnemyAnimController>();
//builder.RegisterComponentInHierarchy<IEnemyPawn>();
builder.Register<PlayerStateMachine>(Lifetime.Scoped);
builder.Register<EnemyStateMachine>(Lifetime.Scoped);
builder.Register<IEnemyFactory>(container =>
new EnemyFactory(
playerTransform,
patrolPoints,
fatZombie,
SlimZombie,
resolver),
Lifetime.Scoped);
}
}
}