Alexandria.Engines.GoldBox.Resources.ScriptInstruction.Read C# (CSharp) Метод

Read() публичный статический Метод

public static Read ( Script script, BinaryReader reader ) : ScriptInstruction
script Script
reader System.IO.BinaryReader
Результат ScriptInstruction
        public static ScriptInstruction Read(Script script, BinaryReader reader)
        {
            long offset = reader.BaseStream.Position;
            ScriptOperand opcodeToken = new ScriptOperand(reader, ScriptArgument.Opcode);

            if (!opcodeToken.IsOpcode)
                return new Invalid(script, offset, opcodeToken);

            ScriptOpcode opcode = opcodeToken.GetOpcode();
            switch (opcode) {
                case ScriptOpcode.Call: return new Call(script, offset, reader);
                case ScriptOpcode.Switch: return new Switch(script, offset, reader);
                case ScriptOpcode.If: return new If(script, offset, reader);
                default: return new ScriptInstruction(script, offset, reader, opcode);
            }
        }

Usage Example

Пример #1
0
        public Script(AssetManager manager, BinaryReader reader, string name)
            : base(manager, name)
        {
            long end = reader.BaseStream.Length;

            ExceptionEnd = "";

            reader.Require(0x01011388);
            CodeAddressA = reader.ReadUInt16();
            reader.Require((ushort)0x0101);
            CodeAddressB = reader.ReadUInt16();
            reader.Require((ushort)0x0101);
            CodeAddressC = reader.ReadUInt16();
            reader.Require((ushort)0x0101);
            CodeAddressD = reader.ReadUInt16();
            reader.Require((ushort)0x0101);
            CodeAddressE = reader.ReadUInt16();

            while (reader.BaseStream.Position < end)
            {
                try {
                    var instruction = ScriptInstruction.Read(this, reader);
                    InstructionsMutable.Add(instruction);
                } catch (Exception exception) {
                    ExceptionEnd = string.Format("\r\n{0:X}: Exception: {1}\r\nStopping\r\n", reader.BaseStream.Position, exception);
                    break;
                }
            }

            Link();
        }