protected override void Open()
        {
            base.Open();

            _window          = new SolarControlWindow(_gameTiming);
            _window.OnClose += Close;
            _window.PanelRotation.OnTextEntered += (text) => {
                double value;
                if (double.TryParse(text.Text, out value))
                {
                    SolarControlConsoleAdjustMessage msg = new SolarControlConsoleAdjustMessage();
                    msg.Rotation        = Angle.FromDegrees(value);
                    msg.AngularVelocity = _lastState.AngularVelocity;
                    SendMessage(msg);
                }
            };
            _window.PanelVelocity.OnTextEntered += (text) => {
                double value;
                if (double.TryParse(text.Text, out value))
                {
                    SolarControlConsoleAdjustMessage msg = new SolarControlConsoleAdjustMessage();
                    msg.Rotation        = _lastState.Rotation;
                    msg.AngularVelocity = Angle.FromDegrees(value / 60);
                    SendMessage(msg);
                }
            };
            _window.OpenCenteredMinSize();
        }
 private void OnUIMessage(EntityUid uid, SolarControlConsoleComponent component, SolarControlConsoleAdjustMessage msg)
 {
     if (double.IsFinite(msg.Rotation))
     {
         _powerSolarSystem.TargetPanelRotation = msg.Rotation.Reduced();
     }
     if (double.IsFinite(msg.AngularVelocity))
     {
         var degrees = msg.AngularVelocity.Degrees;
         degrees = Math.Clamp(degrees, -PowerSolarSystem.MaxPanelVelocityDegrees, PowerSolarSystem.MaxPanelVelocityDegrees);
         _powerSolarSystem.TargetPanelVelocity = Angle.FromDegrees(degrees);
     }
 }