1
0

ChannelsMenu.xaml.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using Robust.Client.AutoGenerated;
  2. using Robust.Client.UserInterface.Controls;
  3. using Robust.Client.UserInterface.CustomControls;
  4. using Robust.Client.UserInterface.XAML;
  5. using Robust.Shared.Audio.Midi;
  6. using Robust.Shared.Timing;
  7. namespace Content.Client.Instruments.UI;
  8. [GenerateTypedNameReferences]
  9. public sealed partial class ChannelsMenu : DefaultWindow
  10. {
  11. private readonly InstrumentBoundUserInterface _owner;
  12. public ChannelsMenu(InstrumentBoundUserInterface owner) : base()
  13. {
  14. RobustXamlLoader.Load(this);
  15. _owner = owner;
  16. ChannelList.OnItemSelected += OnItemSelected;
  17. ChannelList.OnItemDeselected += OnItemDeselected;
  18. AllButton.OnPressed += OnAllPressed;
  19. ClearButton.OnPressed += OnClearPressed;
  20. }
  21. private void OnItemSelected(ItemList.ItemListSelectedEventArgs args)
  22. {
  23. _owner.Instruments.SetFilteredChannel(_owner.Owner, (int)ChannelList[args.ItemIndex].Metadata!, false);
  24. }
  25. private void OnItemDeselected(ItemList.ItemListDeselectedEventArgs args)
  26. {
  27. _owner.Instruments.SetFilteredChannel(_owner.Owner, (int)ChannelList[args.ItemIndex].Metadata!, true);
  28. }
  29. private void OnAllPressed(BaseButton.ButtonEventArgs obj)
  30. {
  31. foreach (var item in ChannelList)
  32. {
  33. // TODO: Make this efficient jfc
  34. item.Selected = true;
  35. }
  36. }
  37. private void OnClearPressed(BaseButton.ButtonEventArgs obj)
  38. {
  39. foreach (var item in ChannelList)
  40. {
  41. // TODO: Make this efficient jfc
  42. item.Selected = false;
  43. }
  44. }
  45. public void Populate(InstrumentComponent? instrument)
  46. {
  47. ChannelList.Clear();
  48. for (int i = 0; i < RobustMidiEvent.MaxChannels; i++)
  49. {
  50. var item = ChannelList.AddItem(_owner.Loc.GetString("instrument-component-channel-name",
  51. ("number", i)), null, true, i);
  52. item.Selected = !instrument?.FilteredChannels[i] ?? false;
  53. }
  54. }
  55. }