public static PUN2ServerEquipmentCollection <IEquippableItemInstance> CreateServerEquipmentCollection(
            string collectionName,
            System.Guid collectionGuid,
            PhotonView owner,
            EquipmentCollectionSlot <IEquippableItemInstance>[] slots,
            IEquippableCharacter <IEquippableItemInstance> character)
        {
            var collection = new PUN2ServerEquipmentCollection <IEquippableItemInstance>(owner, 0, character)
            {
                collectionName = collectionName,
                ID             = collectionGuid
            };

            collection.slots = slots;
            for (int i = 0; i < collection.slots.Length; i++)
            {
                collection.slots[i].collection = collection;
                collection.slots[i].index      = i;
            }

            collection.Server_Register();

            // The server's owner object always has read/write permission.
            PUN2PermissionsRegistry.collections.SetPermission(collection, owner, ReadWritePermission.ReadWrite);

            _logger.Log($"[Server] Created and registered equipment collection with name '{collection.collectionName}' and guid '{collection.ID}' for ViewID: {owner.ViewID}", collection);
            return(collection);
        }
Example #2
0
        private void Server_CreateCollection()
        {
            if (!PhotonNetwork.LocalPlayer.IsMasterClient)
            {
                return;
            }

            _logger.Log($"PUN2EquipmentCollectionCreator - Server_CreateCollection ViewId: {this.photonView.ViewID}, _isPlayerCollection: {_isPlayerCollection}", this);
            if (_isPlayerCollection)
            {
                var bridge = GetComponent <PUN2ActionsBridge>();
                if (bridge == null)
                {
                    _logger.Error($"Trying to sync collection to client, but no {nameof(PUN2ActionsBridge)} found on object!", this);
                    return;
                }

                var guid = System.Guid.NewGuid();

                collection = bridge.Server_AddEquipmentCollectionToServerAndClient(
                    //owner: this.photonView,
                    collectionName: _collectionName,
                    collectionGuid: guid,
                    slots: _slots//.Select(o => string.Join(":", o.equipmentTypes.Select(j => j.ID.ToString() )) ).ToArray()
                    );

                bridge.Server_SetCollectionPermissionOnServerAndClient(
                    collectionGuid: guid,
                    permission: _permission
                    );
            }
            else
            {
                var equippableCharacter = GetComponent <IEquippableCharacter <IEquippableItemInstance> >();
                collection = PUN2CollectionUtility.CreateServerEquipmentCollection(_collectionName, System.Guid.NewGuid(), this.photonView, _slots.Select(o => o.ToSlotInstance(equippableCharacter)).ToArray(), equippableCharacter);
            }
        }