| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- using System;
- using System.IO;
- namespace Ryujinx
- {
- class VirtualFs : IDisposable
- {
- private const string BasePath = "Fs";
- private const string SavesPath = "Saves";
- public Stream RomFs { get; private set; }
- public void LoadRomFs(string FileName)
- {
- RomFs = new FileStream(FileName, FileMode.Open, FileAccess.Read);
- }
- internal string GetFullPath(string BasePath, string FileName)
- {
- if (FileName.StartsWith('/'))
- {
- FileName = FileName.Substring(1);
- }
- string FullPath = Path.GetFullPath(Path.Combine(BasePath, FileName));
- if (!FullPath.StartsWith(GetBasePath()))
- {
- return null;
- }
- return FullPath;
- }
- internal string GetGameSavesPath()
- {
- string SavesDir = Path.Combine(GetBasePath(), SavesPath);
- if (!Directory.Exists(SavesDir))
- {
- Directory.CreateDirectory(SavesDir);
- }
- return SavesDir;
- }
- internal string GetBasePath()
- {
- return Path.Combine(Directory.GetCurrentDirectory(), BasePath);
- }
- public void Dispose()
- {
- Dispose(true);
- }
- protected virtual void Dispose(bool disposing)
- {
- if (disposing && RomFs != null)
- {
- RomFs.Dispose();
- }
- }
- }
- }
|