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)); }
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>(); }
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 }); }
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); } }
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(); }
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(); }
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); }
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)); }
#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()); }
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); }
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(); }
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); } }
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(); }
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); } }
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); }
// 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); }