public void BroadcastEquip(Pickupable pickupable, GameObject owner, string slot) { NitroxId ownerId = NitroxEntity.GetId(owner); NitroxId itemId = NitroxEntity.GetId(pickupable.gameObject); TechType techType = pickupable.GetTechType(); if (techType == TechType.VehicleStorageModule) { List <InteractiveChildObjectIdentifier> childIdentifiers = VehicleChildObjectIdentifierHelper.ExtractInteractiveChildren(owner); VehicleChildUpdate vehicleChildInteractiveData = new VehicleChildUpdate(ownerId, childIdentifiers); packetSender.Send(vehicleChildInteractiveData); } Transform parent = pickupable.gameObject.transform.parent; pickupable.gameObject.transform.SetParent(null); byte[] bytes = SerializationHelper.GetBytes(pickupable.gameObject); EquippedItemData equippedItem = new EquippedItemData(ownerId, itemId, bytes, slot, techType.ToDto()); Player player = owner.GetComponent <Player>(); if (player != null) { PlayerEquipmentAdded equipmentAdded = new PlayerEquipmentAdded(techType.ToDto(), equippedItem); packetSender.Send(equipmentAdded); pickupable.gameObject.transform.SetParent(parent); return; } ModuleAdded moduleAdded = new ModuleAdded(equippedItem); packetSender.Send(moduleAdded); pickupable.gameObject.transform.SetParent(parent); }
public void BroadcastEquip(Pickupable pickupable, GameObject owner, string slot) { string ownerGuid = GuidHelper.GetGuid(owner); string itemGuid = GuidHelper.GetGuid(pickupable.gameObject); pickupable.gameObject.transform.SetParent(null); // On Deserialized Function Try to find non-existent Parent set null to prevent that bug byte[] bytes = SerializationHelper.GetBytes(pickupable.gameObject); if (pickupable.GetTechType() == TechType.VehicleStorageModule) { List <InteractiveChildObjectIdentifier> childIdentifiers = VehicleChildObjectIdentifierHelper.ExtractGuidsOfInteractiveChildren(owner); VehicleChildUpdate vehicleChildInteractiveData = new VehicleChildUpdate(ownerGuid, childIdentifiers); packetSender.Send(vehicleChildInteractiveData); } EquippedItemData equippedItem = new EquippedItemData(ownerGuid, itemGuid, bytes, slot); Player player = owner.GetComponent <Player>(); bool isPlayerEquipment = (player != null); EquipmentAddItem equipPacket = new EquipmentAddItem(equippedItem, isPlayerEquipment); packetSender.Send(equipPacket); }
public void AddEquipment(EquippedItemData equipment) { lock (equippedItems) { equippedItems.Add(equipment); } }
public override void Process(ModuleAdded packet) { EquippedItemData equippedItemData = packet.EquippedItemData; GameObject gameObject = SerializationHelper.GetGameObject(equippedItemData.SerializedData); Optional <GameObject> opGameObject = NitroxEntity.GetObjectFrom(equippedItemData.ContainerId); if (!opGameObject.HasValue) { throw new Exception("Could not find equipment container for " + gameObject.name); } Pickupable pickupable = gameObject.RequireComponent <Pickupable>(); GameObject owner = opGameObject.Value; Optional <Equipment> opEquipment = EquipmentHelper.FindEquipmentComponent(owner); if (!opEquipment.HasValue) { throw new Exception("Could not find equipment type for " + gameObject.name); } Equipment equipment = opEquipment.Value; InventoryItem inventoryItem = new(pickupable); inventoryItem.container = equipment; inventoryItem.item.Reparent(equipment.tr); Dictionary <string, InventoryItem> itemsBySlot = equipment.equipment; itemsBySlot[equippedItemData.Slot] = inventoryItem; equipment.UpdateCount(pickupable.GetTechType(), true); Equipment.SendEquipmentEvent(pickupable, EQUIP_EVENT_TYPE_ID, owner, equippedItemData.Slot); equipment.NotifyEquip(equippedItemData.Slot, inventoryItem); }
public void AddModule(EquippedItemData equippedmodule) { lock (ModulesItemsById) { ModulesItemsById.Add(equippedmodule.ItemId, equippedmodule); } }
public void BroadcastEquip(Pickupable pickupable, GameObject owner, string slot) { string ownerGuid = GuidHelper.GetGuid(owner); string itemGuid = GuidHelper.GetGuid(pickupable.gameObject); // save current parent to prevent infinite oxygen when tank equipped above water #290 Transform parent = pickupable.gameObject.transform.parent; // set pickupable parent to null to prevent deserialized function throwing errors when packet get to other players pickupable.gameObject.transform.SetParent(null); byte[] bytes = SerializationHelper.GetBytes(pickupable.gameObject); if (pickupable.GetTechType() == TechType.VehicleStorageModule) { List <InteractiveChildObjectIdentifier> childIdentifiers = VehicleChildObjectIdentifierHelper.ExtractGuidsOfInteractiveChildren(owner); VehicleChildUpdate vehicleChildInteractiveData = new VehicleChildUpdate(ownerGuid, childIdentifiers); packetSender.Send(vehicleChildInteractiveData); } EquippedItemData equippedItem = new EquippedItemData(ownerGuid, itemGuid, bytes, slot); Player player = owner.GetComponent <Player>(); bool isPlayerEquipment = (player != null); EquipmentAddItem equipPacket = new EquipmentAddItem(equippedItem, isPlayerEquipment); packetSender.Send(equipPacket); // re-assign parent to prevent infinite oxygen #290 pickupable.gameObject.transform.SetParent(parent); }
public override void Process(EquipmentAddItem packet) { EquippedItemData equippedItemData = packet.EquippedItemData; GameObject gameObject = SerializationHelper.GetGameObject(equippedItemData.SerializedData); Pickupable pickupable = gameObject.RequireComponent <Pickupable>(); GameObject owner = GuidHelper.RequireObjectFrom(equippedItemData.ContainerGuid); Optional <Equipment> opEquipment = EquipmentHelper.GetBasedOnOwnersType(owner); if (opEquipment.IsPresent()) { Equipment equipment = opEquipment.Get(); InventoryItem inventoryItem = new InventoryItem(pickupable); inventoryItem.container = equipment; inventoryItem.item.Reparent(equipment.tr); Dictionary <string, InventoryItem> itemsBySlot = (Dictionary <string, InventoryItem>)equipment.ReflectionGet("equipment"); itemsBySlot[equippedItemData.Slot] = inventoryItem; equipment.ReflectionCall("UpdateCount", false, false, new object[] { pickupable.GetTechType(), true }); Equipment.SendEquipmentEvent(pickupable, EQUIP_EVENT_TYPE_ID, owner, equippedItemData.Slot); equipment.ReflectionCall("NotifyEquip", false, false, new object[] { equippedItemData.Slot, inventoryItem }); } else { Log.Error("Could not find equipment type for " + gameObject.name); } }
public void AddModule(EquippedItemData module) { lock (modules) { modules.Add(module); } }
public void AddModule(EquippedItemData equippedmodule) { lock (ModulesItemsByGuid) { ModulesItemsByGuid.Add(equippedmodule.Guid, equippedmodule); } }
public void AddEquipment(string playerName, EquippedItemData equippedItem) { lock (playersByPlayerName) { PersistedPlayerData playerData = playersByPlayerName[playerName]; playerData.EquippedItemsById.Add(equippedItem.ItemId, equippedItem); } }
public void BroadcastEquip(Pickupable pickupable, GameObject owner, string slot) { string ownerGuid = GuidHelper.GetGuid(owner); string itemGuid = GuidHelper.GetGuid(pickupable.gameObject); byte[] bytes = SerializationHelper.GetBytes(pickupable.gameObject); EquippedItemData equippedItem = new EquippedItemData(ownerGuid, itemGuid, bytes, slot); EquipmentAddItem equipPacket = new EquipmentAddItem(equippedItem); packetSender.Send(equipPacket); }
public override void Process(PlayerEquipmentAdded packet, Player player) { string playerName = player.Name; EquippedItemData equippedItem = packet.EquippedItem; playerData.AddEquipment(playerName, equippedItem); ushort playerId = player.Id; RemotePlayerEquipmentAdded equipmentAdded = new RemotePlayerEquipmentAdded(playerId, packet.TechType); playerManager.SendPacketToOtherPlayers(equipmentAdded, player); }
public void BroadcastEquip(Pickupable pickupable, GameObject owner, string slot) { string ownerGuid = GuidHelper.GetGuid(owner); string itemGuid = GuidHelper.GetGuid(pickupable.gameObject); byte[] bytes = SerializationHelper.GetBytes(pickupable.gameObject); EquippedItemData equippedItem = new EquippedItemData(ownerGuid, itemGuid, bytes, slot); Player player = owner.GetComponent <Player>(); bool isPlayerEquipment = (player != null); EquipmentAddItem equipPacket = new EquipmentAddItem(equippedItem, isPlayerEquipment); packetSender.Send(equipPacket); }
public void InventoryDataTest() { for (int serializerIndex = 0; serializerIndex < worldsDataAfter.Length; serializerIndex++) { PersistedWorldData worldDataAfter = worldsDataAfter[serializerIndex]; Assert.AreEqual(worldData.WorldData.InventoryData.InventoryItems.Count, worldDataAfter.WorldData.InventoryData.InventoryItems.Count, $"WorldData.InventoryData.InventoryItems.Count is not equal while using {serverSerializers[serializerIndex]}."); for (int index = 0; index < worldData.WorldData.InventoryData.InventoryItems.Count; index++) { ItemData itemData = worldData.WorldData.InventoryData.InventoryItems[index]; ItemData itemDataAfter = worldDataAfter.WorldData.InventoryData.InventoryItems[index]; Assert.AreEqual(itemData.ContainerId, itemDataAfter.ContainerId, $"WorldData.InventoryData.InventoryItems.ContainerId is not equal while using {serverSerializers[serializerIndex]}."); Assert.AreEqual(itemData.ItemId, itemDataAfter.ItemId, $"WorldData.InventoryData.InventoryItems.ItemId is not equal while using {serverSerializers[serializerIndex]}."); Assert.IsTrue(itemData.SerializedData.SequenceEqual(itemDataAfter.SerializedData), $"WorldData.InventoryData.InventoryItems.SerializedData is not equal while using {serverSerializers[serializerIndex]}."); } Assert.AreEqual(worldData.WorldData.InventoryData.StorageSlotItems.Count, worldDataAfter.WorldData.InventoryData.StorageSlotItems.Count, $"WorldData.InventoryData.StorageSlotItems.Count is not equal while using {serverSerializers[serializerIndex]}."); for (int index = 0; index < worldData.WorldData.InventoryData.StorageSlotItems.Count; index++) { ItemData itemData = worldData.WorldData.InventoryData.StorageSlotItems[index]; ItemData itemDataAfter = worldDataAfter.WorldData.InventoryData.StorageSlotItems[index]; Assert.AreEqual(itemData.ContainerId, itemDataAfter.ContainerId, $"WorldData.InventoryData.StorageSlotItems.ContainerId is not equal while using {serverSerializers[serializerIndex]}."); Assert.AreEqual(itemData.ItemId, itemDataAfter.ItemId, $"WorldData.InventoryData.StorageSlotItems.ItemId is not equal while using {serverSerializers[serializerIndex]}."); Assert.IsTrue(itemData.SerializedData.SequenceEqual(itemDataAfter.SerializedData), $"WorldData.InventoryData.StorageSlotItems.SerializedData is not equal while using {serverSerializers[serializerIndex]}."); } Assert.AreEqual(worldData.WorldData.InventoryData.Modules.Count, worldDataAfter.WorldData.InventoryData.Modules.Count, $"WorldData.InventoryData.Modules.Count is not equal while using {serverSerializers[serializerIndex]}."); for (int index = 0; index < worldData.WorldData.InventoryData.Modules.Count; index++) { EquippedItemData equippedItemData = worldData.WorldData.InventoryData.Modules[index]; EquippedItemData equippedItemDataAfter = worldDataAfter.WorldData.InventoryData.Modules[index]; Assert.AreEqual(equippedItemData.ContainerId, equippedItemDataAfter.ContainerId, $"WorldData.InventoryData.Modules.ContainerId is not equal while using {serverSerializers[serializerIndex]}."); Assert.AreEqual(equippedItemData.ItemId, equippedItemDataAfter.ItemId, $"WorldData.InventoryData.Modules.ItemId is not equal while using {serverSerializers[serializerIndex]}."); Assert.IsTrue(equippedItemData.SerializedData.SequenceEqual(equippedItemDataAfter.SerializedData), $"WorldData.InventoryData.Modules.SerializedData is not equal while using {serverSerializers[serializerIndex]}."); } } }
public void InventoryDataTest() { foreach (PersistedWorldData worldDataAfter in worldsDataAfter) { Assert.AreEqual(worldData.WorldData.InventoryData.InventoryItems.Count, worldDataAfter.WorldData.InventoryData.InventoryItems.Count, "WorldData.InventoryData.InventoryItems.Count is not equal"); for (int index = 0; index < worldData.WorldData.InventoryData.InventoryItems.Count; index++) { ItemData itemData = worldData.WorldData.InventoryData.InventoryItems[index]; ItemData itemDataAfter = worldDataAfter.WorldData.InventoryData.InventoryItems[index]; Assert.AreEqual(itemData.ContainerId, itemDataAfter.ContainerId, "WorldData.InventoryData.InventoryItems.ContainerId is not equal"); Assert.AreEqual(itemData.ItemId, itemDataAfter.ItemId, "WorldData.InventoryData.InventoryItems.ItemId is not equal"); Assert.IsTrue(itemData.SerializedData.SequenceEqual(itemDataAfter.SerializedData), "WorldData.InventoryData.InventoryItems.SerializedData is not equal"); } Assert.AreEqual(worldData.WorldData.InventoryData.StorageSlotItems.Count, worldDataAfter.WorldData.InventoryData.StorageSlotItems.Count, "WorldData.InventoryData.StorageSlotItems.Count is not equal"); for (int index = 0; index < worldData.WorldData.InventoryData.StorageSlotItems.Count; index++) { ItemData itemData = worldData.WorldData.InventoryData.StorageSlotItems[index]; ItemData itemDataAfter = worldDataAfter.WorldData.InventoryData.StorageSlotItems[index]; Assert.AreEqual(itemData.ContainerId, itemDataAfter.ContainerId, "WorldData.InventoryData.StorageSlotItems.ContainerId is not equal"); Assert.AreEqual(itemData.ItemId, itemDataAfter.ItemId, "WorldData.InventoryData.StorageSlotItems.ItemId is not equal"); Assert.IsTrue(itemData.SerializedData.SequenceEqual(itemDataAfter.SerializedData), "WorldData.InventoryData.StorageSlotItems.SerializedData is not equal"); } Assert.AreEqual(worldData.WorldData.InventoryData.Modules.Count, worldDataAfter.WorldData.InventoryData.Modules.Count, "WorldData.InventoryData.Modules.Count is not equal"); for (int index = 0; index < worldData.WorldData.InventoryData.Modules.Count; index++) { EquippedItemData equippedItemData = worldData.WorldData.InventoryData.Modules[index]; EquippedItemData equippedItemDataAfter = worldDataAfter.WorldData.InventoryData.Modules[index]; Assert.AreEqual(equippedItemData.ContainerId, equippedItemDataAfter.ContainerId, "WorldData.InventoryData.Modules.ContainerId is not equal"); Assert.AreEqual(equippedItemData.ItemId, equippedItemDataAfter.ItemId, "WorldData.InventoryData.Modules.ItemId is not equal"); Assert.IsTrue(equippedItemData.SerializedData.SequenceEqual(equippedItemDataAfter.SerializedData), "WorldData.InventoryData.Modules.SerializedData is not equal"); } } }
public ModuleAdded(EquippedItemData equippedItemData, bool playerModule) { EquippedItemData = equippedItemData; PlayerModule = playerModule; }
public ModuleAdded(EquippedItemData equippedItemData) { EquippedItemData = equippedItemData; }
public void ModuleAdded(EquippedItemData itemData) { modulesById[itemData.ItemId] = itemData; }
public PlayerEquipmentAdded(TechType techType, EquippedItemData equippedItem) { TechType = techType; EquippedItem = equippedItem; }
public EquipmentAddItem(EquippedItemData equippedItemData, bool isPlayerEquipment) { IsPlayerEquipment = isPlayerEquipment; EquippedItemData = equippedItemData; }
public EquipmentAddItem(EquippedItemData equippedItemData) { EquippedItemData = equippedItemData; }
public void ModuleAdded(EquippedItemData itemData) { modulesByContainerId[itemData.ContainerId] = itemData; }