56 lines
2.2 KiB
C#
56 lines
2.2 KiB
C#
using Code.App.Loading;
|
|
using Code.Gameplay.Enemies;
|
|
using Code.Gameplay.Orders.Order;
|
|
using Code.Gameplay.Player;
|
|
using Code.Generator;
|
|
using Code.Scenes;
|
|
using Code.Scenes.SceneEnvironments;
|
|
using Cysharp.Threading.Tasks;
|
|
using Reflex.Core;
|
|
using UnityEngine;
|
|
using IPlayerScore = Code.Gameplay.Player.IPlayerScore;
|
|
|
|
namespace Code.App.SceneInstallers
|
|
{
|
|
public class GameplaySceneInstaller : MonoBehaviour, IInstaller
|
|
{
|
|
[SerializeField] private GameplaySceneEnvironment _gameplaySceneEnvironment;
|
|
|
|
public void InstallBindings(ContainerBuilder containerBuilder)
|
|
{
|
|
containerBuilder.AddScoped(typeof(GameplaySceneEnvironment), typeof(CurrentSceneEnvironment));
|
|
containerBuilder.AddScoped(typeof(PlayerScore), typeof(IPlayerScore));
|
|
containerBuilder.AddScoped(typeof(OrderService), typeof(IOrderService));
|
|
containerBuilder.AddScoped(typeof(RoomGeneratorFactory), typeof(IRoomGeneratorFactory));
|
|
containerBuilder.AddScoped(typeof(PlayerProvider), typeof(IPlayerProvider));
|
|
containerBuilder.AddScoped(typeof(PlayerFactory), typeof(IPlayerFactory));
|
|
containerBuilder.AddScoped(typeof(EnemyFactory), typeof(IEnemyFactory));
|
|
containerBuilder.AddScoped(typeof(RoomGenerator));
|
|
|
|
containerBuilder.OnContainerBuilt += Initialize;
|
|
}
|
|
|
|
private void Initialize(Container container)
|
|
{
|
|
ILoadingManager loadingManager = container.Resolve<ILoadingManager>();
|
|
|
|
GameplaySceneEnvironment env = (GameplaySceneEnvironment)container.Resolve<CurrentSceneEnvironment>();
|
|
|
|
env.TransitVariables(_gameplaySceneEnvironment);
|
|
|
|
loadingManager
|
|
.UnregisterLoading(LoadingWork.LoadScene);
|
|
|
|
LoadRooms(container,loadingManager).Forget();
|
|
}
|
|
|
|
private async UniTaskVoid LoadRooms(Container container, ILoadingManager loadingManager)
|
|
{
|
|
await container.Resolve<IRoomGeneratorFactory>().PreloadRooms(container.Resolve<IOrderService>());
|
|
|
|
container.Resolve<RoomGenerator>().Initialize();
|
|
|
|
loadingManager.UnregisterLoading(LoadingWork.LoadModelResource);
|
|
}
|
|
}
|
|
} |