private void InventoryPropItem_Click(object sender, EventArgs e) { var currentItemViewModel = (PropItemVm)sender; _transferMachine.TransferProp(currentItemViewModel.Prop, PropTransferMachineStores.Inventory, PropTransferMachineStores.Container); }
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(); }
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 }); }
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>(); }
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)); }
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 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(); }
// ReSharper disable once UnusedMember.Global public void TakeAllButton_Click() { var props = _transferMachine.Container.CalcActualItems(); foreach (var prop in props) { _transferMachine.TransferProp(prop, _transferMachine.Container, _transferMachine.Inventory); } 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(); }
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); }