using System.Numerics; using Content.Client.UserInterface.Controls; using Content.Shared.Changeling.Transform; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; namespace Content.Client.Changeling.Transform; [GenerateTypedNameReferences] public sealed partial class ChangelingTransformMenu : RadialMenu { [Dependency] private readonly IEntityManager _entity = default!; public event Action? OnIdentitySelect; public ChangelingTransformMenu() { RobustXamlLoader.Load(this); IoCManager.InjectDependencies(this); } public void UpdateState(ChangelingTransformBoundUserInterfaceState state) { Main.DisposeAllChildren(); foreach (var identity in state.Identites) { var identityUid = _entity.GetEntity(identity); if (!_entity.TryGetComponent(identityUid, out var metadata)) continue; var identityName = metadata.EntityName; var button = new ChangelingTransformMenuButton() { StyleClasses = { "RadialMenuButton" }, SetSize = new Vector2(64, 64), ToolTip = identityName, }; var entView = new SpriteView() { SetSize = new Vector2(48, 48), VerticalAlignment = VAlignment.Center, HorizontalAlignment = HAlignment.Center, Stretch = SpriteView.StretchMode.Fill, }; entView.SetEntity(identityUid); button.OnButtonUp += _ => { OnIdentitySelect?.Invoke(identity); Close(); }; button.AddChild(entView); Main.AddChild(button); } } } public sealed class ChangelingTransformMenuButton : RadialMenuTextureButtonWithSector;