コード例 #1
0
ファイル: EquipmentSlots.cs プロジェクト: EmidioMata/1.3
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: Player.cs プロジェクト: xawler/Nitrox
 public void AddEquipment(EquippedItemData equipment)
 {
     lock (equippedItems)
     {
         equippedItems.Add(equipment);
     }
 }
コード例 #4
0
        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);
        }
コード例 #5
0
 public void AddModule(EquippedItemData equippedmodule)
 {
     lock (ModulesItemsById)
     {
         ModulesItemsById.Add(equippedmodule.ItemId, equippedmodule);
     }
 }
コード例 #6
0
ファイル: EquipmentSlots.cs プロジェクト: valdeman88/Nitrox
        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);
        }
コード例 #7
0
        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);
            }
        }
コード例 #8
0
ファイル: Player.cs プロジェクト: xawler/Nitrox
 public void AddModule(EquippedItemData module)
 {
     lock (modules)
     {
         modules.Add(module);
     }
 }
コード例 #9
0
ファイル: PlayerData.cs プロジェクト: x0n1c/Nitrox
 public void AddModule(EquippedItemData equippedmodule)
 {
     lock (ModulesItemsByGuid)
     {
         ModulesItemsByGuid.Add(equippedmodule.Guid, equippedmodule);
     }
 }
コード例 #10
0
 public void AddEquipment(string playerName, EquippedItemData equippedItem)
 {
     lock (playersByPlayerName)
     {
         PersistedPlayerData playerData = playersByPlayerName[playerName];
         playerData.EquippedItemsById.Add(equippedItem.ItemId, equippedItem);
     }
 }
コード例 #11
0
ファイル: EquipmentSlots.cs プロジェクト: doublebee022/Nitrox
        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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
ファイル: EquipmentSlots.cs プロジェクト: x0n1c/Nitrox
        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);
        }
コード例 #14
0
        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]}.");
                }
            }
        }
コード例 #15
0
        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");
                }
            }
        }
コード例 #16
0
ファイル: ModuleAdded.cs プロジェクト: MrVeil303/PirateNitrox
 public ModuleAdded(EquippedItemData equippedItemData, bool playerModule)
 {
     EquippedItemData = equippedItemData;
     PlayerModule     = playerModule;
 }
コード例 #17
0
 public ModuleAdded(EquippedItemData equippedItemData)
 {
     EquippedItemData = equippedItemData;
 }
コード例 #18
0
ファイル: InventoryManager.cs プロジェクト: Shirkie01/Nitrox
 public void ModuleAdded(EquippedItemData itemData)
 {
     modulesById[itemData.ItemId] = itemData;
 }
コード例 #19
0
 public PlayerEquipmentAdded(TechType techType, EquippedItemData equippedItem)
 {
     TechType     = techType;
     EquippedItem = equippedItem;
 }
コード例 #20
0
ファイル: EquipmentAddItem.cs プロジェクト: x0n1c/Nitrox
 public EquipmentAddItem(EquippedItemData equippedItemData, bool isPlayerEquipment)
 {
     IsPlayerEquipment = isPlayerEquipment;
     EquippedItemData  = equippedItemData;
 }
コード例 #21
0
 public EquipmentAddItem(EquippedItemData equippedItemData)
 {
     EquippedItemData = equippedItemData;
 }
コード例 #22
0
ファイル: InventoryManager.cs プロジェクト: joas8211/Nitrox
 public void ModuleAdded(EquippedItemData itemData)
 {
     modulesByContainerId[itemData.ContainerId] = itemData;
 }