public void RemoveEventListenerTest()
        {
            int eventFireCount = 0;
            PermissionChangedResult <MockCollection, Identity> changedResult = null;

            var callback1 = new NetworkPermissionsMap <MockCollection, Identity> .OnPermissionChangedDelegate(data =>
            {
                changedResult = data;
                eventFireCount++;
            });

            _permissions.AddEventListener(_identity2, callback1);

            _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.ReadWrite);

            var removed = _permissions.RemoveEventListener(_identity2, callback1);

            _permissions.SetPermission(_collection2, _identity2, ReadWritePermission.Read);
            _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.None);

            Assert.AreEqual(1, eventFireCount);
            Assert.AreEqual(_identity2, changedResult.identity);
            Assert.AreEqual(_collection1, changedResult.obj);
            Assert.AreEqual(ReadWritePermission.ReadWrite, changedResult.permission);

            Assert.IsTrue(removed);
        }
        public void RemoveEventListenerTest2()
        {
            int eventFireCount1 = 0;
            int eventFireCount2 = 0;
            int eventFireCount3 = 0;
            PermissionChangedResult <MockCollection, Identity> changedResult1 = null;
            PermissionChangedResult <MockCollection, Identity> changedResult2 = null;
            PermissionChangedResult <MockCollection, Identity> changedResult3 = null;

            var callback1 = new NetworkPermissionsMap <MockCollection, Identity> .OnPermissionChangedDelegate(data =>
            {
                changedResult1 = data;
                eventFireCount1++;
            });

            var callback2 = new NetworkPermissionsMap <MockCollection, Identity> .OnPermissionChangedDelegate(data =>
            {
                changedResult2 = data;
                eventFireCount2++;
            });

            var callback3 = new NetworkPermissionsMap <MockCollection, Identity> .OnPermissionChangedDelegate(data =>
            {
                changedResult3 = data;
                eventFireCount3++;
            });

            _permissions.AddEventListener(_identity2, callback1);
            _permissions.AddEventListener(_identity2, callback2);
            _permissions.AddEventListener(_identity2, callback3);

            _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.ReadWrite);

            _permissions.RemoveEventListener(_identity2, callback1);

            _permissions.SetPermission(_collection2, _identity2, ReadWritePermission.Read);

            _permissions.RemoveEventListener(_identity2, callback2);

            _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.None);

            Assert.AreEqual(1, eventFireCount1);
            Assert.AreEqual(2, eventFireCount2);
            Assert.AreEqual(3, eventFireCount3);
            Assert.AreEqual(_identity2, changedResult1.identity);
            Assert.AreEqual(_identity2, changedResult2.identity);
            Assert.AreEqual(_identity2, changedResult3.identity);
            Assert.AreEqual(_collection1, changedResult1.obj);
            Assert.AreEqual(_collection2, changedResult2.obj);
            Assert.AreEqual(_collection1, changedResult3.obj);
            Assert.AreEqual(ReadWritePermission.ReadWrite, changedResult1.permission);
            Assert.AreEqual(ReadWritePermission.Read, changedResult2.permission);
            Assert.AreEqual(ReadWritePermission.None, changedResult3.permission);
        }
Esempio n. 3
0
 private void OnPermissionChanged(PermissionChangedResult <IUNetCollection, NetworkIdentity> result)
 {
     if (result.obj.collectionName == _collectionName)
     {
         if (result.permission.CanRead())
         {
             _window.Show();
         }
         else
         {
             _window.Hide();
         }
     }
 }
Esempio n. 4
0
 private void OnPermissionChanged(PermissionChangedResult <IPUN2Collection, PhotonView> result)
 {
     if (result.obj.collectionName == _collectionName)
     {
         if (result.permission.CanRead())
         {
             _window.Show();
         }
         else
         {
             _window.Hide();
         }
     }
 }
        public void SetPermissionEventTest()
        {
            int eventFireCount = 0;
            PermissionChangedResult <MockCollection, Identity> changedResult = null;

            _permissions.AddEventListener(_identity2, data =>
            {
                changedResult = data;
                eventFireCount++;
            });

            _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.ReadWrite);
            _permissions.SetPermission(_collection2, _identity2, ReadWritePermission.Read);
            _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.None);

            Assert.AreEqual(3, eventFireCount);
            Assert.AreEqual(_identity2, changedResult.identity);
            Assert.AreEqual(_collection1, changedResult.obj);
            Assert.AreEqual(ReadWritePermission.None, changedResult.permission);
        }
        public void SetPermissionEventTest2()
        {
            int eventFireCount = 0;
            PermissionChangedResult <MockCollection, Identity> changedResult = null;

            _permissions.AddEventListener(_identity2, data =>
            {
                changedResult = data;
                eventFireCount++;
            });

            _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.ReadWrite);
            _permissions.SetPermission(_collection2, _identity2, ReadWritePermission.Read);
            _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.None);

            // These should be ignored by the event, as they're from another identity.
            _permissions.SetPermission(_collection1, _identity1, ReadWritePermission.ReadWrite);
            _permissions.SetPermission(_collection1, _identity3, ReadWritePermission.ReadWrite);

            Assert.AreEqual(3, eventFireCount);
            Assert.AreEqual(_identity2, changedResult.identity);
            Assert.AreEqual(_collection1, changedResult.obj);
            Assert.AreEqual(ReadWritePermission.None, changedResult.permission);
        }
