fix: Cleans up string substring (#1018)
This commit is contained in:
parent
87b63b38a5
commit
6ec84b3c01
9 changed files with 40 additions and 40 deletions
|
|
@ -75,8 +75,8 @@ public class ClientVersion : IComparable<ClientVersion>, IComparer<ClientVersion
|
|||
}
|
||||
|
||||
Major = Utility.ToInt32(fmt.AsSpan()[..br1]);
|
||||
Minor = Utility.ToInt32(fmt.Substring(br1 + 1, br2 - br1 - 1));
|
||||
Revision = Utility.ToInt32(fmt.Substring(br2 + 1, br3 - br2 - 1));
|
||||
Minor = Utility.ToInt32(fmt.AsSpan(br1 + 1, br2 - br1 - 1));
|
||||
Revision = Utility.ToInt32(fmt.AsSpan(br2 + 1, br3 - br2 - 1));
|
||||
|
||||
if (br3 < fmt.Length)
|
||||
{
|
||||
|
|
@ -89,7 +89,7 @@ public class ClientVersion : IComparable<ClientVersion>, IComparer<ClientVersion
|
|||
}
|
||||
else
|
||||
{
|
||||
Patch = Utility.ToInt32(fmt.Substring(br3 + 1, fmt.Length - br3 - 1));
|
||||
Patch = Utility.ToInt32(fmt.AsSpan(br3 + 1, fmt.Length - br3 - 1));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -214,29 +214,22 @@ public class ClientVersion : IComparable<ClientVersion>, IComparer<ClientVersion
|
|||
{
|
||||
using var builder = new ValueStringBuilder(stackalloc char[32]);
|
||||
|
||||
builder.Append(Major.ToString());
|
||||
builder.Append('.');
|
||||
builder.Append(Minor.ToString());
|
||||
builder.Append('.');
|
||||
builder.Append(Revision.ToString());
|
||||
|
||||
if (Major <= 5 && Minor <= 0 && Revision <= 6) // Anything before 5.0.7
|
||||
if (Major > 5 || Minor > 0 || Revision > 6)
|
||||
{
|
||||
if (Patch > 0)
|
||||
{
|
||||
builder.Append((char)('a' + (Patch - 1)));
|
||||
}
|
||||
builder.Append($"{Major}.{Minor}.{Revision}.{Patch}");
|
||||
}
|
||||
else if (Patch > 0)
|
||||
{
|
||||
builder.Append($"{Major}.{Minor}.{Revision}{(char)('a' + (Patch - 1))}");
|
||||
}
|
||||
else
|
||||
{
|
||||
builder.Append('.');
|
||||
builder.Append(Patch.ToString());
|
||||
builder.Append($"{Major}.{Minor}.{Revision}");
|
||||
}
|
||||
|
||||
if (Type != ClientType.Regular)
|
||||
if (Type == ClientType.UOTD)
|
||||
{
|
||||
builder.Append(' ');
|
||||
builder.Append(Type.ToString().ToLower());
|
||||
builder.Append(" uotd");
|
||||
}
|
||||
|
||||
return builder.ToString();
|
||||
|
|
|
|||
|
|
@ -58,12 +58,12 @@ namespace Server
|
|||
var start = value.IndexOfOrdinal('(');
|
||||
var end = value.IndexOf(',', start + 1);
|
||||
|
||||
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out var x);
|
||||
Utility.ToInt32(value.AsSpan(start + 1, end - (start + 1)).Trim(), out var x);
|
||||
|
||||
start = end;
|
||||
end = value.IndexOf(')', start + 1);
|
||||
|
||||
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out var y);
|
||||
Utility.ToInt32(value.AsSpan(start + 1, end - (start + 1)).Trim(), out var y);
|
||||
|
||||
return new Point2D(x, y);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,17 +86,17 @@ namespace Server
|
|||
var start = value.IndexOfOrdinal('(');
|
||||
var end = value.IndexOf(',', start + 1);
|
||||
|
||||
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out var x);
|
||||
Utility.ToInt32(value.AsSpan(start + 1, end - (start + 1)).Trim(), out var x);
|
||||
|
||||
start = end;
|
||||
end = value.IndexOf(',', start + 1);
|
||||
|
||||
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out var y);
|
||||
Utility.ToInt32(value.AsSpan(start + 1, end - (start + 1)).Trim(), out var y);
|
||||
|
||||
start = end;
|
||||
end = value.IndexOf(')', start + 1);
|
||||
|
||||
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out var z);
|
||||
Utility.ToInt32(value.AsSpan(start + 1, end - (start + 1)).Trim(), out var z);
|
||||
|
||||
return new Point3D(x, y, z);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
*************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
namespace Server
|
||||
{
|
||||
[NoSort]
|
||||
|
|
@ -46,22 +48,22 @@ namespace Server
|
|||
var start = value.IndexOfOrdinal('(');
|
||||
var end = value.IndexOf(',', start + 1);
|
||||
|
||||
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out var x);
|
||||
Utility.ToInt32(value.AsSpan(start + 1, end - (start + 1)).Trim(), out var x);
|
||||
|
||||
start = end;
|
||||
end = value.IndexOf(',', start + 1);
|
||||
|
||||
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out var y);
|
||||
Utility.ToInt32(value.AsSpan(start + 1, end - (start + 1)).Trim(), out var y);
|
||||
|
||||
start = end;
|
||||
end = value.IndexOf(',', start + 1);
|
||||
|
||||
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out var w);
|
||||
Utility.ToInt32(value.AsSpan(start + 1, end - (start + 1)).Trim(), out var w);
|
||||
|
||||
start = end;
|
||||
end = value.IndexOf(')', start + 1);
|
||||
|
||||
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out var h);
|
||||
Utility.ToInt32(value.AsSpan(start + 1, end - (start + 1)).Trim(), out var h);
|
||||
|
||||
return new Rectangle2D(x, y, w, h);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -145,22 +145,22 @@ namespace Server
|
|||
var start = value.IndexOfOrdinal('(');
|
||||
var end = value.IndexOf(',', start + 1);
|
||||
|
||||
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out var x);
|
||||
Utility.ToInt32(value.AsSpan(start + 1, end - (start + 1)).Trim(), out var x);
|
||||
|
||||
start = end;
|
||||
end = value.IndexOf(',', start + 1);
|
||||
|
||||
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out var y);
|
||||
Utility.ToInt32(value.AsSpan(start + 1, end - (start + 1)).Trim(), out var y);
|
||||
|
||||
start = end;
|
||||
end = value.IndexOf(',', start + 1);
|
||||
|
||||
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out var z);
|
||||
Utility.ToInt32(value.AsSpan(start + 1, end - (start + 1)).Trim(), out var z);
|
||||
|
||||
start = end;
|
||||
end = value.IndexOf(')', start + 1);
|
||||
|
||||
var map = Map.Parse(value.Substring(start + 1, end - (start + 1)).Trim());
|
||||
var map = Map.Parse(value.AsSpan(start + 1, end - (start + 1)).Trim());
|
||||
|
||||
return new WorldLocation(x, y, z, map);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ namespace Server.Json
|
|||
return new ClientVersion(reader.GetString());
|
||||
}
|
||||
|
||||
throw new JsonException($"Value must be a string");
|
||||
throw new JsonException("Value must be a string");
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, ClientVersion value, JsonSerializerOptions options) =>
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ namespace Server.Json
|
|||
{
|
||||
JsonTokenType.String => Map.Parse(reader.GetString()),
|
||||
JsonTokenType.Number => Map.Maps[reader.GetInt32()],
|
||||
_ => throw new JsonException($"Value must be a number or string")
|
||||
_ => throw new JsonException("Value must be a number or string")
|
||||
};
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, Map value, JsonSerializerOptions options) =>
|
||||
|
|
|
|||
|
|
@ -484,9 +484,14 @@ public sealed class Map : IComparable<Map>
|
|||
return mapValues;
|
||||
}
|
||||
|
||||
public static Map Parse(string value)
|
||||
// Handles null checks
|
||||
public static Map Parse(string value) => Parse(value ?? ReadOnlySpan<char>.Empty);
|
||||
|
||||
public static Map Parse(ReadOnlySpan<char> value)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
value = value.Trim();
|
||||
|
||||
if (value.Length == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
|
@ -513,7 +518,7 @@ public sealed class Map : IComparable<Map>
|
|||
continue;
|
||||
}
|
||||
|
||||
if (index >= 0 && map.MapIndex == index || map.Name.InsensitiveEquals(value))
|
||||
if (index >= 0 && map.MapIndex == index || value.InsensitiveEquals(map.Name))
|
||||
{
|
||||
return map;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1092,7 +1092,7 @@ namespace Server
|
|||
return;
|
||||
}
|
||||
|
||||
Count = Utility.ToInt32(str.Substring(start, index));
|
||||
Count = Utility.ToInt32(str.AsSpan(start, index));
|
||||
|
||||
start = index + 1;
|
||||
index = str.IndexOf('+', start);
|
||||
|
|
@ -1109,7 +1109,7 @@ namespace Server
|
|||
index = str.Length;
|
||||
}
|
||||
|
||||
Sides = Utility.ToInt32(str.Substring(start, index - start));
|
||||
Sides = Utility.ToInt32(str.AsSpan(start, index - start));
|
||||
|
||||
if (index == str.Length)
|
||||
{
|
||||
|
|
@ -1119,7 +1119,7 @@ namespace Server
|
|||
start = index + 1;
|
||||
index = str.Length;
|
||||
|
||||
Bonus = Utility.ToInt32(str.Substring(start, index - start));
|
||||
Bonus = Utility.ToInt32(str.AsSpan(start, index - start));
|
||||
|
||||
if (negative)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue