Make ToPrettyString() take in nullable EntityUids (#4396)

This commit is contained in:
Leon Friedrich
2023-09-15 20:43:39 +12:00
committed by GitHub
parent e323a67806
commit 4a4a135089
6 changed files with 65 additions and 14 deletions

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Prometheus;
using Robust.Client.GameStates;
using Robust.Client.Player;
@@ -92,12 +93,16 @@ namespace Robust.Client.GameObjects
base.Dirty(uid, component, meta);
}
public override EntityStringRepresentation ToPrettyString(EntityUid uid)
[return: NotNullIfNotNull("uid")]
public override EntityStringRepresentation? ToPrettyString(EntityUid? uid)
{
if (uid == null)
return null;
if (_playerManager.LocalPlayer?.ControlledEntity == uid)
return base.ToPrettyString(uid) with { Session = _playerManager.LocalPlayer.Session };
else
return base.ToPrettyString(uid);
return base.ToPrettyString(uid).Value with { Session = _playerManager.LocalPlayer.Session };
return base.ToPrettyString(uid);
}
public override void RaisePredictiveEvent<T>(T msg)

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using JetBrains.Annotations;
using Prometheus;
using Robust.Server.Player;
@@ -108,11 +109,15 @@ namespace Robust.Server.GameObjects
}
}
public override EntityStringRepresentation ToPrettyString(EntityUid uid)
[return: NotNullIfNotNull("uid")]
public override EntityStringRepresentation? ToPrettyString(EntityUid? uid)
{
if (uid == null)
return null;
TryGetComponent(uid, out ActorComponent? actor);
return base.ToPrettyString(uid) with { Session = actor?.PlayerSession };
return base.ToPrettyString(uid).Value with { Session = actor?.PlayerSession };
}
#region IEntityNetworkManager impl

View File

@@ -218,7 +218,8 @@ namespace Robust.Shared.Scripting
public EntityPrototype? Prototype(EntityUid uid)
=> ent.GetComponent<MetaDataComponent>(uid).EntityPrototype;
public EntityStringRepresentation ToPrettyString(EntityUid uid)
[return: NotNullIfNotNull("uid")]
public EntityStringRepresentation? ToPrettyString(EntityUid? uid)
=> ent.ToPrettyString(uid);
public IEnumerable<IComponent> AllComps(EntityUid uid)

View File

@@ -740,23 +740,34 @@ namespace Robust.Shared.GameObjects
}
/// <inheritdoc />
public virtual EntityStringRepresentation ToPrettyString(EntityUid uid)
[return: NotNullIfNotNull("uid")]
public virtual EntityStringRepresentation? ToPrettyString(EntityUid? uid)
{
// We want to retrieve the MetaData component even if it is deleted.
if (!_entTraitArray[CompIdx.ArrayIndex<MetaDataComponent>()].TryGetValue(uid, out var component))
return new EntityStringRepresentation(uid, true);
if (uid == null)
return null;
if (!_entTraitArray[CompIdx.ArrayIndex<MetaDataComponent>()].TryGetValue(uid.Value, out var component))
return new EntityStringRepresentation(uid.Value, true);
var metadata = (MetaDataComponent) component;
return ToPrettyString(uid, metadata);
return ToPrettyString(uid.Value, metadata);
}
/// <inheritdoc />
public EntityStringRepresentation ToPrettyString(NetEntity netEntity)
[return: NotNullIfNotNull("netEntity")]
public EntityStringRepresentation? ToPrettyString(NetEntity? netEntity)
{
return ToPrettyString(GetEntity(netEntity));
}
public EntityStringRepresentation ToPrettyString(EntityUid uid)
=> ToPrettyString((EntityUid?) uid).Value;
public EntityStringRepresentation ToPrettyString(NetEntity netEntity)
=> ToPrettyString((NetEntity?) netEntity).Value;
private EntityStringRepresentation ToPrettyString(EntityUid uid, MetaDataComponent metadata)
{
return new EntityStringRepresentation(uid, metadata.EntityDeleted, metadata.EntityName, metadata.EntityPrototype?.ID);

View File

@@ -398,18 +398,30 @@ public partial class EntitySystem
/// <inheritdoc cref="IEntityManager.ToPrettyString"/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
protected EntityStringRepresentation ToPrettyString(EntityUid uid)
[return: NotNullIfNotNull("uid")]
protected EntityStringRepresentation? ToPrettyString(EntityUid? uid)
{
return EntityManager.ToPrettyString(uid);
}
/// <inheritdoc cref="IEntityManager.ToPrettyString"/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
protected EntityStringRepresentation ToPrettyString(NetEntity netEntity)
[return: NotNullIfNotNull("netEntity")]
protected EntityStringRepresentation? ToPrettyString(NetEntity? netEntity)
{
return EntityManager.ToPrettyString(netEntity);
}
/// <inheritdoc cref="IEntityManager.ToPrettyString"/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
protected EntityStringRepresentation ToPrettyString(EntityUid uid)
=> ToPrettyString((EntityUid?) uid).Value;
/// <inheritdoc cref="IEntityManager.ToPrettyString"/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
protected EntityStringRepresentation ToPrettyString(NetEntity netEntity)
=> ToPrettyString((NetEntity?) netEntity).Value;
#endregion
#region Component Get

View File

@@ -129,6 +129,23 @@ namespace Robust.Shared.GameObjects
/// </summary>
EntityStringRepresentation ToPrettyString(EntityUid uid);
/// <summary>
/// Returns a string representation of an entity with various information regarding it.
/// </summary>
EntityStringRepresentation ToPrettyString(NetEntity netEntity);
/// <summary>
/// Returns a string representation of an entity with various information regarding it.
/// </summary>
[return: NotNullIfNotNull("uid")]
EntityStringRepresentation? ToPrettyString(EntityUid? uid);
/// <summary>
/// Returns a string representation of an entity with various information regarding it.
/// </summary>
[return: NotNullIfNotNull("netEntity")]
EntityStringRepresentation? ToPrettyString(NetEntity? netEntity);
#endregion Entity Management
/// <summary>