Id[entity] 2.0 (real) (#9612)
* starter API * network ID cards * Port more stuff from old identity * Re-implement identity representation + name updating * move * proper name returning for `IdentityName` * move everything important to server, give in to temptation * shared / server / client split sadly. move ensure to shared and spawn to server * identity update queueing + identityblocker * fixes * and just like that it's usable for admins * huge identity pass * pass dos * jesus christ * figs :D * fuck u * fix bad merge. Co-authored-by: Moony <moonheart08@users.noreply.github.com>
This commit is contained in:
7
Content.Client/Access/IdCardSystem.cs
Normal file
7
Content.Client/Access/IdCardSystem.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
using Content.Shared.Access.Systems;
|
||||
|
||||
namespace Content.Client.Access;
|
||||
|
||||
public sealed class IdCardSystem : SharedIdCardSystem
|
||||
{
|
||||
}
|
||||
@@ -170,9 +170,12 @@ namespace Content.Client.Administration.UI
|
||||
if (pl.Antag)
|
||||
sb.Append(new Rune(0x1F5E1)); // 🗡
|
||||
|
||||
sb.AppendFormat("\"{0}\"", pl.CharacterName)
|
||||
.Append(' ')
|
||||
.Append(pl.Username);
|
||||
sb.AppendFormat("\"{0}\"", pl.CharacterName);
|
||||
|
||||
if (pl.IdentityName != pl.CharacterName && pl.IdentityName != string.Empty)
|
||||
sb.Append(' ').AppendFormat("[{0}]", pl.IdentityName);
|
||||
|
||||
sb.Append(' ').Append(pl.Username);
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
@@ -71,6 +71,8 @@ namespace Content.Client.Administration.UI.CustomControls
|
||||
foreach (var info in _adminSystem.PlayerList)
|
||||
{
|
||||
var displayName = $"{info.CharacterName} ({info.Username})";
|
||||
if (info.IdentityName != info.CharacterName)
|
||||
displayName += $" [{info.IdentityName}]";
|
||||
if (!string.IsNullOrEmpty(FilterLineEdit.Text) &&
|
||||
!displayName.ToLowerInvariant().Contains(FilterLineEdit.Text.Trim().ToLowerInvariant()))
|
||||
{
|
||||
|
||||
@@ -100,6 +100,7 @@ namespace Content.Client.Administration.UI.Tabs.PlayerTab
|
||||
{
|
||||
var entry = new PlayerTabEntry(player.Username,
|
||||
player.CharacterName,
|
||||
player.IdentityName,
|
||||
player.StartingJob,
|
||||
player.Antag ? "YES" : "NO",
|
||||
new StyleBoxFlat(useAltColor ? _altColor : _defaultColor),
|
||||
|
||||
@@ -10,7 +10,7 @@ public sealed partial class PlayerTabEntry : ContainerButton
|
||||
{
|
||||
public EntityUid? PlayerUid;
|
||||
|
||||
public PlayerTabEntry(string username, string character, string job, string antagonist, StyleBox styleBox, bool connected)
|
||||
public PlayerTabEntry(string username, string character, string identity, string job, string antagonist, StyleBox styleBox, bool connected)
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
|
||||
@@ -19,6 +19,8 @@ public sealed partial class PlayerTabEntry : ContainerButton
|
||||
UsernameLabel.StyleClasses.Add("Disabled");
|
||||
JobLabel.Text = job;
|
||||
CharacterLabel.Text = character;
|
||||
if (identity != character)
|
||||
CharacterLabel.Text += $" [{identity}]";
|
||||
AntagonistLabel.Text = antagonist;
|
||||
BackgroundColorPanel.PanelOverride = styleBox;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ using Content.Client.Cargo.UI;
|
||||
using Content.Shared.Cargo.BUI;
|
||||
using Content.Shared.Cargo.Events;
|
||||
using Content.Shared.Cargo.Prototypes;
|
||||
using Content.Shared.IdentityManagement;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Client.Player;
|
||||
using Robust.Shared.Prototypes;
|
||||
@@ -55,7 +56,7 @@ namespace Content.Client.Cargo.BUI
|
||||
string orderRequester;
|
||||
|
||||
if (entityManager.TryGetComponent<MetaDataComponent>(localPlayer, out var metadata))
|
||||
orderRequester = metadata.EntityName;
|
||||
orderRequester = Identity.Name(localPlayer.Value, entityManager);
|
||||
else
|
||||
orderRequester = string.Empty;
|
||||
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
using Content.Client.Administration.Managers;
|
||||
using Content.Shared.Administration;
|
||||
using Content.Shared.IdentityManagement;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Client.Player;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.IoC;
|
||||
@@ -11,6 +15,7 @@ namespace Content.Client.ContextMenu.UI
|
||||
public const string StyleClassEntityMenuCountText = "contextMenuCount";
|
||||
|
||||
[Dependency] private IEntityManager _entityManager = default!;
|
||||
[Dependency] private IPlayerManager _playerManager = default!;
|
||||
|
||||
/// <summary>
|
||||
/// The entity that can be accessed by interacting with this element.
|
||||
@@ -74,10 +79,12 @@ namespace Content.Client.ContextMenu.UI
|
||||
|
||||
EntityIcon.Sprite = _entityManager.GetComponentOrNull<ISpriteComponent>(entity);
|
||||
|
||||
if (UserInterfaceManager.DebugMonitors.Visible)
|
||||
var admin = IoCManager.Resolve<IClientAdminManager>();
|
||||
|
||||
if (admin.HasFlag(AdminFlags.Admin | AdminFlags.Debug))
|
||||
Text = _entityManager.ToPrettyString(entity.Value);
|
||||
else
|
||||
Text = _entityManager.GetComponent<MetaDataComponent>(entity.Value).EntityName;
|
||||
Text = Identity.Name(entity.Value, _entityManager, _playerManager.LocalPlayer!.ControlledEntity!);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Content.Shared.IdentityManagement;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.IoC;
|
||||
@@ -21,7 +22,7 @@ namespace Content.Client.ContextMenu.UI
|
||||
{
|
||||
if (GroupingContextMenuType == 0)
|
||||
{
|
||||
var newEntities = entities.GroupBy(e => _entityManager.GetComponent<MetaDataComponent>(e).EntityName + (_entityManager.GetComponent<MetaDataComponent>(e).EntityPrototype?.ID ?? string.Empty)).ToList();
|
||||
var newEntities = entities.GroupBy(e => Identity.Name(e, _entityManager) + (_entityManager.GetComponent<MetaDataComponent>(e).EntityPrototype?.ID ?? string.Empty)).ToList();
|
||||
return newEntities.Select(grp => grp.ToList()).ToList();
|
||||
}
|
||||
else
|
||||
|
||||
@@ -2,6 +2,7 @@ using System.Linq;
|
||||
using System.Threading;
|
||||
using Content.Client.Verbs;
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.IdentityManagement;
|
||||
using Content.Shared.Input;
|
||||
using Content.Shared.Verbs;
|
||||
using JetBrains.Annotations;
|
||||
@@ -192,7 +193,7 @@ namespace Content.Client.Examine
|
||||
|
||||
hBox.AddChild(new Label
|
||||
{
|
||||
Text = EntityManager.GetComponent<MetaDataComponent>(target).EntityName,
|
||||
Text = Identity.Name(target, EntityManager, player),
|
||||
HorizontalExpand = true,
|
||||
});
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ using Content.Shared.Disease.Components;
|
||||
using Content.Shared.FixedPoint;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Content.Shared.Damage;
|
||||
|
||||
using Content.Shared.IdentityManagement;
|
||||
using static Content.Shared.MedicalScanner.SharedHealthAnalyzerComponent;
|
||||
|
||||
namespace Content.Client.HealthAnalyzer.UI
|
||||
@@ -28,8 +28,9 @@ namespace Content.Client.HealthAnalyzer.UI
|
||||
if (msg.TargetEntity != null && entities.TryGetComponent<DamageableComponent>(msg.TargetEntity, out var damageable))
|
||||
{
|
||||
string entityName = "Unknown";
|
||||
if (msg.TargetEntity != null && entities.TryGetComponent<MetaDataComponent>(msg.TargetEntity.Value, out var metaData))
|
||||
entityName = metaData.EntityName;
|
||||
if (msg.TargetEntity != null &&
|
||||
entities.TryGetComponent<MetaDataComponent>(msg.TargetEntity.Value, out var metaData))
|
||||
entityName = Identity.Name(msg.TargetEntity.Value, entities);
|
||||
|
||||
IReadOnlyDictionary<string, FixedPoint2> DamagePerGroup = damageable.DamagePerGroup;
|
||||
IReadOnlyDictionary<string, FixedPoint2> DamagePerType = damageable.Damage.DamageDict;
|
||||
|
||||
7
Content.Client/IdentityManagement/IdentitySystem.cs
Normal file
7
Content.Client/IdentityManagement/IdentitySystem.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
using Content.Shared.IdentityManagement;
|
||||
|
||||
namespace Content.Client.IdentityManagement;
|
||||
|
||||
public class IdentitySystem : SharedIdentitySystem
|
||||
{
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using Content.Client.Strip;
|
||||
using Content.Shared.IdentityManagement;
|
||||
using Content.Shared.Strip.Components;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Client.GameObjects;
|
||||
@@ -28,7 +29,8 @@ namespace Content.Client.Inventory
|
||||
{
|
||||
base.Open();
|
||||
|
||||
_strippingMenu = new StrippingMenu($"{Loc.GetString("strippable-bound-user-interface-stripping-menu-title",("ownerName", IoCManager.Resolve<IEntityManager>().GetComponent<MetaDataComponent>(Owner.Owner).EntityName))}");
|
||||
var entMan = IoCManager.Resolve<IEntityManager>();
|
||||
_strippingMenu = new StrippingMenu($"{Loc.GetString("strippable-bound-user-interface-stripping-menu-title", ("ownerName", Identity.Name(Owner.Owner, entMan)))}");
|
||||
|
||||
_strippingMenu.OnClose += Close;
|
||||
_strippingMenu.OpenCentered();
|
||||
|
||||
@@ -4,6 +4,7 @@ using Content.Client.Items.Components;
|
||||
using Content.Client.Resources;
|
||||
using Content.Client.Stylesheets;
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.IdentityManagement;
|
||||
using Robust.Client.Graphics;
|
||||
using Robust.Client.UserInterface;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
@@ -159,11 +160,12 @@ namespace Content.Client.Items.UI
|
||||
if (_entityManager.TryGetComponent(_entity, out HandVirtualItemComponent? virtualItem)
|
||||
&& _entityManager.EntityExists(virtualItem.BlockingEntity))
|
||||
{
|
||||
_itemNameLabel.Text = _entityManager.GetComponent<MetaDataComponent>(virtualItem.BlockingEntity).EntityName;
|
||||
// Uses identity because we can be blocked by pulling someone
|
||||
_itemNameLabel.Text = Identity.Name(virtualItem.BlockingEntity, _entityManager);
|
||||
}
|
||||
else
|
||||
{
|
||||
_itemNameLabel.Text = _entityManager.GetComponent<MetaDataComponent>(_entity.Value).EntityName;
|
||||
_itemNameLabel.Text = Identity.Name(_entity.Value, _entityManager);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user