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;
}