2024-11-15 20:29:02 +03:00
|
|
|
|
namespace NResLib;
|
|
|
|
|
|
|
|
|
|
public class NResExporter
|
|
|
|
|
{
|
|
|
|
|
public static void Export(NResArchive archive, string directory, string nResPath)
|
|
|
|
|
{
|
|
|
|
|
var openedFileName = Path.GetFileName(nResPath)!;
|
|
|
|
|
var targetDirectoryPath = Path.Combine(directory, openedFileName);
|
|
|
|
|
|
|
|
|
|
if (!Directory.Exists(targetDirectoryPath))
|
|
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(targetDirectoryPath);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
using var fs = new FileStream(nResPath, FileMode.Open);
|
|
|
|
|
|
|
|
|
|
foreach (var archiveFile in archive.Files)
|
|
|
|
|
{
|
|
|
|
|
fs.Seek(archiveFile.OffsetInFile, SeekOrigin.Begin);
|
|
|
|
|
|
|
|
|
|
var buffer = new byte[archiveFile.FileLength];
|
|
|
|
|
|
|
|
|
|
fs.ReadExactly(buffer, 0, archiveFile.FileLength);
|
|
|
|
|
|
|
|
|
|
var extension = Path.GetExtension(archiveFile.FileName);
|
|
|
|
|
var fileName = Path.GetFileNameWithoutExtension(archiveFile.FileName);
|
|
|
|
|
|
|
|
|
|
if (extension == "")
|
|
|
|
|
{
|
|
|
|
|
extension = ".bin";
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-09 22:56:59 +03:00
|
|
|
|
var targetFilePath = Path.Combine(targetDirectoryPath, $"{archiveFile.Index}_{archiveFile.FileType}_{fileName}{extension}");
|
2024-11-15 20:29:02 +03:00
|
|
|
|
|
|
|
|
|
File.WriteAllBytes(targetFilePath, buffer);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|