using System.Collections.Generic; namespace Routes { internal static class TurnDirectionMapper { private static readonly Dictionary fromSouth = new Dictionary { {RoadDirection.East, TurnDirection.Right}, {RoadDirection.West, TurnDirection.Left} }; private static readonly Dictionary fromNorth = new Dictionary { {RoadDirection.East, TurnDirection.Left}, {RoadDirection.West, TurnDirection.Right} }; private static readonly Dictionary fromWest = new Dictionary { {RoadDirection.North, TurnDirection.Left}, {RoadDirection.South, TurnDirection.Right} }; private static readonly Dictionary fromEast = new Dictionary { {RoadDirection.North, TurnDirection.Right}, {RoadDirection.South, TurnDirection.Left} }; public static TurnDirection GetTurnDirection(RoadDirection from, RoadDirection to) { TurnDirection direction; switch (from) { case RoadDirection.West: return fromWest.TryGetValue(to, out direction) ? direction : TurnDirection.Straight; case RoadDirection.North: return fromNorth.TryGetValue(to, out direction) ? direction : TurnDirection.Straight; case RoadDirection.East: return fromEast.TryGetValue(to, out direction) ? direction : TurnDirection.Straight; case RoadDirection.South: return fromSouth.TryGetValue(to, out direction) ? direction : TurnDirection.Straight; default: return TurnDirection.Straight; } } } }