using Content.Shared.Clothing; using Content.Shared.Preferences.Loadouts; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; using Robust.Shared.Map; using Robust.Shared.Prototypes; using Robust.Shared.Utility; namespace Content.Client.Lobby.UI.Loadouts; [GenerateTypedNameReferences] public sealed partial class LoadoutContainer : BoxContainer { [Dependency] private readonly IEntityManager _entManager = default!; [Dependency] private readonly IPrototypeManager _protoManager = default!; private readonly EntityUid? _entity; public Button Select => SelectButton; public LoadoutContainer(ProtoId proto, bool disabled, FormattedMessage? reason) { RobustXamlLoader.Load(this); IoCManager.InjectDependencies(this); SelectButton.Disabled = disabled; if (disabled && reason != null) { var tooltip = new Tooltip(); tooltip.SetMessage(reason); SelectButton.TooltipSupplier = _ => tooltip; } if (_protoManager.TryIndex(proto, out var loadProto)) { var ent = _entManager.System().GetFirstOrNull(loadProto); if (ent != null) { _entity = _entManager.SpawnEntity(ent, MapCoordinates.Nullspace); Sprite.SetEntity(_entity); var spriteTooltip = new Tooltip(); spriteTooltip.SetMessage(FormattedMessage.FromUnformatted(_entManager.GetComponent(_entity.Value).EntityDescription)); TooltipSupplier = _ => spriteTooltip; } } } protected override void Dispose(bool disposing) { base.Dispose(disposing); if (!disposing) return; _entManager.DeleteEntity(_entity); } public bool Pressed { get => SelectButton.Pressed; set => SelectButton.Pressed = value; } public string? Text { get => SelectButton.Text; set => SelectButton.Text = value; } }