| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using System.Linq;
- using Content.Client.Humanoid;
- using Content.Shared.Clothing;
- using Content.Shared.Humanoid;
- using Content.Shared.Humanoid.Prototypes;
- using Content.Shared.Preferences;
- using Content.Shared.Preferences.Loadouts;
- using Content.Shared.Roles;
- using Robust.Client.AutoGenerated;
- using Robust.Client.UserInterface.Controls;
- using Robust.Client.UserInterface.XAML;
- using Robust.Shared.Map;
- using Robust.Shared.Prototypes;
- namespace Content.Client.Lobby.UI;
- /// <summary>
- /// Holds character data on the side of the setup GUI.
- /// </summary>
- [GenerateTypedNameReferences]
- public sealed partial class CharacterPickerButton : ContainerButton
- {
- private IEntityManager _entManager;
- private EntityUid _previewDummy;
- /// <summary>
- /// Invoked if we should delete the attached character
- /// </summary>
- public event Action? OnDeletePressed;
- public CharacterPickerButton(
- IEntityManager entityManager,
- IPrototypeManager prototypeManager,
- ButtonGroup group,
- ICharacterProfile profile,
- bool isSelected)
- {
- RobustXamlLoader.Load(this);
- _entManager = entityManager;
- AddStyleClass(StyleClassButton);
- ToggleMode = true;
- Group = group;
- var description = profile.Name;
- if (profile is not HumanoidCharacterProfile humanoid)
- {
- _previewDummy = entityManager.SpawnEntity(prototypeManager.Index<SpeciesPrototype>(SharedHumanoidAppearanceSystem.DefaultSpecies).DollPrototype, MapCoordinates.Nullspace);
- }
- else
- {
- _previewDummy = UserInterfaceManager.GetUIController<LobbyUIController>()
- .LoadProfileEntity(humanoid, null, true);
- var highPriorityJob = humanoid.JobPriorities.SingleOrDefault(p => p.Value == JobPriority.High).Key;
- if (highPriorityJob != default)
- {
- var jobName = prototypeManager.Index(highPriorityJob).LocalizedName;
- description = $"{description}\n{jobName}";
- }
- }
- Pressed = isSelected;
- DeleteButton.Visible = !isSelected;
- View.SetEntity(_previewDummy);
- DescriptionLabel.Text = description;
- ConfirmDeleteButton.OnPressed += _ =>
- {
- Parent?.RemoveChild(this);
- Parent?.RemoveChild(ConfirmDeleteButton);
- OnDeletePressed?.Invoke();
- };
- DeleteButton.OnPressed += _ =>
- {
- DeleteButton.Visible = false;
- ConfirmDeleteButton.Visible = true;
- };
- }
- protected override void Dispose(bool disposing)
- {
- base.Dispose(disposing);
- if (!disposing)
- return;
- _entManager.DeleteEntity(_previewDummy);
- _previewDummy = default;
- }
- }
|