Exemple #1
0
        private void Process(Client client, ClientContainerAddItem msg)
        {
            var container = state.history.container.GetOrAddNew(msg.ownerGuid);

            container.items[msg.itemGuid] = msg;

            SendToAll(client.peer, msg);
        }
Exemple #2
0
        public static void AddItem(Pickupable pickupable, GameObject owner)
        {
            if (Multiplayer.main.blocked)
            {
                return;
            }

            var res = new ClientContainerAddItem();

            res.ownerGuid = GuidHelper.Get(owner);
            res.itemGuid  = GuidHelper.Get(pickupable.gameObject);
            res.tech      = pickupable.GetTechType();
            res.position  = owner.transform.position;

            GuidHelper.GetChildGuids(pickupable.gameObject);
            res.data = ObjectSerializer.GetBytes(pickupable.gameObject, true);
            if (res.data == null)
            {
                return;
            }

            Multiplayer.main.Send(res);
        }
Exemple #3
0
        private void Process(ClientContainerAddItem msg)
        {
            var owner     = GuidHelper.Find(msg.ownerGuid);
            var container = Helpers.GetItemsContainer(owner);

            if (container == null)
            {
                FindRemoteInventory(msg.ownerGuid)?.Add(msg.itemGuid, msg.data);
                return;
            }

            using (new MessageBlocker()) {
                var item = ObjectSerializer.GetGameObject(msg.data);
                GuidHelper.Set(item, msg.itemGuid);

                var pickupable = item.GetComponent <Pickupable>();
                if (pickupable == null)
                {
                    return;
                }

                container.AddItem(pickupable);
            }
        }