forked from chomp/ChompQuestVerifier
47 lines
1.3 KiB
C#
47 lines
1.3 KiB
C#
using DumpCleaner;
|
|
using QuestValidator.Common;
|
|
using QuestValidator.Common.Helpers;
|
|
using System.Text.Json;
|
|
|
|
public class LocationParser
|
|
{
|
|
private readonly Dictionary<string, Location> locations = new();
|
|
private readonly string outputPath;
|
|
|
|
public LocationParser(string outputPath)
|
|
{
|
|
this.outputPath = outputPath;
|
|
}
|
|
|
|
internal void AddLocalLootDump(Dump dumpFile)
|
|
{
|
|
var locationData = JsonSerializer.Deserialize<Location>(dumpFile.data.ToString());
|
|
var locationName = locationData.Id;
|
|
|
|
// already parsed, skip
|
|
if (locations.ContainsKey(locationName))
|
|
{
|
|
return;
|
|
}
|
|
|
|
// remove loot as not needed for base.json
|
|
locationData.Loot?.Clear();
|
|
|
|
locations.Add(locationName, locationData);
|
|
}
|
|
|
|
internal void CreateLocationFile()
|
|
{
|
|
foreach (var location in locations)
|
|
{
|
|
|
|
if (string.Equals(location.Value.Id, "lighthouse2", StringComparison.CurrentCultureIgnoreCase))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
JsonWriter.WriteJson(location.Value, $"{outputPath}/{location.Value.Id.ToLower()}", Directory.GetCurrentDirectory(), "base");
|
|
LoggingHelpers.LogToConsole($"Found map file: {location.Value.Id} wrote file to output folder");
|
|
}
|
|
}
|
|
} |