private async Task InitServicesAsync() { var sectorNode = _humanPlayer.SectorNode; if (sectorNode == null) { var introLocationScheme = _schemeService.GetScheme <ILocationScheme>("intro"); var biom = await _biomeInitializer.InitBiomeAsync(introLocationScheme); sectorNode = biom.Sectors.Single(x => x.State == SectorNodeState.SectorMaterialized); } else if (sectorNode.State == SectorNodeState.SchemeKnown) { await _biomeInitializer.MaterializeLevelAsync(sectorNode); } _humanPlayer.BindSectorNode(sectorNode); await _sectorManager.CreateSectorAsync(); sectorNode.Sector.ScoreManager = _scoreManager; _staticObjectManager = sectorNode.Sector.StaticObjectManager; _staticObjectManager.Added += StaticObjectManager_Added; _staticObjectManager.Removed += StaticObjectManager_Removed; _playerState.TaskSource = _humanActorTaskSource; _sectorManager.CurrentSector.HumanGroupExit += Sector_HumanGroupExit; }
public static IStaticObject FindContainer(IActor actor, IStaticObjectManager staticObjectManager, ISectorMap map) { if (actor is null) { throw new ArgumentNullException(nameof(actor)); } if (staticObjectManager is null) { throw new ArgumentNullException(nameof(staticObjectManager)); } if (map is null) { throw new ArgumentNullException(nameof(map)); } var containerStaticObjects = staticObjectManager.Items .Where(x => x.HasModule <IPropContainer>()); var foundContainers = LootHelper.FindAvailableContainers(containerStaticObjects, actor.Node, map); var orderedContainers = foundContainers.OrderBy(x => map.DistanceBetween(actor.Node, x.Node)); var nearbyContainer = orderedContainers.FirstOrDefault(); return(nearbyContainer); }
public Sector(ISectorMap map, IActorManager actorManager, IStaticObjectManager staticObjectManager, IDropResolver dropResolver, ISchemeService schemeService, IEquipmentDurableService equipmentDurableService) { ActorManager = actorManager ?? throw new ArgumentNullException(nameof(actorManager)); StaticObjectManager = staticObjectManager ?? throw new ArgumentNullException(nameof(staticObjectManager)); _dropResolver = dropResolver ?? throw new ArgumentNullException(nameof(dropResolver)); _schemeService = schemeService ?? throw new ArgumentNullException(nameof(schemeService)); _equipmentDurableService = equipmentDurableService ?? throw new ArgumentNullException(nameof(equipmentDurableService)); _diseases = new List <IDisease>(); ActorManager.Added += ActorManager_Added; ActorManager.Removed += ActorManager_Remove; StaticObjectManager.Added += StaticObjectManager_Added; StaticObjectManager.Removed += StaticObjectManager_Remove; Map = map ?? throw new ArgumentException("Не передана карта сектора.", nameof(map)); PatrolRoutes = new Dictionary <IActor, IPatrolRoute>(); }
public DepositLifetimeModule(IStaticObjectManager staticObjectManager, IStaticObject parentStaticObject) { _staticObjectManager = staticObjectManager ?? throw new ArgumentNullException(nameof(staticObjectManager)); _parentStaticObject = parentStaticObject ?? throw new ArgumentNullException(nameof(parentStaticObject)); _depositModule = _parentStaticObject.GetModule <IPropDepositModule>(); _containerModule = _parentStaticObject.GetModule <IPropContainer>(); _depositModule.Mined += DepositModule_Mined; _containerModule.ItemsRemoved += ContainerModule_ItemsRemoved; }
private void InitServices() { SectorNode = _humanPlayer.SectorNode; _staticObjectManager = SectorNode.Sector.StaticObjectManager; _staticObjectManager.Added += StaticObjectManager_Added; _staticObjectManager.Removed += StaticObjectManager_Removed; SectorNode.Sector.TrasitionUsed += Sector_HumanGroupExit; }
public FowContext(ISectorMap sectorMap, IStaticObjectManager staticObjectManager) { _sectorMap = sectorMap ?? throw new ArgumentNullException(nameof(sectorMap)); _staticObjectManager = staticObjectManager ?? throw new ArgumentNullException(nameof(staticObjectManager)); }