Пример #1
0
        private static long HeaderPositionIn(Stream stream)
        {
            var reader = new BinaryReader(stream);

            reader.Advance(32);

            var pageSize = reader.ReadInt32();

            reader.Advance(4);

            var pageCount = reader.ReadInt32();

            reader.Advance(pageSize - 44);

            const uint magic = 0x1312e94;

            int page = 0;

            for (int i = 1; i < pageCount; i++)
            {
                if (magic == reader.ReadUInt32())
                {
                    page = i;
                    break;
                }

                reader.Advance(pageSize - 4);
            }

            return(page * pageSize);
        }
Пример #2
0
        public static async Task <SaveEntry> Create()
        {
            await using var file = File.OpenRead(Data.SaveFile);
            using var reader     = new BinaryReader(file, Encoding.UTF8, true);

            reader.Advance(8);
            var advancedValue   = reader.ReadInt32();
            var difficultyValue = reader.ReadInt32();

            reader.Advance(16);
            var shipName        = reader.ReadUtf8PrefixString();
            var shipId          = reader.ReadUtf8PrefixString();
            var hasLayoutSuffix = shipId[^ 2] == '_' && Char.IsDigit(shipId[^ 1]);
Пример #3
0
        public void Load(BinaryReader br, UInt32 address)
        {
            br.Jump(address);

            Name      = br.ReadStringFromOffset();
            width     = br.ReadUInt32();
            height    = br.ReadUInt32();
            box       = new Rectangle();
            box.X     = (int)br.ReadUInt32();         // Left
            box.Width = (int)br.ReadUInt32() - box.X; // Right
            UInt32 bottom = br.ReadUInt32();

            box.Y      = (int)br.ReadUInt32(); // Top
            box.Height = (int)bottom - box.Y;  // Bottom
            br.Advance(12);                    // Unknown[4]
            boundingBoxMode = br.ReadUInt32();
            sepMasks        = br.ReadUInt32();
            originX         = br.ReadUInt32();
            originY         = br.ReadUInt32();

            UInt32 textureCount = br.ReadUInt32();

            texturePages = new TexturePage[textureCount];

            for (int i = 0; i < texturePages.Length; i++)
            {
                UInt32      offset = br.ReadUInt32();
                TexturePage tp     = new TexturePage();
                tp.Load(br, offset);

                texturePages[i] = tp;
            }

            br.JumpBack();
        }
Пример #4
0
        public void Load(BinaryReader br, UInt32 address)
        {
            br.Jump(address);

            Name = br.ReadStringFromOffset();
            br.Advance(12);             // Unknown[3]
            UInt32 tpOff = br.ReadUInt32();

            texturePage = new TexturePage();
            texturePage.Load(br, tpOff);

            br.JumpBack();
        }
Пример #5
0
        protected override void LoadData(BinaryReader br)
        {
            base.LoadData(br);

            byte debug = br.ReadByte();

            Debug    = debug == 1;
            Unknown1 = (br.ReadUInt16() << 8) | br.ReadByte();
            Filename = br.ReadStringFromOffset();
            br.Advance(12);             // ConfigOffset, LastObj, LastTile
            GameID = br.ReadUInt32();
            br.Advance(16);             // Unknown2[4]
            Name           = br.ReadStringFromOffset();
            MajorVersion   = br.ReadUInt32();
            MinorVersion   = br.ReadUInt32();
            ReleaseVersion = br.ReadUInt32();
            BuildVersion   = br.ReadUInt32();
            br.Advance(40);             // DefaultWindowWidth, DefaultWindowHeight, Info, LicenseMD5[0x10], LicenseCRC32, Timestamp
            DisplayName = br.ReadStringFromOffset();
            br.Advance(20);             // ActiveTargets, Unknown3[4]
            SteamAppID = br.ReadUInt32();
        }