SelectReplayWindow.xaml.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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.Utility;
  6. namespace Content.Replay.Menu;
  7. [GenerateTypedNameReferences]
  8. public sealed partial class SelectReplayWindow : DefaultWindow
  9. {
  10. private readonly ReplayMainScreen _screen;
  11. public SelectReplayWindow(ReplayMainScreen screen)
  12. {
  13. RobustXamlLoader.Load(this);
  14. _screen = screen;
  15. ReplayList.OnItemSelected += OnItemSelected;
  16. }
  17. private void OnItemSelected(ItemList.ItemListSelectedEventArgs obj)
  18. {
  19. var path = (ResPath?) obj.ItemList[obj.ItemIndex].Metadata;
  20. _screen.SelectReplay(path);
  21. }
  22. public void Repopulate(List<(string Name, ResPath Path)> replays)
  23. {
  24. ReplayList.Clear();
  25. foreach (var (name, path) in replays)
  26. {
  27. ReplayList.AddItem(name).Metadata = path;
  28. }
  29. if (replays.Count > 0)
  30. {
  31. NoneLabel.Visible = false;
  32. ReplayList.Visible = true;
  33. }
  34. else
  35. {
  36. NoneLabel.Visible = true;
  37. ReplayList.Visible = false;
  38. }
  39. }
  40. public void UpdateSelected(ResPath? replay)
  41. {
  42. if (replay == null)
  43. {
  44. ReplayList.ClearSelected();
  45. return;
  46. }
  47. foreach (var item in ReplayList)
  48. {
  49. var path = (ResPath?) item.Metadata;
  50. item.Selected = path == replay;
  51. }
  52. }
  53. }