Beispiel #1
0
        public InputResult OnKeyDown(UserInputKey keyCode, ModifierKeys modifiers)
        {
            if (!IsHandlerEnabled || modifiers != ModifierKeys.None)
            {
                return(InputResult.Continue);
            }

            InputResult inputResult;
            float       cameraHeight;

            // Mouse scroll requires more effort to scroll as much as regular keys,
            // so we add a multiplier to keep it more consistent with other keys
            const int mouseScrollMultiplier = 3;

            if (_cameraHeightKeys.CameraUpKeys.Contains(keyCode))
            {
                if (keyCode == UserInputKey.MouseScrollDown || keyCode == UserInputKey.MouseScrollUp)
                {
                    cameraHeight  = _gameValueService.GetZCameraPosition();
                    cameraHeight += CameraMovementOffset * mouseScrollMultiplier;
                    _gameValueService.SetZCameraPosition(cameraHeight);
                    inputResult = InputResult.StopProcessingEvents | InputResult.HideFromOtherApplications;
                }
                else
                {
                    _isCameraMovingUp = true;
                    inputResult       = InputResult.StopProcessingEvents | InputResult.HideFromOtherApplications;
                }
            }
            else if (_cameraHeightKeys.CameraDownKeys.Contains(keyCode))
            {
                if (keyCode == UserInputKey.MouseScrollDown || keyCode == UserInputKey.MouseScrollUp)
                {
                    cameraHeight  = _gameValueService.GetZCameraPosition();
                    cameraHeight -= CameraMovementOffset * mouseScrollMultiplier;
                    _gameValueService.SetZCameraPosition(cameraHeight);
                    inputResult = InputResult.StopProcessingEvents | InputResult.HideFromOtherApplications;
                }
                else
                {
                    _isCameraMovingDown = true;
                    inputResult         = InputResult.StopProcessingEvents | InputResult.HideFromOtherApplications;
                }
            }
            else
            {
                inputResult = InputResult.Continue;
            }

            if (!_actionLoopService.IsLoopingAction && (_isCameraMovingDown || _isCameraMovingUp))
            {
                _actionLoopService.StartLoopingAction(MoveCamera);
            }

            return(inputResult);
        }
        public InputResult OnKeyDown(UserInputKey keyCode, ModifierKeys modifiers)
        {
            if (!IsHandlerEnabled)
            {
                return(InputResult.Continue);
            }

            // zoom out
            if (_keys.ZoomOutKeys.Contains(keyCode))
            {
                float zoomValue    = _gameValueService.GetCameraZoomDistance();
                float cameraHeight = _gameValueService.GetZCameraPosition();

                if (!IsTacticalCameraEnabled && zoomValue <= _turnOnTacticalCameraThreshold)
                {
                    _turnOffTacticalCameraThreshold = cameraHeight;
                    EnableTacticalCamera();
                }
                else
                {
                    return(InputResult.Continue);
                }
            }
            else if (_keys.ZoomInKeys.Contains(keyCode))
            {
                float cameraHeight = _gameValueService.GetZCameraPosition();

                if (IsTacticalCameraEnabled)
                {
                    if (cameraHeight < _turnOffTacticalCameraThreshold)
                    {
                        DisableTacticalCamera();
                    }
                }
                else
                {
                    return(InputResult.Continue);
                }
            }
            else if (_keys.ToggleKeys.Contains(keyCode))
            {
                if (IsTacticalCameraEnabled)
                {
                    DisableTacticalCamera();
                    return(InputResult.HideFromOtherApplications);
                }
            }

            return(InputResult.Continue);
        }
Beispiel #3
0
        public void EnableTacticalCamera()
        {
            if (IsTacticalCameraEnabled)
            {
                return;
            }

            _gameValueService.EnableFreeCamera();
            _gameValueService.DisableAutoCameraAngleAdjustment();
            _gameValueService.DisableCollisionZoomAdjustment();
            _gameValueService.DisableZoom();
            _gameValueService.DisableCenteringCameraBehindCharacter();
            _gameValueService.SetCameraZoomDistance(1.66f);
            _gameValueService.SetZCameraPosition(_gameValueService.GetZCameraPosition() + 2);
            IsTacticalCameraEnabled = true;
            OnTacticalCameraStateChanged(true);
        }