R/Ryujinx/VirtualFs.cs

65 lines
1.5 KiB
C#
Raw Normal View History

2018-02-04 23:08:20 +00:00
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();
}
}
}
}