Esempio n. 1
0
        public void TransferProp_ChangesResources_StoreEventsRaised()
        {
            // ARRANGE

            var resourceScheme = new TestPropScheme();

            // Инвентарь
            var inventory = new InventoryModule();

            inventory.Add(new Resource(resourceScheme, 1));

            // контейнер
            var containerProps = new IProp[] {
                new Resource(resourceScheme, 2)
            };

            var container = new FixedPropChest(containerProps);

            // трансферная машина
            var transferMachine = new PropTransferMachine(inventory, container.Content);

            // ACT
            using var monitorInventory = transferMachine.Inventory.Monitor();
            using var monitorContainer = transferMachine.Container.Monitor();
            var transferResource = new Resource(resourceScheme, 1);

            transferMachine.TransferProp(transferResource,
                                         PropTransferMachineStores.Container,
                                         PropTransferMachineStores.Inventory);

            // ASSERT
            monitorInventory.Should().Raise(nameof(PropTransferStore.Changed));
            monitorContainer.Should().Raise(nameof(PropTransferStore.Changed));
        }
Esempio n. 2
0
        public void TransferProp_Equipment()
        {
            // ARRANGE

            var equipmentScheme = new TestPropScheme
            {
                Equip = new TestPropEquipSubScheme()
            };

            // Инвентарь
            var inventory = new InventoryModule();

            // контейнер
            var containerProps = new IProp[] {
                new Equipment(equipmentScheme, System.Array.Empty <ITacticalActScheme>())
            };

            var container = new FixedPropChest(containerProps);

            // трансферная машина
            var transferMachine = new PropTransferMachine(inventory, container.Content);

            // ACT
            var transferResource = containerProps.First();

            transferMachine.TransferProp(transferResource,
                                         PropTransferMachineStores.Container,
                                         PropTransferMachineStores.Inventory);

            // ASSERT
            transferMachine.Inventory.PropAdded[0].Should().BeOfType <Equipment>();
            transferMachine.Container.PropRemoved[0].Should().BeOfType <Equipment>();
        }
Esempio n. 3
0
        protected override TextButton[] InitItems(IProp prop)
        {
            var menuButton = new TextButton(_menuTitle, _uiContentStorage.GetMenuItemTexture(),
                                            _uiContentStorage.GetMenuItemFont(),
                                            new Rectangle(
                                                MENU_MARGIN + _position.X,
                                                MENU_MARGIN + _position.Y + (0 * MENU_ITEM_HEIGHT),
                                                MENU_WIDTH,
                                                MENU_ITEM_HEIGHT));

            menuButton.OnClick += (s, e) =>
            {
                var transferCommand = _serviceProvider.GetRequiredService <PropTransferCommand>();
                var commandPool     = _serviceProvider.GetRequiredService <ICommandPool>();

                var transferMachine = new PropTransferMachine(_inventoryStore, _containerStore);
                transferMachine.TransferProp(prop, _sourceStore, _targetStore);
                transferCommand.TransferMachine = transferMachine;

                commandPool.Push(transferCommand);
                IsCommandUsed = true;
                CloseMenu();
            };

            return(new[] { menuButton });
        }
Esempio n. 4
0
    private void PlayerActorOnOpenedContainer(object sender, OpenContainerEventArgs e)
    {
        var actor = sender as IActor;

        if (!(e.Result is SuccessOpenContainerResult))
        {
            Debug.Log($"Не удалось открыть контейнер {e.Container}.");
        }

        var props = e.Container.Content.CalcActualItems();

        if (props.Any())
        {
            var containerPopupObj = _container.InstantiatePrefab(ContainerPopupPrefab, WindowCanvas.transform);

            var containerPopup = containerPopupObj.GetComponent <ContainerPopup>();

            var transferMachine = new PropTransferMachine(actor.Person.Inventory, e.Container.Content);
            containerPopup.Init(transferMachine);
        }
        else
        {
            var indicator = Instantiate <FoundNothingIndicator>(FoundNothingIndicatorPrefab, transform);

            var actorViewModel = ActorViewModels.SingleOrDefault(x => x.Actor == actor);

            indicator.Init(actorViewModel);
        }
    }
