示例#1
0
        public void TestInsertion()
        {
            var owner     = EntityManager.SpawnEntity("dummy");
            var inserted  = EntityManager.SpawnEntity("dummy");
            var transform = inserted.Transform;

            var container = ContainerManagerComponent.Create <Container>("dummy", owner);

            Assert.That(container.Insert(inserted), Is.True);
            Assert.That(transform.Parent.Owner, Is.EqualTo(owner));

            var container2 = ContainerManagerComponent.Create <Container>("dummy", inserted);

            Assert.That(container2.Insert(owner), Is.False);

            var success = container.Remove(inserted);

            Assert.That(success, Is.True);

            success = container.Remove(inserted);
            Assert.That(success, Is.False);

            container.Insert(inserted);
            owner.Delete();
            // Make sure inserted was detached.
            Assert.That(transform.IsMapTransform, Is.True);
        }
示例#2
0
        public void TestCreation()
        {
            var entity = EntityManager.SpawnEntity("dummy");

            var container = ContainerManagerComponent.Create <Container>("dummy", entity);

            Assert.That(container.ID, Is.EqualTo("dummy"));
            Assert.That(container.Owner, Is.EqualTo(entity));

            var manager = entity.GetComponent <IContainerManager>();

            Assert.That(container.Manager, Is.EqualTo(manager));
            Assert.That(() => ContainerManagerComponent.Create <Container>("dummy", entity), Throws.ArgumentException);

            Assert.That(manager.HasContainer("dummy2"), Is.False);
            var container2 = ContainerManagerComponent.Create <Container>("dummy2", entity);

            Assert.That(container2.Manager, Is.EqualTo(manager));
            Assert.That(container2.Owner, Is.EqualTo(entity));
            Assert.That(container2.ID, Is.EqualTo("dummy2"));

            Assert.That(manager.HasContainer("dummy"), Is.True);
            Assert.That(manager.HasContainer("dummy2"), Is.True);
            Assert.That(manager.HasContainer("dummy3"), Is.False);

            Assert.That(manager.GetContainer("dummy"), Is.EqualTo(container));
            Assert.That(manager.GetContainer("dummy2"), Is.EqualTo(container2));
            Assert.That(() => manager.GetContainer("dummy3"), Throws.TypeOf <KeyNotFoundException>());

            entity.Delete();

            Assert.That(manager.Deleted, Is.True);
            Assert.That(container.Deleted, Is.True);
            Assert.That(container2.Deleted, Is.True);
        }
示例#3
0
        public void TestNestedRemovalWithDenial()
        {
            var coordinates = new EntityCoordinates(new EntityUid(1), (0, 0));
            var entityOne   = EntityManager.SpawnEntity("dummy", coordinates);
            var entityTwo   = EntityManager.SpawnEntity("dummy", coordinates);
            var entityThree = EntityManager.SpawnEntity("dummy", coordinates);
            var entityItem  = EntityManager.SpawnEntity("dummy", coordinates);

            var container  = ContainerManagerComponent.Create <Container>("dummy", entityOne);
            var container2 = ContainerManagerComponent.Create <ContainerOnlyContainer>("dummy", entityTwo);
            var container3 = ContainerManagerComponent.Create <Container>("dummy", entityThree);

            Assert.That(container.Insert(entityTwo), Is.True);
            Assert.That(entityTwo.Transform.Parent !.Owner, Is.EqualTo(entityOne));

            Assert.That(container2.Insert(entityThree), Is.True);
            Assert.That(entityThree.Transform.Parent !.Owner, Is.EqualTo(entityTwo));

            Assert.That(container3.Insert(entityItem), Is.True);
            Assert.That(entityItem.Transform.Parent !.Owner, Is.EqualTo(entityThree));

            Assert.That(container3.Remove(entityItem), Is.True);
            Assert.That(container.Contains(entityItem), Is.True);
            Assert.That(entityItem.Transform.Parent !.Owner, Is.EqualTo(entityOne));

            entityOne.Delete();
            Assert.That(entityTwo.Transform.Deleted, Is.True);
        }
        /// <summary>
        ///     Adds a new slot to this inventory component.
        /// </summary>
        /// <param name="slot">The name of the slot to add.</param>
        /// <exception cref="InvalidOperationException">
        ///     Thrown if the slot with specified name already exists.
        /// </exception>
        public ContainerSlot AddSlot(Slots slot)
        {
            if (HasSlot(slot))
            {
                throw new InvalidOperationException($"Slot '{slot}' already exists.");
            }

            return(SlotContainers[slot] = ContainerManagerComponent.Create <ContainerSlot>(GetSlotString(slot), Owner));
        }
示例#5
0
        public void TestNestedRemoval()
        {
            var owner     = EntityManager.SpawnEntity("dummy", new EntityCoordinates(new EntityUid(1), (0, 0)));
            var inserted  = EntityManager.SpawnEntity("dummy", new EntityCoordinates(new EntityUid(1), (0, 0)));
            var transform = inserted.Transform;
            var entity    = EntityManager.SpawnEntity("dummy", new EntityCoordinates(new EntityUid(1), (0, 0)));

            var container = ContainerManagerComponent.Create <Container>("dummy", owner);

            Assert.That(container.Insert(inserted), Is.True);
            Assert.That(transform.Parent !.Owner, Is.EqualTo(owner));

            var container2 = ContainerManagerComponent.Create <Container>("dummy", inserted);

            Assert.That(container2.Insert(entity), Is.True);
            Assert.That(entity.Transform.Parent !.Owner, Is.EqualTo(inserted));

            Assert.That(container2.Remove(entity), Is.True);
            Assert.That(container.Contains(entity), Is.True);
            Assert.That(entity.Transform.Parent !.Owner, Is.EqualTo(owner));

            owner.Delete();
            Assert.That(transform.Deleted, Is.True);
        }
        public override void OnAdd()
        {
            base.OnAdd();

            storage = ContainerManagerComponent.Create <Container>("storagebase", Owner);
        }