Пример #1
0
 internal Unknown(Script script, ScriptBlock block, AssetLoader loader)
     : base(script, block)
 {
     Content = new Codex<byte>(loader.Reader.ReadBytes(block.ContentSize));
 }
Пример #2
0
            internal Object(Script script, ScriptBlock block, AssetLoader loader)
                : base(script, block)
            {
                var reader = loader.Reader;

                loader.Expect((ushort)0x1234);
                LocalVariableOffset = reader.ReadUInt16();
                int functionSelectorListOffset = reader.ReadUInt16();

                int variableSelectorCount = reader.ReadUInt16();
                Codex<VariableSelector> variableSelectors = new Codex<VariableSelector>(variableSelectorCount);
                Variables = variableSelectors;
                for (int index = 0; index < variableSelectorCount; index++)
                    variableSelectors.Add(new VariableSelector(this, loader));

                int functionSelectorCount = reader.ReadUInt16();
                Codex<FunctionSelector> functionSelectors = new Codex<FunctionSelector>(functionSelectorCount);
                Functions = functionSelectors;
                for (int index = 0; index < functionSelectorCount; index++)
                    functionSelectors.Add(new FunctionSelector(this, loader));

                loader.Expect((ushort)0);
                for (int index = 0; index < functionSelectorCount; index++)
                    functionSelectors[index].ReadCodeOffset(loader);

                loader.ExpectPosition(block.EndOffset);
            }
Пример #3
0
 internal Strings(Script script, ScriptBlock block, AssetLoader loader)
     : base(script, block)
 {
     Codex<string> list = new Codex<string>();
     Values = list;
     while (loader.Position < block.EndOffset)
         list.Add(loader.Reader.ReadStringz(Encoding.ASCII));
 }
Пример #4
0
 internal Locals(Script script, ScriptBlock block, AssetLoader loader)
     : base(script, block)
 {
     Codex<ushort> values = new Codex<ushort>(block.ContentSize / 2);
     Values = values;
     for (int index = 0; index < block.ContentSize / 2; index++)
         values.Add(loader.Reader.ReadUInt16());
 }
Пример #5
0
        internal static ScriptSection Read(Script script, AssetLoader loader)
        {
            ScriptBlock block = new ScriptBlock(loader);

            switch (block.Type) {
                case ScriptBlockType.End: return null;
                case ScriptBlockType.Locals: return new Locals(script, block, loader);
                case ScriptBlockType.Object: return new Object(script, block, loader);
                case ScriptBlockType.Strings: return new Strings(script, block, loader);
                default: return new Unknown(script, block, loader);
            }
        }
Пример #6
0
 internal ScriptSection(Script script, ScriptBlock block)
 {
     Block = block;
     Script = script;
 }
Пример #7
0
 internal Unknown(Script script, ScriptBlock block, AssetLoader loader)
     : base(script, block)
 {
     Content = new Codex <byte>(loader.Reader.ReadBytes(block.ContentSize));
 }
Пример #8
0
 internal ScriptSection(Script script, ScriptBlock block)
 {
     Block  = block;
     Script = script;
 }