示例#1
0
        public ScriptChunk(ref ShockwaveReader input, ChunkHeader header)
            : base(header)
        {
            input.IsBigEndian = true;

            Remnants.Enqueue(input.ReadInt32());
            Remnants.Enqueue(input.ReadInt32());

            input.ReadInt32();
            input.ReadInt32();

            input.ReadInt16();
            ScriptNumber = input.ReadInt16();

            Remnants.Enqueue(input.ReadInt16());
            Remnants.Enqueue(input.ReadBEInt32()); // -1
            Remnants.Enqueue(input.ReadBEInt32()); // 0
            Remnants.Enqueue(input.ReadBEInt32());
            Remnants.Enqueue(input.ReadBEInt32()); // 0

            BehaviourScript = input.ReadInt32();   //enum, Behav=0, Global=2

            Remnants.Enqueue(input.ReadInt32());
            Remnants.Enqueue(input.ReadInt16()); //scriptId

            Remnants.Enqueue(input.ReadBEInt16());

            Pool = new LingoValuePool(this, ref input);
        }
        public LingoScriptChunk(ref ShockwaveReader input, ChunkHeader header)
            : base(header)
        {
            input.IsBigEndian = true;

            input.ReadInt32();
            input.ReadInt32();

            input.ReadInt32();
            input.ReadInt32();

            input.ReadInt16();
            ScriptNumber = input.ReadInt16();

            Remnants.Enqueue(input.ReadInt16());
            input.ReadBEInt32();
            input.ReadBEInt32();
            Remnants.Enqueue(input.ReadBEInt32());
            input.ReadBEInt32();

            Type = input.ReadInt32(); //TODO: enum, Behav=0, Global=2

            Remnants.Enqueue(input.ReadInt32());
            CastMemberRef = input.ReadInt16();     //scriptId

            Remnants.Enqueue(input.ReadBEInt16()); //factoryNameId?

            Pool = new LingoValuePool(this, ref input);
        }
示例#3
0
 public InitialMapChunk(ref ShockwaveReader input, ChunkHeader header)
     : base(header)
 {
     MemoryMapOffsets = new int[input.ReadBEInt32()];
     for (int i = 0; i < MemoryMapOffsets.Length; i++)
     {
         MemoryMapOffsets[i] = input.ReadBEInt32();
     }
     Version = (DirectorVersion)input.ReadBEInt32();
 }
示例#4
0
        public ChunkEntry(ref ShockwaveReader input, int id)
            : this(new ChunkHeader(ref input))
        {
            Id = id;

            Offset  = input.ReadBEInt32();
            Flags   = (ChunkEntryFlags)input.ReadBEInt16();
            Unknown = input.ReadBEInt16();
            Link    = input.ReadBEInt32();
        }
示例#5
0
 public InitialMapChunk(ref ShockwaveReader input, ChunkHeader header)
     : base(header)
 {
     MemoryMapOffsets = new int[input.ReadBEInt32()];
     for (int i = 0; i < MemoryMapOffsets.Length; i++)
     {
         MemoryMapOffsets[i] = input.ReadBEInt32();
     }
     Version = (DirectorVersion)input.ReadBEInt32();
     input.ReadBEInt16();
     input.ReadBEInt16(); //TODO: verify, note: what the hell is going on, how I didn't notice these before
     input.ReadBEInt32();
     Remnants.Enqueue(input.ReadBEInt32());
 }
示例#6
0
        public AssociationTableChunk(ref ShockwaveReader input, ChunkHeader header)
            : base(header)
        {
            input.ReadBEInt16();
            input.ReadBEInt16();
            CastEntries   = new List <CastEntry>(input.ReadBEInt32());
            AssignedCount = input.ReadBEInt32();

            for (int i = 0; i < CastEntries.Capacity; i++)
            {
                CastEntries.Add(new CastEntry(ref input));
            }

            //CastEntries.RemoveRange(AssignedCount, TotalCount - AssignedCount);
        }
示例#7
0
        public MemoryMapChunk(ref ShockwaveReader input, ChunkHeader header)
            : base(header)
        {
            input.ReadBEInt16();
            input.ReadBEInt16();

            int entryCountMax = input.ReadBEInt32();
            int entryCount    = input.ReadBEInt32();

            LastJunkId = input.ReadBEInt32();
            Remnants.Enqueue(input.ReadBEInt32());
            LastFreeId = input.ReadBEInt32();

            Entries = new ChunkEntry[entryCount];
            for (int i = 0; i < Entries.Length; i++)
            {
                Entries[i] = new ChunkEntry(ref input, i);
            }
        }
示例#8
0
 public CastEntry(ref ShockwaveReader input)
 {
     Id      = input.ReadBEInt32();
     OwnerId = input.ReadBEInt32();
     Kind    = (ChunkKind)input.ReadBEInt32();
 }
示例#9
0
 public FileMetadataChunk(ref ShockwaveReader input, ChunkHeader header)
     : base(header)
 {
     Codec = (CodecKind)(IsBigEndian ?
                         input.ReadInt32() : input.ReadBEInt32());
 }
示例#10
0
 public ChunkHeader(ref ShockwaveReader input)
     : this((ChunkKind)input.ReadBEInt32())
 {
     Length = IsVariableLength ?
              input.ReadVarInt() : input.ReadBEInt32();
 }