public void CanSwapItemToItem() { // Arrange const string testName = "CanSwapItemToItem"; SetupScenario(testName, out var lifecycleManager, out var nodeConfigs); CreatePlayer(testName, nodeConfigs[0], lifecycleManager, out var player); CreateItem(TutorialScanner.Archetype.Name, nodeConfigs[0], lifecycleManager, out var item1, out var item1ContainerIndex, out var item1Container); CreateItem(TutorialScanner.Archetype.Name, nodeConfigs[0], lifecycleManager, out var item2, out var item2ContainerIndex, out var item2Container); AssignToPlayer(player.Entity.Id, item2.Entity.Id, lifecycleManager, out var playerTuple); // Assert Not Swapped and correctly assigned Assert.AreEqual(item1Container.Item, item1.Entity.Id); Assert.AreNotEqual(item2Container.Item, item2.Entity.Id); // Act var swapCommand = new SwapInventoryItemCommand { PlayerId = player.Entity.Id, SubsystemId = nodeConfigs[0].EntityId, InventoryItemId = item2.Entity.Id, ContainerId = item1ContainerIndex, SubsystemItemId = item1.Entity.Id, }; lifecycleManager.ECSRoot.ECS.EnqueueCommand(swapCommand); lifecycleManager.ECSRoot.ECS.Tick(); // Assert Swapped Assert.AreEqual(item1Container.Item, item2.Entity.Id); Assert.AreEqual(playerTuple.Component2.Items[0].Item.Value, item1.Entity.Id); }
public void CanSwapItemToEmptyInventory() { // Arrange const string testName = "CanSwapItemToEmptyInventory"; SetupScenario(testName, out var lifecycleManager, out var nodeConfigs); CreatePlayer(testName, nodeConfigs[0], lifecycleManager, out var player); CreateItem(TutorialScanner.Archetype.Name, nodeConfigs[0], lifecycleManager, out var item1, out var item1ContainerIndex, out var item1Container); GetSubsystemItemStorage(nodeConfigs[0], lifecycleManager, out var subsystemItemStorage); Assert.AreEqual(subsystemItemStorage.Component2.Items[0].Item.Value, item1.Entity.Id); Assert.IsNull(subsystemItemStorage.Component2.Items[2].Item); Assert.IsNull(subsystemItemStorage.Component2.Items[3].Item); // Act var swapCommand = new SwapInventoryItemCommand { PlayerId = player.Entity.Id, SubsystemId = nodeConfigs[0].EntityId, InventoryItemId = null, ContainerId = item1ContainerIndex, SubsystemItemId = item1.Entity.Id, }; lifecycleManager.ECSRoot.ECS.EnqueueCommand(swapCommand); lifecycleManager.ECSRoot.ECS.Tick(); GetPlayerTuple(player.Entity.Id, lifecycleManager, out var playerTuple); // Assert Swapped Assert.IsNull(item1Container.Item); Assert.AreEqual(playerTuple.Component2.Items[0].Item.Value, item1.Entity.Id); }
public static void SwapInventoryItem(int subsystemItemid, int subsystemContainerId, int inventoryItemId) { Log($"Request SwapInventoryItem fromItem: {inventoryItemId} to: {subsystemItemid}"); var command = new SwapInventoryItemCommand { PlayerId = Director.Player.Id, SubsystemId = Director.Player.CurrentLocationEntity.Id, SubsystemItemId = subsystemItemid, ContainerId = subsystemContainerId, InventoryItemId = inventoryItemId }; IssueCommand(command); }
public void CantSwapOnAnotherSystem() { // Arrange const string testName = "CantSwapOnAnotherSystem"; SetupScenario(testName, out var lifecycleManager, out var nodeConfigs); CreatePlayer(testName, nodeConfigs[0], lifecycleManager, out var player); CreateItem(TutorialScanner.Archetype.Name, nodeConfigs[1], lifecycleManager, out var item1, out var item1ContainerIndex, out var item1Container); CreateItem(TutorialScanner.Archetype.Name, nodeConfigs[0], lifecycleManager, out var item2, out var item2ContainerIndex, out var item2Container); AssignToPlayer(player.Entity.Id, item2.Entity.Id, lifecycleManager, out var playerTuple); GetSubsystemItemStorage(nodeConfigs[0], lifecycleManager, out var subsystem1ItemStorage); GetSubsystemItemStorage(nodeConfigs[1], lifecycleManager, out var subsystem2ItemStorage); // Assert setup has 1 item in other system Assert.IsNull(subsystem1ItemStorage.Component2.Items[0].Item); Assert.IsNull(subsystem1ItemStorage.Component2.Items[1].Item); Assert.IsNull(subsystem1ItemStorage.Component2.Items[2].Item); Assert.IsNull(subsystem1ItemStorage.Component2.Items[3].Item); Assert.AreEqual(subsystem2ItemStorage.Component2.Items[0].Item, item1.Entity.Id); Assert.IsNull(subsystem2ItemStorage.Component2.Items[1].Item); Assert.IsNull(subsystem2ItemStorage.Component2.Items[2].Item); Assert.IsNull(subsystem2ItemStorage.Component2.Items[3].Item); // Act var swapCommand = new SwapInventoryItemCommand { PlayerId = player.Entity.Id, SubsystemId = nodeConfigs[0].EntityId, InventoryItemId = item2.Entity.Id, ContainerId = item2ContainerIndex, SubsystemItemId = item1.Entity.Id, }; lifecycleManager.ECSRoot.ECS.EnqueueCommand(swapCommand); lifecycleManager.ECSRoot.ECS.Tick(); // Assert still has 1 item in other system Assert.IsNull(subsystem1ItemStorage.Component2.Items[0].Item); Assert.IsNull(subsystem1ItemStorage.Component2.Items[1].Item); Assert.IsNull(subsystem1ItemStorage.Component2.Items[2].Item); Assert.IsNull(subsystem1ItemStorage.Component2.Items[3].Item); Assert.AreEqual(subsystem2ItemStorage.Component2.Items[0].Item, item1.Entity.Id); Assert.IsNull(subsystem2ItemStorage.Component2.Items[1].Item); Assert.IsNull(subsystem2ItemStorage.Component2.Items[2].Item); Assert.IsNull(subsystem2ItemStorage.Component2.Items[3].Item); }
public void CantSwapUnreleasableWithReleasableItem() { // Arrange const string testName = "CantSwapUnreleasableWithReleasableItem"; var nodeConfigs = new[] { new NodeConfig( 0, 0, AntivirusWorkstation.Archetype), new NodeConfig( 0, 1, SubsystemNode.Archetype), }; SetupScenario(testName, out var lifecycleManager, nodeConfigs); CreatePlayer(testName, nodeConfigs[0], lifecycleManager, out var player); CreateItem(TutorialScanner.Archetype.Name, nodeConfigs[0], lifecycleManager, out var item2, out var item2ContainerIndex, out var item2Container); AssignToPlayer(player.Entity.Id, item2.Entity.Id, lifecycleManager, out var playerTuple); GetSubsystemItemStorage(nodeConfigs[0], lifecycleManager, out var subsystem1ItemStorage); var item1ContainerIndex = 0; var item1Id = subsystem1ItemStorage.Component2.Items[item1ContainerIndex].Item; // Assert items are in correct locatioons Assert.NotNull(subsystem1ItemStorage.Component2.Items[0].Item); Assert.Null(subsystem1ItemStorage.Component2.Items[1].Item); Assert.AreEqual(subsystem1ItemStorage.Component2.Items[0].Item.Value, item1Id); // Act var swapCommand = new SwapInventoryItemCommand { PlayerId = player.Entity.Id, SubsystemId = nodeConfigs[0].EntityId, InventoryItemId = item2.Entity.Id, ContainerId = item2ContainerIndex, SubsystemItemId = item1Id.Value, }; lifecycleManager.ECSRoot.ECS.EnqueueCommand(swapCommand); lifecycleManager.ECSRoot.ECS.Tick(); // Assert items are still in original locations Assert.AreEqual(subsystem1ItemStorage.Component2.Items[0].Item.Value, item1Id); Assert.AreEqual(playerTuple.Component2.Items[0].Item.Value, item2.Entity.Id); }