/// <exception cref="CommandSyntaxException" /> public override double Parse(IStringReader reader) { var start = reader.Cursor; var result = reader.ReadDouble(); if (result < Minimum) { reader.Cursor = start; throw CommandSyntaxException.BuiltInExceptions.DoubleTooLow().CreateWithContext(reader, result, Minimum); } if (result > Maximum) { reader.Cursor = start; throw CommandSyntaxException.BuiltInExceptions.DoubleTooHigh().CreateWithContext(reader, result, Maximum); } return(result); }
public ReadResults ReadInteger(out WorldCoordinate result) { result = default; if (!StringReader.CanRead()) { return(ReadResults.Failure(CommandError.ExpectedBlockPosition().WithContext(StringReader))); } if (StringReader.Peek() == '^') { return(ReadResults.Failure(CommandError.MixedCoordinateType().WithContext(StringReader))); } bool isRelative = IsRelative(); double value = 0.0d; if (!StringReader.AtEndOfArgument()) { if (UseBedrock && !IsNumberPart(StringReader.Peek())) { result = new WorldCoordinate(value, isRelative); return(ReadResults.Success()); } ReadResults readResults; if (isRelative) { readResults = StringReader.ReadDouble(out value); } else { readResults = StringReader.ReadInteger(out int integerValue); value = integerValue; } if (!readResults.Successful) { return(readResults); } } result = new WorldCoordinate(value, isRelative); return(ReadResults.Success()); }
private ReadResults ReadDouble(out double result) { result = default; if (!StringReader.CanRead()) { return(ReadResults.Failure(CommandError.ExpectedCoordinate().WithContext(StringReader))); } if (StringReader.Peek() != '^') { return(ReadResults.Failure(CommandError.MixedCoordinateType().WithContext(StringReader))); } StringReader.Skip(); if (StringReader.AtEndOfArgument() || (UseBedrock && !IsNumberPart(StringReader.Peek()))) { result = 0.0d; return(ReadResults.Success()); } else { return(StringReader.ReadDouble(out result)); } }
public ReadResults Parse(IStringReader reader, DispatcherResources resources, out double result) { int start = reader.GetCursor(); ReadResults readResults = reader.ReadDouble(out result); if (readResults.Successful) { if (result < Minimum) { reader.SetCursor(start); return(ReadResults.Failure(CommandError.DoubleTooLow(result, Minimum).WithContext(reader))); } if (result > Maximum) { reader.SetCursor(start); return(ReadResults.Failure(CommandError.DoubleTooHigh(result, Maximum).WithContext(reader))); } } return(readResults); }