CloningConsoleWindow.xaml.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. using Robust.Client.AutoGenerated;
  2. using Robust.Client.UserInterface.CustomControls;
  3. using Robust.Client.UserInterface.XAML;
  4. using Content.Client.Message;
  5. using Content.Shared.Cloning.CloningConsole;
  6. namespace Content.Client.CloningConsole.UI
  7. {
  8. [GenerateTypedNameReferences]
  9. public sealed partial class CloningConsoleWindow : DefaultWindow
  10. {
  11. public CloningConsoleWindow()
  12. {
  13. IoCManager.InjectDependencies(this);
  14. RobustXamlLoader.Load(this);
  15. }
  16. private CloningConsoleBoundUserInterfaceState? _lastUpdate;
  17. public void Populate(CloningConsoleBoundUserInterfaceState state)
  18. {
  19. _lastUpdate = state;
  20. // BUILD SCANNER UI
  21. if (state.ScannerConnected)
  22. {
  23. if (!state.ScannerInRange)
  24. {
  25. GeneticScannerFar.Visible = true;
  26. GeneticScannerContents.Visible = false;
  27. GeneticScannerMissing.Visible = false;
  28. return;
  29. }
  30. GeneticScannerContents.Visible = true;
  31. GeneticScannerFar.Visible = false;
  32. GeneticScannerMissing.Visible = false;
  33. CloneButton.Disabled = state.CloningStatus != ClonerStatus.Ready;
  34. switch (state.CloningStatus)
  35. {
  36. case ClonerStatus.NoClonerDetected:
  37. CloningActivity.Text = (Loc.GetString("cloning-console-component-msg-no-cloner"));
  38. break;
  39. case ClonerStatus.Ready:
  40. CloningActivity.Text = (Loc.GetString("cloning-console-component-msg-ready"));
  41. break;
  42. case ClonerStatus.ClonerOccupied:
  43. CloningActivity.Text = (Loc.GetString("cloning-console-component-msg-occupied"));
  44. break;
  45. case ClonerStatus.ScannerEmpty:
  46. CloningActivity.Text = (Loc.GetString("cloning-console-component-msg-empty"));
  47. break;
  48. case ClonerStatus.ScannerOccupantAlive:
  49. CloningActivity.Text = (Loc.GetString("cloning-console-component-msg-scanner-occupant-alive"));
  50. break;
  51. case ClonerStatus.OccupantMetaphyiscal:
  52. CloningActivity.Text = (Loc.GetString("cloning-console-component-msg-already-alive"));
  53. break;
  54. case ClonerStatus.NoMindDetected:
  55. CloningActivity.Text = (Loc.GetString("cloning-console-component-msg-no-mind"));
  56. break;
  57. }
  58. // Set label depending on if scanner is occupied or not.
  59. ScannerInfoLabel.SetMarkup(state.ScannerBodyInfo != null ?
  60. Loc.GetString("cloning-console-window-scanner-id", ("scannerOccupantName", state.ScannerBodyInfo)) :
  61. Loc.GetString("cloning-console-window-id-blank"));
  62. }
  63. else
  64. {
  65. // Scanner is missing, set error message visible
  66. GeneticScannerContents.Visible = false;
  67. GeneticScannerFar.Visible = false;
  68. GeneticScannerMissing.Visible = true;
  69. }
  70. // BUILD ClONER UI
  71. if (state.ClonerConnected)
  72. {
  73. if (!state.ClonerInRange)
  74. {
  75. CloningPodFar.Visible = true;
  76. CloningPodContents.Visible = false;
  77. CloningPodMissing.Visible = false;
  78. return;
  79. }
  80. CloningPodContents.Visible = true;
  81. CloningPodFar.Visible = false;
  82. CloningPodMissing.Visible = false;
  83. ClonerBrainActivity.SetMarkup(Loc.GetString(state.MindPresent ? "cloning-console-mind-present-text" : "cloning-console-no-mind-activity-text"));
  84. // Set label depending if clonepod is occupied or not
  85. ClonerInfoLabel.SetMarkup(state.ClonerBodyInfo != null ?
  86. Loc.GetString("cloning-console-window-pod-id", ("podOccupantName", state.ClonerBodyInfo)) :
  87. Loc.GetString("cloning-console-window-id-blank"));
  88. }
  89. else
  90. {
  91. // Clone pod is missing, set error message visible
  92. CloningPodContents.Visible = false;
  93. CloningPodFar.Visible = false;
  94. CloningPodMissing.Visible = true;
  95. }
  96. }
  97. }
  98. }