using Content.Client.UserInterface.Controls; using Content.Shared.Preferences; using Content.Shared.Preferences.Loadouts; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.XAML; using Robust.Shared.Player; using Robust.Shared.Prototypes; namespace Content.Client.Lobby.UI.Loadouts; [GenerateTypedNameReferences] public sealed partial class LoadoutWindow : FancyWindow { public event Action, ProtoId>? OnLoadoutPressed; public event Action, ProtoId>? OnLoadoutUnpressed; private List _groups = new(); public HumanoidCharacterProfile Profile; public LoadoutWindow(HumanoidCharacterProfile profile, RoleLoadout loadout, RoleLoadoutPrototype proto, ICommonSession session, IDependencyCollection collection) { RobustXamlLoader.Load(this); Profile = profile; var protoManager = collection.Resolve(); foreach (var group in proto.Groups) { if (!protoManager.TryIndex(group, out var groupProto)) continue; var container = new LoadoutGroupContainer(profile, loadout, protoManager.Index(group), session, collection); LoadoutGroupsContainer.AddTab(container, Loc.GetString(groupProto.Name)); _groups.Add(container); container.OnLoadoutPressed += args => { OnLoadoutPressed?.Invoke(group, args); }; container.OnLoadoutUnpressed += args => { OnLoadoutUnpressed?.Invoke(group, args); }; } } public void RefreshLoadouts(RoleLoadout loadout, ICommonSession session, IDependencyCollection collection) { foreach (var group in _groups) { group.RefreshLoadouts(Profile, loadout, session, collection); } } }