Files
Markus Isberg 6be757a45b Build 0.18.5.0
2022-06-03 22:29:04 +09:00

57 lines
1.6 KiB
C#

using Barotrauma;
using System;
using System.Linq;
using System.Xml.Linq;
namespace Barotrauma
{
[RequiredByCorePackage]
sealed class JobsFile : ContentFile
{
public JobsFile(ContentPackage contentPackage, ContentPath path) : base(contentPackage, path) { }
public override void LoadFile()
{
XDocument doc = XMLExtensions.TryLoadXml(Path);
if (doc == null) { return; }
LoadElements(doc.Root.FromPackage(ContentPackage), false);
}
private void LoadElements(ContentXElement mainElement, bool isOverride)
{
foreach (var element in mainElement.Elements())
{
if (element.NameAsIdentifier() == "ItemRepairPriorities")
{
foreach (var subElement in element.Elements())
{
ItemRepairPriority prio = new ItemRepairPriority(subElement, this);
ItemRepairPriority.Prefabs.Add(prio, isOverride);
}
}
else if (element.IsOverride())
{
LoadElements(element, true);
}
else
{
var job = new JobPrefab(element, this);
JobPrefab.Prefabs.Add(job, isOverride);
}
}
}
public override void UnloadFile()
{
JobPrefab.Prefabs.RemoveByFile(this);
ItemRepairPriority.Prefabs.RemoveByFile(this);
}
public override void Sort()
{
JobPrefab.Prefabs.SortAll();
}
}
}