public async Task Test() { var server = StartServerDummyTicker(); IEntity human = null; IEntity uniform = null; IEntity idCard = null; IEntity pocketItem = null; InventoryComponent inventory = null; server.Assert(() => { var mapMan = IoCManager.Resolve <IMapManager>(); mapMan.CreateNewMapEntity(MapId.Nullspace); var entityMan = IoCManager.Resolve <IEntityManager>(); human = entityMan.SpawnEntity("HumanMob_Content", MapCoordinates.Nullspace); uniform = entityMan.SpawnEntity("JanitorUniform", MapCoordinates.Nullspace); idCard = entityMan.SpawnEntity("AssistantIDCard", MapCoordinates.Nullspace); pocketItem = entityMan.SpawnEntity("FlashlightLantern", MapCoordinates.Nullspace); var tooBigItem = entityMan.SpawnEntity("ToolboxEmergency", MapCoordinates.Nullspace); inventory = human.GetComponent <InventoryComponent>(); Assert.That(inventory.CanEquip(Slots.INNERCLOTHING, uniform)); // Can't equip any of these since no uniform! Assert.That(inventory.CanEquip(Slots.IDCARD, idCard), Is.False); Assert.That(inventory.CanEquip(Slots.POCKET1, pocketItem), Is.False); Assert.That(inventory.CanEquip(Slots.POCKET1, tooBigItem), Is.False); // This one fails either way. inventory.Equip(Slots.INNERCLOTHING, uniform); Assert.That(inventory.Equip(Slots.IDCARD, idCard)); Assert.That(inventory.Equip(Slots.POCKET1, pocketItem)); Assert.That(inventory.CanEquip(Slots.POCKET1, tooBigItem), Is.False); // Still failing! Assert.That(IsDescendant(idCard, human)); Assert.That(IsDescendant(pocketItem, human)); // Now drop the jumpsuit. inventory.Unequip(Slots.INNERCLOTHING); }); server.RunTicks(2); server.Assert(() => { // Items have been dropped! Assert.That(IsDescendant(uniform, human), Is.False); Assert.That(IsDescendant(idCard, human), Is.False); Assert.That(IsDescendant(pocketItem, human), Is.False); // Ensure everything null here. Assert.That(inventory.GetSlotItem(Slots.INNERCLOTHING), Is.Null); Assert.That(inventory.GetSlotItem(Slots.IDCARD), Is.Null); Assert.That(inventory.GetSlotItem(Slots.POCKET1), Is.Null); }); await server.WaitIdleAsync(); }
public async Task Test() { var options = new ServerIntegrationOptions { ExtraPrototypes = Prototypes }; var server = StartServer(options); EntityUid human = default; EntityUid uniform = default; EntityUid idCard = default; EntityUid pocketItem = default; InventoryComponent inventory = null; server.Assert(() => { var mapMan = IoCManager.Resolve <IMapManager>(); mapMan.CreateNewMapEntity(MapId.Nullspace); var entityMan = IoCManager.Resolve <IEntityManager>(); human = entityMan.SpawnEntity("HumanDummy", MapCoordinates.Nullspace); uniform = entityMan.SpawnEntity("UniformDummy", MapCoordinates.Nullspace); idCard = entityMan.SpawnEntity("IDCardDummy", MapCoordinates.Nullspace); pocketItem = entityMan.SpawnEntity("FlashlightDummy", MapCoordinates.Nullspace); var tooBigItem = entityMan.SpawnEntity("ToolboxDummy", MapCoordinates.Nullspace); inventory = entityMan.GetComponent <InventoryComponent>(human); Assert.That(inventory.CanEquip(Slots.INNERCLOTHING, uniform)); // Can't equip any of these since no uniform! Assert.That(inventory.CanEquip(Slots.IDCARD, idCard), Is.False); Assert.That(inventory.CanEquip(Slots.POCKET1, pocketItem), Is.False); Assert.That(inventory.CanEquip(Slots.POCKET1, tooBigItem), Is.False); // This one fails either way. inventory.Equip(Slots.INNERCLOTHING, uniform); Assert.That(inventory.Equip(Slots.IDCARD, idCard)); Assert.That(inventory.Equip(Slots.POCKET1, pocketItem)); Assert.That(inventory.CanEquip(Slots.POCKET1, tooBigItem), Is.False); // Still failing! Assert.That(IsDescendant(idCard, human)); Assert.That(IsDescendant(pocketItem, human)); // Now drop the jumpsuit. inventory.Unequip(Slots.INNERCLOTHING); }); server.RunTicks(2); server.Assert(() => { // Items have been dropped! Assert.That(IsDescendant(uniform, human), Is.False); Assert.That(IsDescendant(idCard, human), Is.False); Assert.That(IsDescendant(pocketItem, human), Is.False); // Ensure everything null here. Assert.That(inventory.GetSlotItem(Slots.INNERCLOTHING), Is.Null); Assert.That(inventory.GetSlotItem(Slots.IDCARD), Is.Null); Assert.That(inventory.GetSlotItem(Slots.POCKET1), Is.Null); }); await server.WaitIdleAsync(); }