Esempio n. 5
0
        public void WhenЯЗабираюИзСундукаРерурсWaterВКоличестве(string resourceSid, int count)
        {
            var propFactory         = _context.Container.GetInstance <IPropFactory>();
            var playerState         = _context.Container.GetInstance <IPlayerState>();
            var propTransferCommand = _context.Container.GetInstance <ICommand>("prop-transfer");

            var actor     = _context.GetActiveActor();
            var container = ((IContainerViewModel)playerState.HoverViewModel).Container;

            var transferMachine = new PropTransferMachine(actor.Person.Inventory, container.Content);

            ((PropTransferCommand)propTransferCommand).TransferMachine = transferMachine;

            var resource = container.Content.CalcActualItems()
                           .OfType <Resource>()
                           .Single(x => x.Scheme.Sid == resourceSid);

            Resource takenResource;

            if (resource.Count > count)
            {
                takenResource = propFactory.CreateResource(resource.Scheme, count);
            }
            else
            {
                takenResource = resource;
            }


            transferMachine.TransferProp(takenResource, container.Content, actor.Person.Inventory);

            propTransferCommand.Execute();
        }
Esempio n. 6
0
        public void WhenЯЗабираюИзСундукаРерурсWaterВКоличестве(string resourceSid, int count)
        {
            var propFactory         = Context.ServiceProvider.GetRequiredService <IPropFactory>();
            var playerState         = Context.ServiceProvider.GetRequiredService <ISectorUiState>();
            var propTransferCommand = Context.ServiceProvider.GetRequiredService <PropTransferCommand>();

            var actor     = Context.GetActiveActor();
            var container = ((IContainerViewModel)playerState.HoverViewModel).StaticObject;

            var transferMachine = new PropTransferMachine(actor.Person.GetModule <IInventoryModule>(),
                                                          container.GetModule <IPropContainer>().Content);

            propTransferCommand.TransferMachine = transferMachine;

            var resource = container.GetModule <IPropContainer>().Content.CalcActualItems()
                           .OfType <Resource>()
                           .Single(x => x.Scheme.Sid == resourceSid);

            Resource takenResource;

            if (resource.Count > count)
            {
                takenResource = propFactory.CreateResource(resource.Scheme, count);
            }
            else
            {
                takenResource = resource;
            }

            transferMachine.TransferProp(takenResource,
                                         PropTransferMachineStore.Container,
                                         PropTransferMachineStore.Inventory);

            propTransferCommand.Execute();
        }
Esempio n. 7
0
        public void TransferProp_Resources()
        {
            // ARRANGE

            var resourceScheme = new TestPropScheme();

            // Инвентарь
            var inventory = new InventoryModule();

            // контейнер
            var containerProps = new IProp[] {
                new Resource(resourceScheme, 1)
            };

            var container = new FixedPropChest(containerProps);

            // трансферная машина
            var transferMachine = new PropTransferMachine(inventory, container.Content);

            // ACT
            var transferResource = new Resource(resourceScheme, 1);

            transferMachine.TransferProp(transferResource,
                                         PropTransferMachineStores.Container,
                                         PropTransferMachineStores.Inventory);

            // ASSERT
            transferMachine.Inventory.PropAdded[0].Should().BeOfType <Resource>();
            var invResource = (Resource)transferMachine.Inventory.PropAdded[0];

            invResource.Count.Should().Be(1);
        }
Esempio n. 8
0
        public void TransferProp_Equipment_StoreEventsRaised()
        {
            // ARRANGE

            var equipmentScheme = new TestPropScheme
            {
                Equip = new TestPropEquipSubScheme()
            };

            // Инвентарь
            var inventory = new InventoryModule();

            // контейнер
            var containerProps = new IProp[] {
                new Equipment(equipmentScheme, System.Array.Empty <ITacticalActScheme>())
            };

            var container = new FixedPropChest(containerProps);

            // трансферная машина
            var transferMachine = new PropTransferMachine(inventory, container.Content);

            // ACT
            using var monitorInventory = transferMachine.Inventory.Monitor();
            using var monitorContainer = transferMachine.Container.Monitor();
            var transferResource = containerProps.First();

            transferMachine.TransferProp(transferResource,
                                         PropTransferMachineStores.Container,
                                         PropTransferMachineStores.Inventory);

            // ASSERT
            monitorInventory.Should().Raise(nameof(PropTransferStore.Added));
            monitorContainer.Should().Raise(nameof(PropTransferStore.Removed));
        }
