68 lines
2.2 KiB
C#
68 lines
2.2 KiB
C#
using System;
|
|
using System.Xml.Linq;
|
|
|
|
namespace Barotrauma
|
|
{
|
|
sealed class LevelGenerationParametersFile : ContentFile
|
|
{
|
|
public LevelGenerationParametersFile(ContentPackage contentPackage, ContentPath path) : base(contentPackage, path) { }
|
|
|
|
private void LoadBiomes(ContentXElement element, bool isOverride)
|
|
{
|
|
foreach (var subElement in element.Elements())
|
|
{
|
|
Biome biome = new Biome(subElement, this);
|
|
Biome.Prefabs.Add(biome, isOverride);
|
|
}
|
|
}
|
|
|
|
private void LoadLevelGenerationParams(ContentXElement element, bool isOverride)
|
|
{
|
|
LevelGenerationParams lParams = new LevelGenerationParams(element, this);
|
|
LevelGenerationParams.LevelParams.Add(lParams, isOverride);
|
|
}
|
|
|
|
private void LoadSubElements(ContentXElement element, bool overridePropagation)
|
|
{
|
|
foreach (var subElement in element.Elements())
|
|
{
|
|
if (subElement.IsOverride())
|
|
{
|
|
LoadSubElements(subElement, true);
|
|
}
|
|
else if (subElement.NameAsIdentifier() == "clear")
|
|
{
|
|
LevelGenerationParams.LevelParams.AddOverrideFile(this);
|
|
Biome.Prefabs.AddOverrideFile(this);
|
|
}
|
|
else if (subElement.NameAsIdentifier() == "biomes")
|
|
{
|
|
LoadBiomes(subElement, overridePropagation);
|
|
}
|
|
else
|
|
{
|
|
LoadLevelGenerationParams(subElement, overridePropagation);
|
|
}
|
|
}
|
|
}
|
|
|
|
public override void LoadFile()
|
|
{
|
|
XDocument doc = XMLExtensions.TryLoadXml(Path);
|
|
if (doc is null) { return; }
|
|
LoadSubElements(doc.Root.FromPackage(ContentPackage), false);
|
|
}
|
|
|
|
public override void UnloadFile()
|
|
{
|
|
LevelGenerationParams.LevelParams.RemoveByFile(this);
|
|
Biome.Prefabs.RemoveByFile(this);
|
|
}
|
|
|
|
public override void Sort()
|
|
{
|
|
LevelGenerationParams.LevelParams.SortAll();
|
|
Biome.Prefabs.SortAll();
|
|
}
|
|
}
|
|
} |