Esempio n. 1
0
    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;
    }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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>();
        }
Esempio n. 4
0
        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;
        }
Esempio n. 5
0
    private void InitServices()
    {
        SectorNode = _humanPlayer.SectorNode;

        _staticObjectManager = SectorNode.Sector.StaticObjectManager;

        _staticObjectManager.Added   += StaticObjectManager_Added;
        _staticObjectManager.Removed += StaticObjectManager_Removed;

        SectorNode.Sector.TrasitionUsed += Sector_HumanGroupExit;
    }
Esempio n. 6
0
 public FowContext(ISectorMap sectorMap, IStaticObjectManager staticObjectManager)
 {
     _sectorMap           = sectorMap ?? throw new ArgumentNullException(nameof(sectorMap));
     _staticObjectManager = staticObjectManager ?? throw new ArgumentNullException(nameof(staticObjectManager));
 }