Beispiel #1
0
 private TilesConfig(Reader reader, bool compressed)
 {
     if (reader.ReadBytes(4).SequenceEqual(MAGIC))
     {
         compressed = true;
     }
     else
     {
         reader.Seek(-4, SeekOrigin.Current);
     }
     if (compressed)
     {
         using (Reader creader = reader.GetCompressedStream())
         {
             for (int i = 0; i < TILES_COUNT; ++i)
             {
                 CollisionPath1[i] = new TileConfig(creader);
             }
             for (int i = 0; i < TILES_COUNT; ++i)
             {
                 CollisionPath2[i] = new TileConfig(creader);
             }
         }
     }
     else
     {
         for (int i = 0; i < TILES_COUNT; ++i)
         {
             CollisionPath1[i] = new TileConfig(reader);
         }
         for (int i = 0; i < TILES_COUNT; ++i)
         {
             CollisionPath2[i] = new TileConfig(reader);
         }
     }
     reader.Close();
 }
Beispiel #2
0
        public Replay(Reader reader)
        {
            Reader creader = reader.GetCompressedStreamRaw();

            //creader.BaseStream.Position = 0x84;

            int[] data = new int[creader.BaseStream.Length / 4];

            creader.BaseStream.Position = 0;
            for (int i = 0; i < creader.BaseStream.Length / 4; i++)
            {
                data[i] = creader.ReadInt32();
            }
            creader.Seek(0, SeekOrigin.Begin);

            for (int i = 0; i < 14; i++)
            {
                Header[i] = creader.ReadInt32();
            }

            for (int i = 0; i < Header[4]; i++)
            {
                ReplayEntry entry = new ReplayEntry();
                entry.Data[0] = creader.ReadInt32(); //Inputs
                entry.Data[1] = creader.ReadInt32(); //Flags
                entry.Data[2] = creader.ReadInt32(); //Fuckery
                entry.Data[3] = creader.ReadInt32();
            }

            //"CurrentEntity->ObjectID" is actually "Scene.Mode"

            //data[0]: Header
            //data[1]: ???
            //data[2]: Packed Flag
            //data[3]: ActiveBuffer
            //data[4]: EntryCount
            //data[5]: FrameCount
            //data[6]: ZoneID (MenuParam[92])
            //data[7]: ActID (MenuParam[93])
            //data[8]: PlayerID (MenuParam[91])
            //data[9]: PlusLayout
            //data[10]: Oscillation
            //data[11]: ???
            //data[12]: ???
            //data[13]: ???

            //Entries Start: 14/0xE
            //Entry Size: 28 (bytes) (7 ints)

            //Entry[2]: Inputs
            //Input & 0x01 = ??? (Up)
            //Input & 0x02 = ??? (Down)
            //Input & 0x04 = ??? (Left)
            //Input & 0x08 = ??? (Right)
            //Input & 0x10 = ??? (JumpPress)
            //Input & 0x20 = ??? (JumpHold)

            creader.Close();

            //Writer writer = new Writer("Replay.bin");
            //writer.Write(data);
            //writer.Close();
        }