示例#1
0
文件: Records.cs 项目: hollow87/Zorbo
        public override PropertyDescriptor GetOwnPropertyDescriptor(uint index)
        {
            if (index < Count)
            {
                var record = new UserRecord(script, this.history[(int)index]);
                return(new PropertyDescriptor(record, PropertyAttributes.FullAccess));
            }

            return(new PropertyDescriptor(null, PropertyAttributes.Sealed));
        }
示例#2
0
        public override PropertyDescriptor GetOwnPropertyDescriptor(uint index)
        {
            if (index < Count)
            {
                var ban    = this.history.Bans[(int)index];
                var banned = new UserRecord(script, this.history.Records.Find(s => s.Equals(ban)));

                return(new PropertyDescriptor(banned, PropertyAttributes.FullAccess));
            }

            return(new PropertyDescriptor(null, PropertyAttributes.Sealed));
        }
示例#3
0
        public override object Find(object a)
        {
            if (a is FunctionInstance func)
            {
                for (int i = 0; i < this.history.Records.Count; i++)
                {
                    var    record = new UserRecord(script, this.history.Records[i]);
                    object ret    = func.Call(Engine.Global, record);

                    if (TypeConverter.ConvertTo <bool>(Engine, ret))
                    {
                        return(record);
                    }
                }
            }

            return(null);
        }
示例#4
0
        public void RemoveAll(object a)
        {
            if (a is FunctionInstance func)
            {
                for (int i = (Count - 1); i >= 0; i--)
                {
                    var ban    = this.history.Bans[i];
                    var record = new UserRecord(script, this.history.Records.Find((s) => s.Equals(ban)));

                    object ret = func.Call(Engine.Global, record);

                    if (TypeConverter.ConvertTo <bool>(Engine, ret))
                    {
                        this.history.Bans.RemoveAt(i);
                    }
                }
            }
        }
示例#5
0
文件: Banned.cs 项目: hollow87/Zorbo
        public override object Find(object a)
        {
            if (a is FunctionInstance)
            {
                var func = (FunctionInstance)a;

                for (int i = 0; i < this.history.Bans.Count; i++)
                {
                    var ban    = this.history.Bans[i];
                    var record = new UserRecord(script, this.history.Find((s) => s.Equals(ban)));

                    object ret = func.Call(Engine.Global, record);

                    if (TypeConverter.ConvertTo <bool>(Engine, ret))
                    {
                        return(record);
                    }
                }
            }

            return(null);
        }
示例#6
0
文件: Records.cs 项目: hollow87/Zorbo
        public override Collection FindAll(object a)
        {
            if (a is FunctionInstance)
            {
                var func = (FunctionInstance)a;
                var list = new List(script);

                for (int i = 0; i < this.history.Count; i++)
                {
                    var    record = new UserRecord(script, this.history[i]);
                    object ret    = func.Call(Engine.Global, record);

                    if (TypeConverter.ConvertTo <bool>(Engine, ret))
                    {
                        list.Add(record);
                    }
                }

                return(list);
            }

            return(null);
        }
示例#7
0
文件: Banned.cs 项目: hollow87/Zorbo
        public override int IndexOf(object a)
        {
            if (a is FunctionInstance)
            {
                var func = (FunctionInstance)a;

                for (int i = 0; i < this.history.Bans.Count; i++)
                {
                    var ban    = this.history.Bans[i];
                    var record = new UserRecord(script, this.history.Find((s) => s.Equals(ban)));

                    object ret = func.Call(Engine.Global, record);

                    if (TypeConverter.ConvertTo <bool>(Engine, ret))
                    {
                        return(i);
                    }
                }
                return(-1);
            }
            else if (a is User)
            {
                var user = (User)a;
                return(this.history.Bans.IndexOf(new UserId(script, user.Client.Guid, user.Client.ExternalIp)));
            }
            else if (a is UserId)
            {
                return(this.history.Bans.IndexOf((UserId)a));
            }
            else if (a is UserRecord)
            {
                var record = (UserRecord)a;
                return(this.history.Bans.IndexOf(new UserId(script, record.Guid, record.ExternalIp)));
            }

            return(-1);
        }
示例#8
0
        public override Collection FindAll(object a)
        {
            if (a is FunctionInstance func)
            {
                var list = new List(script);

                for (int i = 0; i < this.history.Bans.Count; i++)
                {
                    var ban    = this.history.Bans[i];
                    var record = new UserRecord(script, this.history.Records.Find((s) => s.Equals(ban)));

                    object ret = func.Call(Engine.Global, record);

                    if (TypeConverter.ConvertTo <bool>(Engine, ret))
                    {
                        list.Add(record);
                    }
                }

                return(list);
            }

            return(null);
        }
示例#9
0
文件: Banned.cs 项目: hollow87/Zorbo
        public bool Remove(object a)
        {
            if (a is User)
            {
                return(this.history.Bans.Remove(((User)a).Client.ClientId));
            }

            else if (a is UserId)
            {
                return(this.history.Bans.Remove((UserId)a));
            }
            else if (a is UserRecord)
            {
                return(this.history.Bans.Remove(((UserRecord)a).Record.ClientId));
            }

            else if (a is FunctionInstance)
            {
                var func = (FunctionInstance)a;

                for (int i = (Count - 1); i >= 0; i--)
                {
                    var ban    = this.history.Bans[i];
                    var record = new UserRecord(script, this.history.Find((s) => s.Equals(ban)));

                    object ret = func.Call(Engine.Global, record);

                    if (TypeConverter.ConvertTo <bool>(Engine, ret))
                    {
                        return(this.history.Bans.RemoveAt(i));
                    }
                }
            }

            return(false);
        }