diff --git a/EndlessClient/Rendering/Map/MapRenderer.cs b/EndlessClient/Rendering/Map/MapRenderer.cs index 917cccf3..12e466a0 100644 --- a/EndlessClient/Rendering/Map/MapRenderer.cs +++ b/EndlessClient/Rendering/Map/MapRenderer.cs @@ -359,7 +359,7 @@ private void DrawToSpriteBatch(SpriteBatch spriteBatch, GameTime gameTime) spriteBatch.Begin(); var drawLoc = _gridDrawCoordinateCalculator.CalculateGroundLayerRenderTargetDrawCoordinates(); - var offset = _quakeState.Map(qs => qs.Offset).Match(some: o => o, none: () => 0); + var offset = _quakeState.Map(GetOffset).ValueOr(0); lock (_rt_locker_) { @@ -378,11 +378,13 @@ private void DrawToSpriteBatch(SpriteBatch spriteBatch, GameTime gameTime) spriteBatch.End(); } + + static float GetOffset(MapQuakeState quakeState) => quakeState.Offset; } private void DrawBaseLayers(SpriteBatch spriteBatch) { - var offset = _quakeState.Map(qs => qs.Offset).Match(some: o => o, none: () => 0); + var offset = _quakeState.Map(GetOffset).ValueOr(0); var renderBounds = _mapRenderDistanceCalculator.CalculateRenderBounds(_characterProvider.MainCharacter, _currentMapProvider.CurrentMap); @@ -399,6 +401,8 @@ private void DrawBaseLayers(SpriteBatch spriteBatch) } } } + + static float GetOffset(MapQuakeState quakeState) => quakeState.Offset; } private int GetAlphaForCoordinates(int objX, int objY, EOLib.Domain.Character.Character character) @@ -422,20 +426,22 @@ private int GetAlphaForCoordinates(int objX, int objY, EOLib.Domain.Character.Ch } else if (metric == _mapTransitionState.TransitionMetric) { - _mapTransitionState.StartTime - .MatchSome(startTime => - { - var ms = (DateTime.Now - startTime).TotalMilliseconds; - alpha = (int)Math.Round(ms / TRANSITION_TIME_MS * 255); - - if (ms / TRANSITION_TIME_MS >= 1) - _mapTransitionState = new MapTransitionState(Option.Some(DateTime.Now), _mapTransitionState.TransitionMetric + 1); - }); + alpha = _mapTransitionState.StartTime.Map(HandleStartTime).ValueOr(alpha); } else alpha = 0; return alpha; + + int HandleStartTime(DateTime startTime) + { + var ms = (DateTime.Now - startTime).TotalMilliseconds; + + if (ms / TRANSITION_TIME_MS >= 1) + _mapTransitionState = new MapTransitionState(Option.Some(DateTime.Now), _mapTransitionState.TransitionMetric + 1); + + return (int)Math.Round(ms / TRANSITION_TIME_MS * 255); + } } private void ResizeGameWindow(object sender, EventArgs e)