public static Point?GetDirectionDown(this IDictionary <Keys, Point> map, InputTwinState state) { var shift = state.IsKeyDown(Keys.LeftShift); var result = map.Where(x => state.IsKeyDown(x.Key)).Select(x => x.Value); if (result.Count() < 2 && shift) { return(null); } var direction = result.Aggregate(Point.Zero, (a, b) => a + b); if (direction == Point.Zero) { return(null); } return(direction); }
public static Point?GetDirectionNumpadDown(InputTwinState state) { var result = NumpadKeys.Where(x => state.IsKeyDown(x.Key)).Select(x => x.Value); if (result.Count() == 1) { return(result.Single()); } return(null); }
public static int?GetNumberDown(this IDictionary <Keys, int> map, InputTwinState state) { var result = map.Where(x => state.IsKeyDown(x.Key)).Select(x => x.Value); if (result.Count() == 1) { return(result.Single()); } return(null); }