Esempio n. 9
0
#pragma warning restore 649
    // ReSharper restore UnassignedField.Global
    // ReSharper restore NotNullMemberIsNotInitialized

    public void Init(PropTransferMachine transferMachine)
    {
        _transferMachine = transferMachine;

        ((PropTransferCommand)_propTransferCommand).TransferMachine = transferMachine;

        UpdateProps();
    }
        protected override void RegisterSpecificServices(IMap testMap, Mock <ISectorUiState> playerStateMock)
        {
            var inventory       = CreateStore();
            var container       = CreateStore();
            var transferMachine = new PropTransferMachine(inventory, container);

            Container.Register(factory => transferMachine, new PerContainerLifetime());
            Container.Register <PropTransferCommand>(new PerContainerLifetime());
        }
Esempio n. 11
0
        public override void Execute()
        {
            var inventory = _playerState.ActiveActor.Actor.Person.Inventory;
            var targetContainerViewModel = _playerState.HoverViewModel as IContainerViewModel;
            var container        = targetContainerViewModel.Container;
            var containerContent = container.Content;
            var transferMachine  = new PropTransferMachine(inventory, containerContent);

            ModalManager.ShowContainerModal(transferMachine);
        }
Esempio n. 12
0
        public override void Execute()
        {
            var inventory = _playerState.ActiveActor.Actor.Person.GetModule <IInventoryModule>();
            var targetContainerViewModel = (IContainerViewModel)_playerState.HoverViewModel;
            var container        = targetContainerViewModel.StaticObject;
            var containerContent = container.GetModule <IPropContainer>().Content;
            var transferMachine  = new PropTransferMachine(inventory, containerContent);

            ModalManager.ShowContainerModal(transferMachine);
        }
        public void Init(PropTransferMachine transferMachine)
        {
            ContainerViewModels = new List <PropItemVm>();

            TransferMachine = transferMachine;

            ((PropTransferCommand)_propTransferCommand).TransferMachine = transferMachine;

            UpdateProps();
            TakeAll();
        }
#pragma warning restore 649
    // ReSharper restore UnassignedField.Global
    // ReSharper restore NotNullMemberIsNotInitialized

    public void Init(PropTransferMachine transferMachine)
    {
        _inventoryViewModels = new List <PropItemVm>();
        _containerViewModels = new List <PropItemVm>();

        _transferMachine = transferMachine;

        ((PropTransferCommand)_propTransferCommand).TransferMachine = transferMachine;

        UpdateProps();
    }
Esempio n. 15
0
        public void WhenЯЗабираюИзСундукаЭкипировкуPistol(string equipmentSchemeSid)
        {
            var playerState         = _context.Container.GetInstance <IPlayerState>();
            var propTransferCommand = _context.Container.GetInstance <ICommand>("prop-transfer");

            var actor     = _context.GetActiveActor();
            var container = ((IContainerViewModel)playerState.HoverViewModel).Container;

            var transferMachine = new PropTransferMachine(actor.Person.Inventory, container.Content);

            ((PropTransferCommand)propTransferCommand).TransferMachine = transferMachine;

            var equipment = container.Content.CalcActualItems().Single(x => x.Scheme.Sid == equipmentSchemeSid);

            transferMachine.TransferProp(equipment, container.Content, actor.Person.Inventory);

            propTransferCommand.Execute();
        }
        public void TransferProp_InventoryHasEquipment_StoreEventsRaised()
        {
            // ARRANGE

            var equipmentScheme = new TestPropScheme
            {
                Equip = new TestPropEquipSubScheme()
            };

            // Инвентарь
            var inventory = new Inventory();

            inventory.Add(new Equipment(equipmentScheme, new ITacticalActScheme[0]));

            // контейнер
            var containerProps = new IProp[] {
                new Equipment(equipmentScheme, new ITacticalActScheme[0])
            };
            var nodeMock  = new Mock <IMapNode>();
            var node      = nodeMock.Object;
            var container = new FixedPropChest(node, containerProps);

            // трансферная машина
            var transferMachine = new PropTransferMachine(inventory, container.Content);



            // ACT
            using (var monitorInventory = transferMachine.Inventory.Monitor())
                using (var monitorContainer = transferMachine.Container.Monitor())
                {
                    var transferResource = containerProps.First();
                    transferMachine.TransferProp(transferResource,
                                                 PropTransferMachineStores.Container,
                                                 PropTransferMachineStores.Inventory);



                    // ASSERT
                    monitorInventory.Should().Raise(nameof(PropTransferStore.Added));
                    monitorContainer.Should().Raise(nameof(PropTransferStore.Removed));
                }
        }
        public void TransferProp_Resources_StoreEventsRaised()
        {
            // ARRANGE

            var resourceScheme = new TestPropScheme();
            var resource       = new Resource(resourceScheme, 1);

            // Инвентарь
            var inventory = new Inventory();

            // контейнер
            var containerProps = new IProp[]
            {
                resource
            };
            var nodeMock  = new Mock <IMapNode>();
            var node      = nodeMock.Object;
            var container = new FixedPropChest(node, containerProps);

            // трансферная машина
            var transferMachine = new PropTransferMachine(inventory, container.Content);



            // ACT
            using (var monitorInventory = transferMachine.Inventory.Monitor())
                using (var monitorContainer = transferMachine.Container.Monitor())
                {
                    var transferResource = new Resource(resourceScheme, 1);
                    transferMachine.TransferProp(transferResource,
                                                 PropTransferMachineStores.Container,
                                                 PropTransferMachineStores.Inventory);



                    // ASSERT
                    monitorInventory.Should().Raise(nameof(PropTransferStore.Added))
                    .WithArgs <PropStoreEventArgs>(args => args.Props[0].Scheme == resource.Scheme);
                    monitorContainer.Should().Raise(nameof(PropTransferStore.Removed))
                    .WithArgs <PropStoreEventArgs>(args => args.Props[0].Scheme == resource.Scheme);
                }
        }
