Fixes issue with camera switching static appearing when it shouldn't be (#10067)

This commit is contained in:
Flipp Syder
2022-07-26 21:09:32 -07:00
committed by GitHub
parent 3751ff59f8
commit 963ddd507b
2 changed files with 17 additions and 6 deletions

View File

@@ -35,6 +35,6 @@ public sealed class SurveillanceCameraMonitorSystem : EntitySystem
public void RemoveTimer(EntityUid uid) public void RemoveTimer(EntityUid uid)
{ {
EntityManager.RemoveComponent<ActiveSurveillanceCameraMonitorVisualsComponent>(uid); EntityManager.RemoveComponentDeferred<ActiveSurveillanceCameraMonitorVisualsComponent>(uid);
} }
} }

View File

@@ -27,6 +27,7 @@ public sealed partial class SurveillanceCameraMonitorWindow : DefaultWindow
public event Action? CameraDisconnect; public event Action? CameraDisconnect;
private string _currentAddress = string.Empty; private string _currentAddress = string.Empty;
private bool _isSwitching;
private readonly FixedEye _defaultEye = new(); private readonly FixedEye _defaultEye = new();
private readonly Dictionary<string, int> _subnetMap = new(); private readonly Dictionary<string, int> _subnetMap = new();
@@ -135,13 +136,20 @@ public sealed partial class SurveillanceCameraMonitorWindow : DefaultWindow
private void SetCameraView(IEye? eye) private void SetCameraView(IEye? eye)
{ {
var eyeChanged = eye != CameraView.Eye || CameraView.Eye == null;
CameraView.Eye = eye ?? _defaultEye; CameraView.Eye = eye ?? _defaultEye;
CameraView.Visible = eye != null; CameraView.Visible = !eyeChanged && !_isSwitching;
CameraViewBackground.Visible = true;
CameraDisconnectButton.Disabled = eye == null; CameraDisconnectButton.Disabled = eye == null;
if (eye != null) if (eye != null)
{ {
if (!eyeChanged)
{
return;
}
_isSwitching = true;
CameraViewBackground.Visible = true;
CameraStatus.Text = Loc.GetString("surveillance-camera-monitor-ui-status", CameraStatus.Text = Loc.GetString("surveillance-camera-monitor-ui-status",
("status", Loc.GetString("surveillance-camera-monitor-ui-status-connecting")), ("status", Loc.GetString("surveillance-camera-monitor-ui-status-connecting")),
("address", _currentAddress)); ("address", _currentAddress));
@@ -149,13 +157,16 @@ public sealed partial class SurveillanceCameraMonitorWindow : DefaultWindow
} }
else else
{ {
CameraViewBackground.Visible = true;
CameraStatus.Text = Loc.GetString("surveillance-camera-monitor-ui-status-disconnected"); CameraStatus.Text = Loc.GetString("surveillance-camera-monitor-ui-status-disconnected");
} }
} }
public void OnSwitchTimerComplete() public void OnSwitchTimerComplete()
{ {
CameraViewBackground.Visible = false; _isSwitching = false;
CameraView.Visible = CameraView.Eye != _defaultEye;
CameraViewBackground.Visible = CameraView.Eye == _defaultEye;
CameraStatus.Text = Loc.GetString("surveillance-camera-monitor-ui-status", CameraStatus.Text = Loc.GetString("surveillance-camera-monitor-ui-status",
("status", Loc.GetString("surveillance-camera-monitor-ui-status-connected")), ("status", Loc.GetString("surveillance-camera-monitor-ui-status-connected")),
("address", _currentAddress)); ("address", _currentAddress));