Esempio n. 7
0
        protected virtual void OnCollectionPermissionChanged(PermissionChangedResult <IUNetCollection, NetworkIdentity> data)
        {
            // Build collection groups when permission has changed. Use the server collections if possible, otherwise use client collections.
            // NOTE: Could use data.permission > None to add/remove directly from the collectionGroup rather than re-creating a completely new collection every time.

            if (itemCollections.Contains(data.obj.collectionName))
            {
                // Collection should be item collection
                var colPermission = UNetPermissionsRegistry.collections.GetAllWithPermission(identity);
                var clientList    = new List <Collections.ICollection <IItemInstance> >();
                var serverList    = new List <Collections.ICollection <IItemInstance> >();
                foreach (var permission in colPermission)
                {
                    var col = permission.obj as Collections.ICollection <IItemInstance>;
                    if (col == null)
                    {
                        continue;
                    }

                    if (itemCollections.Contains(permission.obj.collectionName) == false)
                    {
                        continue;
                    }

                    if (CollectionRegistry.byID.Contains(col))
                    {
                        if (clientList.Contains(col) == false)
                        {
                            clientList.Add(col);
                        }
                    }

                    if (ServerCollectionRegistry.byID.Contains(col))
                    {
                        if (serverList.Contains(col) == false)
                        {
                            serverList.Add(col);
                        }
                    }
                }

                itemCollectionGroup.Set(serverList.ToArray());
                if (identity.isClient && identity.isServer == false)
                {
                    itemCollectionGroup.Set(clientList.ToArray());
                }
            }
            else if (equipmentCollections.Contains(data.obj.collectionName))
            {
                // Collection should be equipment collection
                var colPermission = UNetPermissionsRegistry.collections.GetAllWithPermission(identity);
                var clientList    = new List <IEquipmentCollection <IEquippableItemInstance> >();
                var serverList    = new List <IEquipmentCollection <IEquippableItemInstance> >();
                foreach (var permission in colPermission)
                {
                    var col = permission.obj as IEquipmentCollection <IEquippableItemInstance>;
                    if (col == null)
                    {
                        continue;
                    }

                    if (equipmentCollections.Contains(permission.obj.collectionName) == false)
                    {
                        continue;
                    }

                    if (CollectionRegistry.byID.Contains(col))
                    {
                        if (clientList.Contains(col) == false)
                        {
                            clientList.Add(col);
                        }
                    }

                    if (ServerCollectionRegistry.byID.Contains(col))
                    {
                        if (serverList.Contains(col) == false)
                        {
                            serverList.Add(col);
                        }
                    }
                }

                equipmentCollectionGroup.Set(serverList.ToArray());
                if (identity.isClient && identity.isServer == false)
                {
                    equipmentCollectionGroup.Set(clientList.ToArray());
                }
            }
            else if (currencyCollections.Contains(data.obj.collectionName))
            {
                // Collection should be currency collection
                // Collection should be equipment collection
                var colPermission = UNetPermissionsRegistry.collections.GetAllWithPermission(identity);
                var clientList    = new List <ICurrencyCollection <ICurrency, double> >();
                var serverList    = new List <ICurrencyCollection <ICurrency, double> >();
                foreach (var permission in colPermission)
                {
                    var col = permission.obj as ICurrencyCollection <ICurrency, double>;
                    if (col == null)
                    {
                        continue;
                    }

                    if (currencyCollections.Contains(permission.obj.collectionName) == false)
                    {
                        continue;
                    }

                    if (CurrencyCollectionRegistry.byID.Contains(col))
                    {
                        if (clientList.Contains(col) == false)
                        {
                            clientList.Add(col);
                        }
                    }

                    if (ServerCurrencyCollectionRegistry.byID.Contains(col))
                    {
                        if (serverList.Contains(col) == false)
                        {
                            serverList.Add(col);
                        }
                    }
                }

                currencyCollectionGroup.Set(serverList.ToArray());
                if (identity.isClient && identity.isServer == false)
                {
                    currencyCollectionGroup.Set(clientList.ToArray());
                }
            }
        }