Exemple #1
0
        // **********************************************************************

        public Player(string fn)
        {
            working = new EventWaitHandle(true, EventResetMode.ManualReset);
            nosync  = new EventWaitHandle(false, EventResetMode.AutoReset);

            try
            {
                FilePath = fn;
                FileName = Path.GetFileName(fn);

                fs = new FileStream(fn, FileMode.Open, FileAccess.Read);

                ResetDataFile();

                //  MktProvider.AttachPlayer(this);

                Status = "Файл открыт";
            }
            catch (Exception e)
            {
                if (FileHeader == null)
                {
                    FileHeader = new DataFileHeader("?", "", DateTime.MinValue, 0);
                }

                Status = e.Message;
            }
        }
Exemple #2
0
            public unsafe void Load(ref BinaryReader reader)
            {
                this.reader = reader;

                uint fileMagic = reader.ReadUInt32();

                if (fileMagic != 0x30445349)
                {
                    Console.WriteLine("Bad file format");
                    return;
                }

                //Read DTA header
                FileHeader newHeader = new FileHeader();

                Decrypt(reader.ReadBytes(sizeof(FileHeader)), (byte *)&newHeader);

                //Seek to files section
                reader.BaseStream.Seek(newHeader.fileTableOffset, SeekOrigin.Begin);

                //Clean previous file headers & read all headers at once
                fileTableRecords.Clear();

                byte[] allFileRecords = reader.ReadBytes(sizeof(FileTableRecord) * (int)newHeader.fileCount);
                Decrypt(ref allFileRecords);

                var offset = 0;

                for (var i = 0; i < (int)newHeader.fileCount; i++)
                {
                    var   newFileRecord = new FileTableRecord();
                    byte *recordBytes   = (byte *)&newFileRecord;

                    for (var j = 0; j < sizeof(FileTableRecord); j++)
                    {
                        recordBytes[j] = allFileRecords[offset + j];
                    }

                    fileTableRecords.Add(newFileRecord);
                    offset += sizeof(FileTableRecord);
                }

                //Go trough all file header seek, and get DTA file header
                for (var i = 0; i < fileTableRecords.Count; i++)
                {
                    var currentHeader = fileTableRecords[i];
                    reader.BaseStream.Seek(currentHeader.headerOffset, SeekOrigin.Begin);

                    DataFileHeader newDataFileHeader = new DataFileHeader();
                    Decrypt(reader.ReadBytes(sizeof(DataFileHeader)), (byte *)&newDataFileHeader);

                    byte[] fileName = reader.ReadBytes(newDataFileHeader.nameLength);
                    Decrypt(ref fileName);

                    //save file name for later :)
                    fileNames.Add(System.Text.Encoding.ASCII.GetString(fileName).ToLower());
                    dataFileHeaders.Add(newDataFileHeader);
                }
            }
 public Table(string name, PageTable pageTable, DataFileHeader fileHeader)
 {
     this.Name       = name;
     this.PageTable  = pageTable;
     this.FileHeader = fileHeader;
 }
 public Table(string name, PageTable pageTable, DataFileHeader fileHeader)
 {
     this.Name = name;
     this.PageTable = pageTable;
     this.FileHeader = fileHeader;
 }