コード例 #1
0
        public override void Init(ArkArchive archive, ArkName name)
        {
            base.Init(archive, name);

            ArkName arrayType = archive.ReadName();

            long position = archive.Position;

            try {
                Value = ArkArrayRegistry.ReadBinary(archive, arrayType, this);

                if (Value == null)
                {
                    throw new UnreadablePropertyException("ArkArrayRegistry returned null");
                }
            } catch (UnreadablePropertyException upe) {
                archive.Position = position;

                Value = new ArkArrayUnknown(archive, DataSize, arrayType);

                archive.HasUnknownNames = true;
                Debug.WriteLine($"Reading ArrayProperty of type {arrayType} with name {name} as byte blob because:");
                Debug.WriteLine(upe.Message);
                Debug.WriteLine(upe.StackTrace);
            }
        }
コード例 #2
0
        public override void Init(JObject node)
        {
            base.Init(node);
            ArkName arrayType = ArkName.From(node.Value <string>("arrayType"));

            try {
                node["value"].ToObject <byte[]>();
                Value = new ArkArrayUnknown(node["value"], arrayType);
            } catch (Exception ex) when(ex is FormatException || ex is OverflowException || ex is JsonReaderException)
            {
                Value = ArkArrayRegistry.ReadJson(node.Value <JArray>("value"), arrayType, this);
            }
        }