Skip to content

Commit

Permalink
remove extraction options
Browse files Browse the repository at this point in the history
  • Loading branch information
diogotr7 committed Jan 26, 2025
1 parent 23ad0f9 commit 1c9c5d2
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 56 deletions.
12 changes: 5 additions & 7 deletions src/StarBreaker.DataCore/DataCoreBinaryJson.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ public DataCoreBinaryJson(DataCoreDatabase db)
Database = db;
}

public void SaveToFile(DataCoreRecord record, DataCoreExtractionOptions options, string path)
public void SaveToFile(DataCoreRecord record, string path)
{
using var fileStream = new FileStream(Path.ChangeExtension(path, "json"), FileMode.Create);
using var writer = new Utf8JsonWriter(fileStream, new JsonWriterOptions
{
Indented = true,
});

var context = new Context(record.GetFileName(Database), writer, options);
var context = new Context(record.GetFileName(Database), writer);

context.Writer.WriteStartObject();
context.Writer.WriteString("RecordName_", record.GetName(Database));
Expand All @@ -35,7 +35,7 @@ public void SaveToFile(DataCoreRecord record, DataCoreExtractionOptions options,
context.Writer.Flush();
}

public string GetFromMainRecord(DataCoreRecord record, DataCoreExtractionOptions options)
public string GetFromMainRecord(DataCoreRecord record)
{
if (!Database.MainRecords.Contains(record.Id))
throw new InvalidOperationException("Can only extract main records");
Expand All @@ -46,7 +46,7 @@ public string GetFromMainRecord(DataCoreRecord record, DataCoreExtractionOptions
Indented = false
});

var context = new Context(record.GetFileName(Database), writer, options);
var context = new Context(record.GetFileName(Database), writer);

writer.WriteStartObject();
writer.WriteString("RecordName_", record.GetName(Database));
Expand Down Expand Up @@ -241,13 +241,11 @@ private sealed class Context
{
public string Path { get; }
public Utf8JsonWriter Writer { get; }
public DataCoreExtractionOptions Options { get; }

public Context(string path, Utf8JsonWriter writer, DataCoreExtractionOptions options)
public Context(string path, Utf8JsonWriter writer)
{
Path = path;
Writer = writer;
Options = options;
}
}
}
11 changes: 4 additions & 7 deletions src/StarBreaker.DataCore/DataCoreBinaryObjects.cs
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ private IDataCoreObject GetFromReference(string name, DataCoreReference referenc
return GetFromInstance(name, record.StructIndex, record.InstanceIndex, context, overrideName);
}

