private async Task <IActor> CreateSectorAsync() { if (_sectorServiceContainer != null && !_sectorServiceContainer.IsDisposed) { _sectorServiceContainer.Dispose(); } _sectorServiceContainer = _globalServiceContainer.BeginScope(); _startUp.ConfigureAux(_sectorServiceContainer); var schemeService = _globalServiceContainer.GetInstance <ISchemeService>(); var humanPlayer = _globalServiceContainer.GetInstance <HumanPlayer>(); var survivalRandomSource = _globalServiceContainer.GetInstance <ISurvivalRandomSource>(); var propFactory = _globalServiceContainer.GetInstance <IPropFactory>(); var scoreManager = _globalServiceContainer.GetInstance <IScoreManager>(); var gameLoop = _sectorServiceContainer.GetInstance <IGameLoop>(); var sectorManager = _sectorServiceContainer.GetInstance <ISectorManager>(); var botActorTaskSource = _sectorServiceContainer.GetInstance <IActorTaskSource>("bot"); var actorManager = _sectorServiceContainer.GetInstance <IActorManager>(); var monsterActorTaskSource = _sectorServiceContainer.GetInstance <IActorTaskSource>("monster"); await sectorManager.CreateSectorAsync(); sectorManager.CurrentSector.ScoreManager = scoreManager; sectorManager.CurrentSector.HumanGroupExit += CurrentSector_HumanGroupExit; gameLoop.ActorTaskSources = new[] { botActorTaskSource, monsterActorTaskSource }; var humanActor = CreateHumanActor(humanPlayer, schemeService, survivalRandomSource, propFactory, sectorManager, actorManager); return(humanActor); }
protected override void ConfigBotAux() { _startup.ConfigureAux(ServiceScope.ServiceProvider); }