prototype composition (#9979) & updates submodule
* prototype composition * a * fixes build * fixes test * updates submodule Co-authored-by: Paul Ritter <ritter.paul1@gmail.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array;
|
||||
|
||||
namespace Content.Server.Wires;
|
||||
|
||||
@@ -16,8 +17,8 @@ public sealed class WireLayoutPrototype : IPrototype, IInheritingPrototype
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[ParentDataField(typeof(AbstractPrototypeIdSerializer<WireLayoutPrototype>))]
|
||||
public string? Parent { get; } = default!;
|
||||
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<WireLayoutPrototype>))]
|
||||
public string[]? Parents { get; private set; }
|
||||
|
||||
[AbstractDataField]
|
||||
public bool Abstract { get; }
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
|
||||
namespace Content.Server.Wires;
|
||||
|
||||
@@ -28,7 +29,7 @@ public sealed class WiresComponent : Component
|
||||
/// The layout ID of this entity's wires.
|
||||
/// </summary>
|
||||
[ViewVariables]
|
||||
[DataField("LayoutId", required: true)]
|
||||
[DataField("LayoutId", customTypeSerializer: typeof(PrototypeIdSerializer<WireLayoutPrototype>), required: true)]
|
||||
public string LayoutId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -66,30 +66,17 @@ public sealed class WiresSystem : EntitySystem
|
||||
|
||||
WireLayout? layout = null;
|
||||
List<Wire>? wireSet = null;
|
||||
if (wires.LayoutId != null)
|
||||
if (!wires.AlwaysRandomize)
|
||||
{
|
||||
if (!wires.AlwaysRandomize)
|
||||
{
|
||||
TryGetLayout(wires.LayoutId, out layout);
|
||||
}
|
||||
|
||||
if (!_protoMan.TryIndex(wires.LayoutId, out WireLayoutPrototype? layoutPrototype))
|
||||
return;
|
||||
|
||||
// does the prototype have a parent (and are the wires empty?) if so, we just create
|
||||
// a new layout based on that
|
||||
//
|
||||
// TODO: Merge wire layouts...
|
||||
if (!string.IsNullOrEmpty(layoutPrototype.Parent) && layoutPrototype.Wires == null)
|
||||
{
|
||||
var parent = layoutPrototype.Parent;
|
||||
|
||||
if (!_protoMan.TryIndex(parent, out WireLayoutPrototype? parentPrototype))
|
||||
return;
|
||||
|
||||
layoutPrototype = parentPrototype;
|
||||
}
|
||||
TryGetLayout(wires.LayoutId, out layout);
|
||||
}
|
||||
|
||||
// does the prototype have a parent (and are the wires empty?) if so, we just create
|
||||
// a new layout based on that
|
||||
//
|
||||
// TODO: Merge wire layouts...
|
||||
foreach (var layoutPrototype in _protoMan.EnumerateParents<WireLayoutPrototype>(wires.LayoutId))
|
||||
{
|
||||
if (layoutPrototype.Wires != null)
|
||||
{
|
||||
foreach (var wire in layoutPrototype.Wires)
|
||||
@@ -98,6 +85,7 @@ public sealed class WiresSystem : EntitySystem
|
||||
}
|
||||
|
||||
wireSet = CreateWireSet(uid, layout, layoutPrototype.Wires, layoutPrototype.DummyWires);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,7 +96,7 @@ public sealed class WiresSystem : EntitySystem
|
||||
|
||||
wires.WiresList.AddRange(wireSet);
|
||||
|
||||
Dictionary<object, int> types = new Dictionary<object, int>();
|
||||
var types = new Dictionary<object, int>();
|
||||
|
||||
if (layout != null)
|
||||
{
|
||||
|
||||
@@ -9,6 +9,7 @@ using Robust.Shared.Map;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary;
|
||||
|
||||
namespace Content.Shared.Chemistry.Reagent
|
||||
@@ -30,8 +31,8 @@ namespace Content.Shared.Chemistry.Reagent
|
||||
[DataField("group")]
|
||||
public string Group { get; } = "Unknown";
|
||||
|
||||
[ParentDataFieldAttribute(typeof(AbstractPrototypeIdSerializer<ReagentPrototype>))]
|
||||
public string? Parent { get; private set; }
|
||||
[ParentDataFieldAttribute(typeof(AbstractPrototypeIdArraySerializer<ReagentPrototype>))]
|
||||
public string[]? Parents { get; private set; }
|
||||
|
||||
[NeverPushInheritance]
|
||||
[AbstractDataFieldAttribute]
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array;
|
||||
|
||||
namespace Content.Shared.Disease
|
||||
{
|
||||
@@ -18,8 +20,8 @@ namespace Content.Shared.Disease
|
||||
[DataField("name")]
|
||||
public string Name { get; } = string.Empty;
|
||||
|
||||
[ParentDataFieldAttribute(typeof(AbstractPrototypeIdSerializer<DiseasePrototype>))]
|
||||
public string? Parent { get; private set; }
|
||||
[ParentDataFieldAttribute(typeof(AbstractPrototypeIdArraySerializer<DiseasePrototype>))]
|
||||
public string[]? Parents { get; private set; }
|
||||
|
||||
[NeverPushInheritance]
|
||||
[AbstractDataFieldAttribute]
|
||||
|
||||
@@ -4,6 +4,7 @@ using Robust.Shared.Audio;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array;
|
||||
|
||||
namespace Content.Shared.Maps
|
||||
{
|
||||
@@ -11,8 +12,8 @@ namespace Content.Shared.Maps
|
||||
[Prototype("tile")]
|
||||
public sealed class ContentTileDefinition : IPrototype, IInheritingPrototype, ITileDefinition
|
||||
{
|
||||
[ParentDataFieldAttribute(typeof(AbstractPrototypeIdSerializer<ContentTileDefinition>))]
|
||||
public string? Parent { get; private set; }
|
||||
[ParentDataFieldAttribute(typeof(AbstractPrototypeIdArraySerializer<ContentTileDefinition>))]
|
||||
public string[]? Parents { get; private set; }
|
||||
|
||||
[NeverPushInheritance]
|
||||
[AbstractDataFieldAttribute]
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using Content.Shared.Stacks;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared.Materials
|
||||
@@ -13,8 +14,8 @@ namespace Content.Shared.Materials
|
||||
public sealed class MaterialPrototype : IPrototype, IInheritingPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[ParentDataField(typeof(AbstractPrototypeIdSerializer<MaterialPrototype>))]
|
||||
public string? Parent { get; } = null;
|
||||
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<MaterialPrototype>))]
|
||||
public string[]? Parents { get; }
|
||||
|
||||
[ViewVariables]
|
||||
[AbstractDataFieldAttribute]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array;
|
||||
|
||||
namespace Content.Shared.Polymorph
|
||||
{
|
||||
@@ -17,8 +18,8 @@ namespace Content.Shared.Polymorph
|
||||
[DataField("name")]
|
||||
public string Name { get; } = string.Empty;
|
||||
|
||||
[ParentDataField(typeof(AbstractPrototypeIdSerializer<PolymorphPrototype>))]
|
||||
public string? Parent { get; private set; }
|
||||
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<PolymorphPrototype>))]
|
||||
public string[]? Parents { get; private set; }
|
||||
|
||||
[NeverPushInheritance]
|
||||
[AbstractDataFieldAttribute]
|
||||
|
||||
Submodule RobustToolbox updated: 9f25c14707...2decf31a78
Reference in New Issue
Block a user