private void OnGameSpeedChanging(GameSpeed newGameSpeed) { _courseUpdateFrequency *= GameTime.Instance.GameSpeed.SpeedMultiplier() / newGameSpeed.SpeedMultiplier(); }
private void RefreshReadout(GameSpeed clockSpeed) { RefreshReadout(CommonTerms.MultiplySign + clockSpeed.SpeedMultiplier().ToString()); }
private void OnGameSpeedChanging(GameSpeed newSpeed) { // OPTIMIZE static? //D.Log("{0}.OnGameSpeedChanging() called. OldSpeed = {1}, NewSpeed = {2}.", GetType().Name, GameTime.Instance.GameSpeed.GetName(), newSpeed.GetName()); float currentSpeedMultiplier = GameTime.Instance.GameSpeed.SpeedMultiplier(); float speedChangeRatio = newSpeed.SpeedMultiplier() / currentSpeedMultiplier; _hudRefreshRate *= speedChangeRatio; }
/// <summary> /// Adjusts the velocity and thrust of the fleet to reflect the new GameClockSpeed setting. /// The reported speed and directional heading of the fleet is not affected. /// </summary> /// <param name="gameSpeed">The game speed.</param> private void AdjustForGameSpeed(GameSpeed gameSpeed) { float previousGameSpeedMultiplier = _gameSpeedMultiplier; // FIXME where/when to get initial GameSpeed before first GameSpeed change? _gameSpeedMultiplier = gameSpeed.SpeedMultiplier(); float gameSpeedChangeRatio = _gameSpeedMultiplier / previousGameSpeedMultiplier; // must immediately adjust velocity when game speed changes as just adjusting thrust takes // a long time to get to increased/decreased velocity if (_gameStatus.IsPaused) { _velocityOnPause = _velocityOnPause * gameSpeedChangeRatio; } else { _rigidbody.velocity = _rigidbody.velocity * gameSpeedChangeRatio; // drag should not be adjusted as it will change the velocity that can be supported by the adjusted thrust } }
private void GameSpeedPropChangingHandler(GameSpeed newGameSpeed) { float previousGameSpeedMultiplier = _gameTime.GameSpeedMultiplier; float newGameSpeedMultiplier = newGameSpeed.SpeedMultiplier(); float gameSpeedChangeRatio = newGameSpeedMultiplier / previousGameSpeedMultiplier; AdjustForGameSpeed(gameSpeedChangeRatio); }