Esempio n. 18
0
        public void WhenЯЗабираюИзСундукаЭкипировкуPistol(string equipmentSchemeSid)
        {
            var playerState         = Context.ServiceProvider.GetRequiredService <ISectorUiState>();
            var propTransferCommand = Context.ServiceProvider.GetRequiredService <PropTransferCommand>();

            var actor     = Context.GetActiveActor();
            var container = ((IContainerViewModel)playerState.HoverViewModel).StaticObject;

            var transferMachine = new PropTransferMachine(actor.Person.GetModule <IInventoryModule>(), container.GetModule <IPropContainer>().Content);

            propTransferCommand.TransferMachine = transferMachine;

            var equipment = container.GetModule <IPropContainer>().Content.CalcActualItems().Single(x => x.Scheme.Sid == equipmentSchemeSid);

            transferMachine.TransferProp(equipment,
                                         PropTransferMachineStores.Container,
                                         PropTransferMachineStores.Inventory);

            propTransferCommand.Execute();
        }
Esempio n. 19
0
    private void ShowFoundPropsModalOrNotFound(IActor actor, IPropContainer propContainer)
    {
        var props = propContainer.Content.CalcActualItems();

        if (props.Any())
        {
            var containerPopupObj = _container.InstantiatePrefab(ContainerPopupPrefab, WindowCanvas.transform);

            var containerPopup = containerPopupObj.GetComponent <ContainerPopup>();

            var transferMachine = new PropTransferMachine(actor.Person.GetModule <IInventoryModule>(),
                                                          propContainer.Content);
            containerPopup.Init(transferMachine);
        }
        else
        {
            var indicator = Instantiate(FoundNothingIndicatorPrefab, transform);
            indicator.CurrentLanguage = _uiSettingService.CurrentLanguage;

            var actorViewModel = ActorViewModels.SingleOrDefault(x => x.Actor == actor);

            indicator.Init(actorViewModel);
        }
    }
Esempio n. 20
0
        public void TransferPropTest()
        {
            // ARRANGE

            var resourceScheme = new PropScheme();

            // Инвентарь
            var inventory = new Inventory();

            // контейнер
            var containerProps = new IProp[] {
                new Resource(resourceScheme, 1)
            };
            var nodeMock  = new Mock <IMapNode>();
            var node      = nodeMock.Object;
            var container = new FixedPropChest(node, containerProps);

            // трансферная машина
            var transferMachine = new PropTransferMachine(inventory, container.Content);



            // ACT
            var transferResource = new Resource(resourceScheme, 1);

            transferMachine.TransferProp(transferResource,
                                         transferMachine.Container,
                                         transferMachine.Inventory);


            // ASSERT
            transferMachine.Inventory.PropAdded[0].Should().BeOfType <Resource>();
            var invResource = (Resource)transferMachine.Inventory.PropAdded[0];

            invResource.Count.Should().Be(1);
        }
Esempio n. 21
0
        // ReSharper restore MemberCanBePrivate.Global
        // ReSharper restore UnassignedField.Global

#pragma warning restore 649

        public void ShowContainerModal(PropTransferMachine transferMachine)
        {
            var modalBody = CreateWindowHandler <ContainerModalBody>(ContainerModalPrefab.gameObject);

            modalBody.Init(transferMachine);
        }