Content PR for YAML hot reloading (#3319)

* Content PR for YAML hot reloading

* Add CanAdminReloadPrototypes (host permission)

* IndexedPrototype fixes
This commit is contained in:
DrSmugleaf
2021-02-20 00:05:24 +01:00
committed by GitHub
parent 0ae4a6792f
commit 3e702723fd
42 changed files with 95 additions and 54 deletions

View File

@@ -12,23 +12,29 @@ namespace Content.Shared.Alert
[Prototype("alertOrder")]
public class AlertOrderPrototype : IPrototype, IComparer<AlertPrototype>
{
public string ID { get; private set; }
private readonly Dictionary<AlertType, int> _typeToIdx = new();
private readonly Dictionary<AlertCategory, int> _categoryToIdx = new();
public void LoadFrom(YamlMappingNode mapping)
{
var serializer = YamlObjectSerializer.NewReader(mapping);
serializer.DataField(this, x => x.ID, "id", string.Empty);
if (!mapping.TryGetNode("order", out YamlSequenceNode orderMapping)) return;
int i = 0;
var i = 0;
foreach (var entryYaml in orderMapping)
{
var orderEntry = (YamlMappingNode) entryYaml;
var serializer = YamlObjectSerializer.NewReader(orderEntry);
if (serializer.TryReadDataField("category", out AlertCategory alertCategory))
var orderSerializer = YamlObjectSerializer.NewReader(orderEntry);
if (orderSerializer.TryReadDataField("category", out AlertCategory alertCategory))
{
_categoryToIdx[alertCategory] = i++;
}
else if (serializer.TryReadDataField("alertType", out AlertType alertType))
else if (orderSerializer.TryReadDataField("alertType", out AlertType alertType))
{
_typeToIdx[alertType] = i++;
}