public static HeroType GetTypeFromJStream(PackedStream_2 stream)
        {
            ulong num;
            ulong num2;

            stream.ReadVersion(out num);
            if (num != 0L)
            {
                throw new InvalidDataException("incorrect header token for creating HeroValueType");
            }
            stream.Read(out num2);
            HeroType type = new HeroType((HeroTypes)((int)num2));

            switch (type.Type)
            {
            case HeroTypes.Enum:
            case HeroTypes.Class:
            case HeroTypes.NodeRef:
                stream.Read(out num2);
                type.Id = new DefinitionId(num2);
                return(type);

            case HeroTypes.String:
                return(type);

            case HeroTypes.List:
                type.Values = GetTypeFromJStream(stream);
                stream.CheckEnd();
                return(type);

            case HeroTypes.LookupList:
                type.Indexer = GetTypeFromJStream(stream);
                stream.CheckEnd();
                type.Values = GetTypeFromJStream(stream);
                stream.CheckEnd();
                return(type);
            }
            return(type);
        }
Beispiel #2
0
        public static HeroType GetTypeFromJStream(PackedStream_2 stream)
        {
            ulong num;

            stream.ReadVersion(out num);
            if ((long)num != 0L)
            {
                throw new InvalidDataException("incorrect header token for creating HeroValueType");
            }
            ulong id;

            stream.Read(out id);
            HeroType heroType = new HeroType((HeroTypes)id);

            switch (heroType.Type)
            {
            case HeroTypes.Enum:
            case HeroTypes.Class:
            case HeroTypes.NodeRef:
                stream.Read(out id);
                heroType.Id = new DefinitionId(id);
                break;

            case HeroTypes.List:
                heroType.Values = HeroAnyValue.GetTypeFromJStream(stream);
                stream.CheckEnd();
                break;

            case HeroTypes.LookupList:
                heroType.Indexer = HeroAnyValue.GetTypeFromJStream(stream);
                stream.CheckEnd();
                heroType.Values = HeroAnyValue.GetTypeFromJStream(stream);
                stream.CheckEnd();
                break;
            }
            return(heroType);
        }
Beispiel #3
0
        static void LoadPrototypes(Stream stream)
        {
            ulong          num;
            PackedStream_2 m_ = new PackedStream_2(1, stream);

            m_.CheckResourceHeader(0x464e4950, 1, 1);
            m_.Read(out num);
            for (ulong i = 0L; i < num; i += (ulong)1L)
            {
                ulong num3;
                ulong num4;
                m_.Read(out num3);
                m_.Read(out num4);
                LoadPrototype(num3);
            }
            m_.CheckEnd();
        }