Esempio n. 1
0
        public static List <T> Decode_List <T>(this string data, out List <T> l, ref ListMetaData ld, TaggedTypesCfg tps) where T : IGotClassTag
        {
            l = new List <T>();
            if (ld == null)
            {
                ld = new ListMetaData();
            }

            var overCody = new CfgDecoder(data);

            foreach (var tag in overCody)
            {
                switch (tag)
                {
                case CfgEncoder.ListMetaTag: ld.Decode(overCody.GetData()); break;

                case CfgEncoder.ListTag:
                    var cody = new CfgDecoder(overCody.GetData());
                    foreach (var t in cody)
                    {
                        l.Add(cody.DecodeData <T>(tps, ld));
                    }
                    break;

                default: l.Add(overCody.DecodeData <T>(tps, ld));
                    break;
                }
            }

            return(l);
        }
Esempio n. 2
0
        public static List <T> Decode_List <T>(this string data, out List <T> l) where T : ICfg, new()
        {
            var cody = new CfgDecoder(data);

            l = new List <T>();

            var tps = typeof(T).TryGetDerivedClasses();

            if (tps != null)
            {
                foreach (var tag in cody)
                {
                    l.Add(cody.DecodeData <T>(tps));
                }
            }
            else
            {
                foreach (var tag in cody)
                {
                    l.Add(cody.GetData().DecodeInto <T>());
                }
            }

            return(l);
        }
Esempio n. 3
0
        public static List <T> Decode_List_Abstract <T>(this string data, out List <T> l, TaggedTypesCfg taggedTypes) where T : IGotClassTag
        {
            l = new List <T>();


#if UNITY_EDITOR
            var ct = taggedTypes.CoreType;
            var lt = typeof(T);
            if (ct != lt && !lt.IsSubclassOf(ct))
            {
                Debug.LogError("Type of {0} is not a subclass of {1}".F(lt.ToPegiStringType(), ct.ToPegiStringType()));
                return(l);
            }
#endif

            var cody = new CfgDecoder(data);

            foreach (var tag in cody)
            {
                var tmp = cody.DecodeData <T>(taggedTypes);
                if (tmp != null)
                {
                    l.Add(tmp);
                }
            }

            return(l);
        }
Esempio n. 4
0
        public static List <T> Decode_List_Derived <T>(this string data, out List <T> l, ref ListMetaData ld) where T : ICfg
        {
            if (ld == null)
            {
                ld = new ListMetaData();
            }
            l = new List <T>();

            var tps = typeof(T).TryGetDerivedClasses();

            var overCody = new CfgDecoder(data);

            foreach (var tag in overCody)
            {
                switch (tag)
                {
                case CfgEncoder.ListMetaTag: ld.Decode(overCody.GetData()); break;

                case CfgEncoder.ListTag:
                    var cody = new CfgDecoder(overCody.GetData());
                    if (tps != null)
                    {
                        foreach (var t in cody)
                        {
                            l.Add(cody.DecodeData <T>(tps, ld));
                        }
                    }
                    break;

                default: l.Add(overCody.DecodeData <T>(tps, ld)); break;
                }
            }

            return(l);
        }
Esempio n. 5
0
        public static List <T> Decode_List <T>(this string data, out List <T> l, TaggedTypesCfg tps) where T : IGotClassTag
        {
            var cody = new CfgDecoder(data);

            l = new List <T>();

            foreach (var tag in cody)
            {
                l.Add(cody.DecodeData <T>(tps));
            }

            return(l);
        }