public IDataCoreObject GetFromMainRecord(DataCoreRecord record, DataCoreExtractionOptions options)
public IDataCoreObject GetFromMainRecord(DataCoreRecord record)
{
if (!Database.MainRecords.Contains(record.Id))
throw new InvalidOperationException("Can only extract main records");
Expand All @@ -174,7 +174,7 @@ public IDataCoreObject GetFromMainRecord(DataCoreRecord record, DataCoreExtracti
.Replace("/", "_")
.Replace("&", "_");

var context = new Context(record.GetFileName(Database), options);
var context = new Context(record.GetFileName(Database));

var element = GetFromInstance(recordName, record.StructIndex, record.InstanceIndex, context);

Expand All @@ -189,7 +189,7 @@ public IDataCoreObject GetFromMainRecord(DataCoreRecord record, DataCoreExtracti
return element;
}

public void SaveToFile(DataCoreRecord record, DataCoreExtractionOptions options, string path)
public void SaveToFile(DataCoreRecord record, string path)
{
throw new NotImplementedException();
}
Expand Down Expand Up @@ -248,13 +248,10 @@ private sealed class Context
public Dictionary<(int structIndex, int instanceIndex), IDataCoreObject> Elements { get; }

public string FileName { get; }
public DataCoreExtractionOptions Options { get; }

public Context(string fileName, DataCoreExtractionOptions options)
public Context(string fileName)
{
FileName = fileName;
Options = options;

Elements = [];
_weakPointerIds = [];
}
Expand Down
13 changes: 5 additions & 8 deletions src/StarBreaker.DataCore/DataCoreBinaryXml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ public DataCoreBinaryXml(DataCoreDatabase db)
Database = db;
}

public void SaveToFile(DataCoreRecord record, DataCoreExtractionOptions options, string path)
public void SaveToFile(DataCoreRecord record, string path)
{
using var fileStream = new FileStream(Path.ChangeExtension(path, "xml"), FileMode.Create);
using var writer = XmlWriter.Create(fileStream, new XmlWriterSettings
{
Indent = true
});

var context = new Context(record.GetFileName(Database), options, writer);
var context = new Context(record.GetFileName(Database), writer);

writer.WriteStartElement(XmlConvert.EncodeName(record.GetName(Database)));
context.Writer.WriteAttributeString("RecordId", record.Id.ToString());
Expand All @@ -37,7 +37,7 @@ public void SaveToFile(DataCoreRecord record, DataCoreExtractionOptions options,
context.Writer.Flush();
}

public string GetFromMainRecord(DataCoreRecord record, DataCoreExtractionOptions options)
public string GetFromMainRecord(DataCoreRecord record)
{
if (!Database.MainRecords.Contains(record.Id))
throw new InvalidOperationException("Can only extract main records");
Expand All @@ -48,7 +48,7 @@ public string GetFromMainRecord(DataCoreRecord record, DataCoreExtractionOptions
Indent = true
});

var context = new Context(record.GetFileName(Database), options, writer);
var context = new Context(record.GetFileName(Database), writer);

writer.WriteStartElement(XmlConvert.EncodeName(record.GetName(Database)));
writer.WriteAttributeString("RecordId", record.Id.ToString());
Expand Down Expand Up @@ -256,14 +256,11 @@ private void WriteFromReference(DataCoreReference reference, Context context)
private sealed class Context
{
public string Path { get; }
public DataCoreExtractionOptions Options { get; }

public XmlWriter Writer { get; }

public Context(string path, DataCoreExtractionOptions options, XmlWriter writer)
public Context(string path, XmlWriter writer)
{
Path = path;
Options = options;
Writer = writer;
}
}
Expand Down
10 changes: 0 additions & 10 deletions src/StarBreaker.DataCore/DataCoreExtractionOptions.cs

This file was deleted.

32 changes: 10 additions & 22 deletions src/StarBreaker.DataCore/DataForge.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ public Dictionary<string, DataCoreRecord> GetRecordsByFileName(string? fileNameF
return structsPerFileName;
}

public T GetFromRecord(DataCoreRecord record, DataCoreExtractionOptions? options = null)
public T GetFromRecord(DataCoreRecord record)
{
return DataCore.GetFromMainRecord(record, options ?? GetDefaultExtractionOptions());
return DataCore.GetFromMainRecord(record);
}

public T GetFromRecord(CigGuid recordGuid, DataCoreExtractionOptions? options = null)
public T GetFromRecord(CigGuid recordGuid)
{
return DataCore.GetFromMainRecord(DataCore.Database.GetRecord(recordGuid), options ?? GetDefaultExtractionOptions());
return DataCore.GetFromMainRecord(DataCore.Database.GetRecord(recordGuid));
}

public Dictionary<string, string[]> ExportEnums()
Expand All @@ -58,21 +58,20 @@ public Dictionary<string, string[]> ExportEnums()
return result;
}

public void ExtractAll(string outputFolder, string? fileNameFilter = null, IProgress<double>? progress = null, DataCoreExtractionOptions? options = null)
public void ExtractAll(string outputFolder, string? fileNameFilter = null, IProgress<double>? progress = null)
{
var progressValue = 0;
var recordsByFileName = GetRecordsByFileName(fileNameFilter);
var total = recordsByFileName.Count;

var options1 = options ?? GetDefaultExtractionOptions();

foreach (var (fileName, record) in recordsByFileName)
{
var filePath = Path.Combine(outputFolder, fileName);

Directory.CreateDirectory(Path.GetDirectoryName(filePath)!);

DataCore.SaveToFile(record, options1, filePath);
DataCore.SaveToFile(record, filePath);

var currentProgress = Interlocked.Increment(ref progressValue);
//only report progress every 250 records and when we are done
Expand All @@ -83,13 +82,12 @@ public void ExtractAll(string outputFolder, string? fileNameFilter = null, IProg
progress?.Report(1);
}

public void ExtractAllParallel(string outputFolder, string? fileNameFilter = null, IProgress<double>? progress = null, DataCoreExtractionOptions? options = null)
public void ExtractAllParallel(string outputFolder, string? fileNameFilter = null, IProgress<double>? progress = null)
{
var progressValue = 0;
var recordsByFileName = GetRecordsByFileName(fileNameFilter);
var total = recordsByFileName.Count;

var options1 = options ?? GetDefaultExtractionOptions();

Parallel.ForEach(recordsByFileName, kvp =>
{
Expand All @@ -98,7 +96,7 @@ public void ExtractAllParallel(string outputFolder, string? fileNameFilter = nul

Directory.CreateDirectory(Path.GetDirectoryName(filePath)!);

DataCore.SaveToFile(record, options1, filePath);
DataCore.SaveToFile(record, filePath);

var currentProgress = Interlocked.Increment(ref progressValue);
//only report progress every 250 records and when we are done
Expand All @@ -109,19 +107,18 @@ public void ExtractAllParallel(string outputFolder, string? fileNameFilter = nul
progress?.Report(1);
}

public void ExtractUnp4k(string outputFileName, IProgress<double>? progress = null, DataCoreExtractionOptions? options = null)
public void ExtractUnp4k(string outputFileName, IProgress<double>? progress = null)
{
var progressValue = 0;
var total = DataCore.Database.MainRecords.Count;

var doc = new XDocument(new XElement("DataCore"));

var options1 = options ?? GetDefaultExtractionOptions();

foreach (var recordId in DataCore.Database.MainRecords)
{
var record = DataCore.Database.GetRecord(recordId);
var node = DataCore.GetFromMainRecord(record, options1);
var node = DataCore.GetFromMainRecord(record);

doc.Root?.Add(node);

Expand All @@ -133,13 +130,4 @@ public void ExtractUnp4k(string outputFileName, IProgress<double>? progress = nu

doc.Save(outputFileName);
}

private static DataCoreExtractionOptions GetDefaultExtractionOptions() => new()
{
ShouldWriteMetadata = false,
ShouldWriteTypeNames = false,
ShouldWriteBaseTypeNames = false,
ShouldWriteEnumMetadata = false,
ShouldSkipEmptyArrays = false
};
}
4 changes: 2 additions & 2 deletions src/StarBreaker.DataCore/IDataCoreBinary.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ public interface IDataCoreBinary<out T>
{
DataCoreDatabase Database { get; }

T GetFromMainRecord(DataCoreRecord record, DataCoreExtractionOptions options);
T GetFromMainRecord(DataCoreRecord record);

void SaveToFile(DataCoreRecord record, DataCoreExtractionOptions options, string path);
void SaveToFile(DataCoreRecord record, string path);
}

0 comments on commit 1c9c5d2

Please sign in to comment.