Exemple #1
0
        public override void Close() // 0x28
        {
            lock (StaticDiscFileData.Lock)
            {
                if (IsCustomDiscFile)
                {
                    if (DiscFile != null)
                    {
                        DiscFile.Close();
                        DiscFile = null;
                    }

                    IsCustomDiscFile = false;
                }
                else if (IsFromLooseFile)
                {
                    --StaticDiscFileData.RefCount;
                }

                if (StaticDiscFileData.RefCount == 0 && StaticDiscFileData.DiscFile != null && !StaticDiscFileData.Status2)
                {
                    StaticDiscFileData.DiscFile = null;
                }
            }
        }
Exemple #2
0
        public override void Read(byte[] destination, int bytesToRead) //0x14
        {
            lock (StaticDiscFileData.Lock)
            {
                if (IsCustomDiscFile)
                {
                    DiscFile.Read(destination, bytesToRead);
                    return;
                }

                if (IsFromLooseFile && F24Offset < F32Size)
                {
                    var fileOffset = DiscFile.GetOffset();
                    var calcOffset = F24Offset + F16FileOffset;
                    if (fileOffset != calcOffset)
                    {
                        DiscFile.Seek(calcOffset, SeekOrigin.Begin);
                    }

                    long toRead = bytesToRead;
                    if (toRead > F32Size - F24Offset)
                    {
                        toRead = F32Size - F24Offset;
                    }

                    DiscFile.Read(destination, (int)toRead);

                    F24Offset += toRead;
                }
            }
        }
Exemple #3
0
        public override void Seek(long destOffset, SeekOrigin type) // 0x1C
        {
            lock (StaticDiscFileData.Lock)
            {
                if (IsCustomDiscFile)
                {
                    DiscFile.Seek(destOffset, type);
                    return;
                }

                switch (type)
                {
                case SeekOrigin.Begin:
                    F24Offset = destOffset;
                    break;

                case SeekOrigin.Current:
                    F24Offset += destOffset;
                    break;

                case SeekOrigin.End:
                    F24Offset  = F32Size;
                    F24Offset += destOffset;
                    break;
                }
            }
        }
Exemple #4
0
        public override bool IsOpen() // 0x0C
        {
            lock (StaticDiscFileData.Lock)
            {
                if (IsCustomDiscFile)
                {
                    return(DiscFile.IsOpen());
                }

                return(IsFromLooseFile);
            }
        }
Exemple #5
0
        // Read2 not overridden

        public override long GetOffset() // 0x24
        {
            lock (StaticDiscFileData.Lock)
            {
                if (IsCustomDiscFile)
                {
                    return(DiscFile.GetOffset());
                }

                return(F24Offset);
            }
        }
Exemple #6
0
        public override bool IsEndOfFile() // 0x08
        {
            lock (StaticDiscFileData.Lock)
            {
                if (IsCustomDiscFile)
                {
                    return(DiscFile.IsEndOfFile());
                }

                if (IsFromLooseFile)
                {
                    return(F24Offset >= F32Size);
                }

                return(true);
            }
        }
Exemple #7
0
        public override long GetFileSize() // 0x04
        {
            lock (StaticDiscFileData.Lock)
            {
                if (IsCustomDiscFile)
                {
                    return(DiscFile.GetFileSize());
                }

                if (IsFromLooseFile)
                {
                    return(F32Size);
                }

                return(0L);
            }
        }