using SabreTools.Data.Models.XboxISO;
namespace SabreTools.Wrappers
{
public partial class XboxISO : IExtractable
{
///
public bool Extract(string outputDirectory, bool includeDebug)
{
long initialOffset = _dataSource.Position;
bool success = ExtractVideoPartition(outputDirectory, includeDebug, initialOffset);
success |= ExtractGamePartition(outputDirectory, includeDebug);
return success;
}
///
/// Extract all files from the Video ISO partition only
///
public bool ExtractVideoPartition(string outputDirectory, bool includeDebug, long initialOffset = 0)
{
// Extract all files from the video partition
var videoWrapper = new ISO9660(VideoPartition, _dataSource, initialOffset, _dataSource.Length);
return videoWrapper?.Extract(outputDirectory, includeDebug) ?? false;
}
///
/// Extract all files from the XDVDFS (XISO) game partition only
///
public bool ExtractGamePartition(string outputDirectory, bool includeDebug, long initialOffset = 0)
{
// Extract all files from the game partition
var gameWrapper = new XDVDFS(GamePartition, _dataSource, initialOffset + Constants.XisoOffsets[XGDType], Constants.XisoLengths[XGDType]);
return gameWrapper?.Extract(outputDirectory, includeDebug) ?? false;
}
}
}