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); }
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); }