using Content.Shared.Preferences; using Content.Shared.Roles; using Robust.Client.UserInterface.Controls; using Robust.Shared.Player; using Robust.Shared.Prototypes; namespace Content.Client.Lobby.UI.ProfileEditorControls; public sealed partial class ProfilePreviewSpriteView : SpriteView { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly ISharedPlayerManager _playerManager = default!; /// /// Entity used for the profile editor preview /// public EntityUid PreviewDummy; public ProfilePreviewSpriteView() { IoCManager.InjectDependencies(this); } /// /// Reloads the entire dummy entity for preview. /// /// /// This is expensive so not recommended to run if you have a slider. /// public void LoadPreview(HumanoidCharacterProfile profile, JobPrototype? jobOverride = null, bool showClothes = true) { EntMan.DeleteEntity(PreviewDummy); PreviewDummy = EntityUid.Invalid; LoadHumanoidEntity(profile, jobOverride, showClothes); SetEntity(PreviewDummy); SetName(profile.Name); } /// /// Sets the preview entity's name without reloading anything else. /// public void SetName(string newName) { EntMan.System().SetEntityName(PreviewDummy, newName); } /// /// A slim reload that only updates the entity itself and not any of the job entities, etc. /// public void ReloadProfilePreview(HumanoidCharacterProfile profile) { ReloadHumanoidEntity(profile); } public void ClearPreview() { EntMan.DeleteEntity(PreviewDummy); PreviewDummy = EntityUid.Invalid; } protected override void ExitedTree() { base.ExitedTree(); ClearPreview(); } }