예제 #1
0
        private static SandboxContentHeader DeserializeContentHeader(StreamHelper streamHelper)
        {
            var content = new SandboxContentHeader();

            streamHelper.SeekTo(0x138);
            if (!streamHelper.ReadAscii(4).Equals("mapv"))
            {
                throw new Exception("expected mapv magic.");
            }

            streamHelper.SeekTo(0x42);
            content.CreationDate = streamHelper.ReadInt32();
            streamHelper.SeekTo(0x48);
            content.CreationVarientName = streamHelper.ReadUTF16(0x1F);
            streamHelper.SeekTo(0x68);
            content.CreationVarientDescription = streamHelper.ReadAscii(0x80);
            streamHelper.SeekTo(0xE8);
            content.CreationVarientAuthor = streamHelper.ReadAscii(0x13);

            streamHelper.SeekTo(0x114);
            content.ModificationDate = streamHelper.ReadInt32();
            streamHelper.SeekTo(0x150);
            content.VarientName = streamHelper.ReadUTF16(0x1F);
            streamHelper.SeekTo(0x170);
            content.VarientDescription = streamHelper.ReadAscii(0x80);
            streamHelper.SeekTo(0x1F0);
            content.VarientAuthor = streamHelper.ReadAscii(0x13);

            streamHelper.SeekTo(0x228);
            content.MapID = streamHelper.ReadInt32();

            streamHelper.SeekTo(0x246);
            content.SpawnedObjectCount = streamHelper.ReadInt16();

            streamHelper.SeekTo(0x24C);
            content.WorldBoundsX = new SandboxContentHeader.WorldBound
            {
                Min = streamHelper.ReadFloat(),
                Max = streamHelper.ReadFloat()
            };
            content.WorldBoundsY = new SandboxContentHeader.WorldBound
            {
                Min = streamHelper.ReadFloat(),
                Max = streamHelper.ReadFloat()
            };
            content.WorldBoundsZ = new SandboxContentHeader.WorldBound
            {
                Min = streamHelper.ReadFloat(),
                Max = streamHelper.ReadFloat()
            };

            streamHelper.SeekTo(0x268);
            content.MaximiumBudget = streamHelper.ReadFloat();
            content.CurrentBudget  = streamHelper.ReadFloat();
            return(content);
        }
예제 #2
0
        public static SandboxContentHeader DeserializeContentHeader(EndianStream stream)
        {
            var content = new SandboxContentHeader();

            stream.SeekTo(0x138);
            if (!stream.ReadAscii(4).Equals("mapv"))
            {
                throw new InvalidDataException("expected mapv magic.");
            }

            stream.SeekTo(0x48);
            content.Name        = stream.ReadUTF16(16);
            content.Description = stream.ReadAscii(128);
            content.Author      = stream.ReadAscii(16);
            stream.SeekTo(0x108);
            content.Size      = stream.ReadInt64();
            content.Timestamp = stream.ReadInt64();
            stream.SeekTo(0x120);
            content.MapId = stream.ReadInt32();
            return(content);
        }