TESVSnip.Domain.Model.Plugin.Enumerate C# (CSharp) Method

Enumerate() public method

public Enumerate ( Predicate match ) : IEnumerable
match Predicate
return IEnumerable
        public override IEnumerable<BaseRecord> Enumerate(Predicate<BaseRecord> match)
        {
            if (!match(this))
            {
                yield break;
            }

            foreach (BaseRecord r in this.Records)
            {
                if (match(r))
                    yield return r;
                foreach (var itm in r.Enumerate(match))
                {
                    yield return itm;
                }
            }
        }

Usage Example

示例#1
0
        /// <summary>
        /// Change all Form Value greater than 40 to 40
        /// </summary>
        /// <param name="plugin"></param>
        /// <returns></returns>
        public static int ChangeFormIdGreater40To40(Plugin plugin)
        {
            if (plugin == null)
            {
                return -1;
            }

            var masters = plugin.Masters;
            if (masters == null || masters.Length == 0)
            {
                return -1;
            }

            int countGreate40 = 0;
            foreach (var record in plugin.Enumerate().OfType<Record>())
            {
                record.MatchRecordStructureToRecord();
                if (record.Flags3 > 40)
                {
                    var data = new byte[4];
                    TypeConverter.i2h(record.Flags3, data, 0);
                    if (data[0] > 40)
                    {
                        data[0] = 40;
                        record.Flags3 = TypeConverter.h2i(new ArraySegment<byte>(data, 0, 4));
                        countGreate40++;
                    }
                }
            }

            return countGreate40;
        }
All Usage Examples Of TESVSnip.Domain.Model.Plugin::Enumerate