using System.Collections.Generic; using System.Linq; using NUnit.Framework; using Robust.Shared.GameObjects; using Robust.Shared.Map; using Robust.Shared.Maths; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.Utility; namespace Robust.UnitTesting.Shared.EntitySerialization; [RegisterComponent] internal sealed partial class EntitySaveTestComponent : Component { /// /// Give each entity a unique id to identify them across map saves & loads. /// [DataField] public string? Id; [DataField] public EntityUid? Entity; [DataField, AlwaysPushInheritance] public List List = []; /// /// Find an entity with a with the matching id. /// public static Entity Find(string id, IEntityManager entMan) { var ents = entMan.AllEntities(); var matching = ents.Where(x => x.Comp.Id == id).ToArray(); Assert.That(matching, Has.Length.EqualTo(1)); return (matching[0].Owner, entMan.GetComponent(matching[0].Owner), matching[0].Comp); } public static Entity Get(EntityUid uid, IEntityManager entMan) { return new Entity( uid, entMan.GetComponent(uid), entMan.EnsureComponent(uid)); } } /// /// Dummy tile definition for serializing grids. /// [Prototype("testTileDef")] internal sealed partial class TileDef : ITileDefinition { public ushort TileId { get; set; } public string Name => ID; [IdDataField] public string ID { get; private set; } = default!; public ResPath? Sprite => null; public Dictionary EdgeSprites => new(); public int EdgeSpritePriority => 0; public float Friction => 0; public byte Variants => 0; public void AssignTileId(ushort id) => TileId = id; }