Files
tbd-station-14/Content.Shared/Roles/StartingGearPrototype.cs
DrSmugleaf 4a8ed41e3a Fix namespaces and optimize imports (#1651)
* Fix namespaces and optimize imports

* Cleanup fixes

* Merge conflict fixes

* Merge conflict fixes

* Merge conflict fixes
2020-08-13 14:40:27 +02:00

50 lines
1.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
using Robust.Shared.ViewVariables;
using YamlDotNet.RepresentationModel;
using static Content.Shared.GameObjects.Components.Inventory.EquipmentSlotDefines;
namespace Content.Shared.Roles
{
[Prototype("startingGear")]
public class StartingGearPrototype : IPrototype, IIndexedPrototype
{
private string _id;
private Dictionary<Slots, string> _equipment;
public IReadOnlyDictionary<string, string> Inhand => _inHand;
/// <summary>
/// hand index, item prototype
/// </summary>
private Dictionary<string, string> _inHand;
[ViewVariables] public string ID => _id;
[ViewVariables] public IReadOnlyDictionary<Slots, string> Equipment => _equipment;
public void LoadFrom(YamlMappingNode mapping)
{
var serializer = YamlObjectSerializer.NewReader(mapping);
serializer.DataField(ref _id, "id", string.Empty);
serializer.DataField(ref _inHand, "inhand", new Dictionary<string, string>(0));
var equipment = serializer.ReadDataField<Dictionary<string, string>>("equipment");
_equipment = equipment.ToDictionary(slotStr =>
{
var (key, _) = slotStr;
if (!Enum.TryParse(key, true, out Slots slot))
{
throw new Exception($"{key} is an invalid equipment slot.");
}
return slot;
}, type => type.Value);
}
}
}