Fix IDE0057
This commit is contained in:
committed by
Pavel Penev
parent
5254348819
commit
023d80b94d
@@ -36,11 +36,11 @@ namespace OpenRA.Mods.Common.Commands
|
||||
{
|
||||
if (message.StartsWith("/"))
|
||||
{
|
||||
var name = message.Substring(1).Split(' ')[0].ToLowerInvariant();
|
||||
var name = message[1..].Split(' ')[0].ToLowerInvariant();
|
||||
var command = Commands.FirstOrDefault(x => x.Key == name);
|
||||
|
||||
if (command.Value != null)
|
||||
command.Value.InvokeCommand(name.ToLowerInvariant(), message.Substring(1 + name.Length).Trim());
|
||||
command.Value.InvokeCommand(name.ToLowerInvariant(), message[(1 + name.Length)..].Trim());
|
||||
else
|
||||
TextNotificationsManager.Debug(Game.ModData.Translation.GetString(InvalidCommand, Translation.Arguments("name", name)));
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ namespace OpenRA.Mods.Common.FileFormats
|
||||
{
|
||||
var comment = line.IndexOf(';');
|
||||
if (comment >= 0)
|
||||
line = line.Substring(0, comment);
|
||||
line = line[..comment];
|
||||
|
||||
line = line.Trim();
|
||||
if (line.Length == 0)
|
||||
@@ -78,8 +78,8 @@ namespace OpenRA.Mods.Common.FileFormats
|
||||
var eq = line.IndexOf('=');
|
||||
if (eq >= 0)
|
||||
{
|
||||
key = line.Substring(0, eq).Trim();
|
||||
value = line.Substring(eq + 1, line.Length - eq - 1).Trim();
|
||||
key = line[..eq].Trim();
|
||||
value = line[(eq + 1)..].Trim();
|
||||
}
|
||||
|
||||
if (currentSection == null)
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
var checkWidgetFields = modData.ObjectCreator.GetTypesImplementing<Widget>()
|
||||
.SelectMany(w => Utility.GetFields(w)
|
||||
.Where(f => f.FieldType == typeof(HotkeyReference))
|
||||
.Select(f => (w.Name.Substring(0, w.Name.Length - 6), f.Name)))
|
||||
.Select(f => (w.Name[..^6], f.Name)))
|
||||
.ToArray();
|
||||
|
||||
var customLintMethods = new Dictionary<string, List<string>>();
|
||||
@@ -52,7 +52,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
var p = m.GetParameters();
|
||||
if (p.Length == 3 && p[0].ParameterType == typeof(MiniYamlNode) && p[1].ParameterType == typeof(Action<string>)
|
||||
&& p[2].ParameterType == typeof(Action<string>))
|
||||
customLintMethods.GetOrAdd(w.Name.Substring(0, w.Name.Length - 6)).Add(m.Name);
|
||||
customLintMethods.GetOrAdd(w.Name[..^6]).Add(m.Name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
{
|
||||
var name = key.Split('@')[0];
|
||||
if (name.StartsWith("-", StringComparison.Ordinal))
|
||||
return name.Substring(1);
|
||||
return name[1..];
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
{
|
||||
var name = key.Split('@')[0];
|
||||
if (name.StartsWith("-", StringComparison.Ordinal))
|
||||
return name.Substring(1);
|
||||
return name[1..];
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
|
||||
string GetName(string key)
|
||||
{
|
||||
return key.Substring(prefix.Length);
|
||||
return key[prefix.Length..];
|
||||
}
|
||||
|
||||
public void PrerequisitesAvailable(string key)
|
||||
|
||||
@@ -240,7 +240,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
{
|
||||
if (sequence.StartsWith(s.Prefix, StringComparison.Ordinal))
|
||||
{
|
||||
sequence = sequence.Substring(s.Prefix.Length);
|
||||
sequence = sequence[s.Prefix.Length..];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
|
||||
name = self.Owner.PlayerName;
|
||||
if (name.Length > info.MaxLength)
|
||||
name = name.Substring(0, info.MaxLength);
|
||||
name = name[..info.MaxLength];
|
||||
}
|
||||
|
||||
protected override IEnumerable<IRenderable> RenderDecoration(Actor self, WorldRenderer wr, int2 screenPos)
|
||||
@@ -78,7 +78,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
|
||||
name = self.Owner.PlayerName;
|
||||
if (name.Length > Info.MaxLength)
|
||||
name = name.Substring(0, Info.MaxLength);
|
||||
name = name[..Info.MaxLength];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
foreach (var kv in mp)
|
||||
{
|
||||
var name = kv.Key;
|
||||
var index = int.Parse(name.Substring(5));
|
||||
var index = int.Parse(name[5..]);
|
||||
|
||||
if (index >= newCount)
|
||||
{
|
||||
|
||||
@@ -359,7 +359,7 @@ namespace OpenRA.Mods.Common.UpdateRules.Rules
|
||||
// Replace removals with masking
|
||||
foreach (var node in sequenceNode.Value.Nodes)
|
||||
if (node.Key?.StartsWith("-") ?? false)
|
||||
node.Key = node.Key.Substring(1);
|
||||
node.Key = node.Key[1..];
|
||||
|
||||
var combineNode = sequenceNode.LastChildMatching("Combine");
|
||||
if (combineNode != null)
|
||||
@@ -389,8 +389,8 @@ namespace OpenRA.Mods.Common.UpdateRules.Rules
|
||||
|
||||
var overrideFilename = filename;
|
||||
if (useTilesetCode)
|
||||
overrideFilename = filename.Substring(0, 1) + tilesetCodes[sequenceTileset] +
|
||||
filename.Substring(2, filename.Length - 2);
|
||||
overrideFilename = filename[..1] + tilesetCodes[sequenceTileset] +
|
||||
filename[2..];
|
||||
|
||||
if (addExtension)
|
||||
overrideFilename += useTilesetExtension ? tilesetExtensions[sequenceTileset] : defaultSpriteExtension;
|
||||
|
||||
@@ -327,7 +327,7 @@ namespace OpenRA.Mods.Common.UpdateRules
|
||||
var prefix = includeRemovals && node.IsRemoval() ? "-" : "";
|
||||
var split = node.Key.IndexOf("@", StringComparison.Ordinal);
|
||||
if (preserveSuffix && split > -1)
|
||||
node.Key = prefix + newKey + node.Key.Substring(split);
|
||||
node.Key = prefix + newKey + node.Key[split..];
|
||||
else
|
||||
node.Key = prefix + newKey;
|
||||
}
|
||||
@@ -391,7 +391,7 @@ namespace OpenRA.Mods.Common.UpdateRules
|
||||
return false;
|
||||
|
||||
var atPosition = node.Key.IndexOf('@');
|
||||
return atPosition > 0 && node.Key.Substring(0, atPosition) == prefix + match;
|
||||
return atPosition > 0 && node.Key[..atPosition] == prefix + match;
|
||||
}
|
||||
|
||||
/// <summary>Returns true if the node is of the form [match], [match]@[arbitrary suffix] or [arbitrary suffix]@[match].</summary>
|
||||
@@ -401,7 +401,7 @@ namespace OpenRA.Mods.Common.UpdateRules
|
||||
return false;
|
||||
|
||||
var atPosition = node.Key.IndexOf('@');
|
||||
var relevantPart = ignoreSuffix && atPosition > 0 ? node.Key.Substring(0, atPosition) : node.Key;
|
||||
var relevantPart = ignoreSuffix && atPosition > 0 ? node.Key[..atPosition] : node.Key;
|
||||
|
||||
if (relevantPart.Contains(match) && (includeRemovals || !node.IsRemoval()))
|
||||
return true;
|
||||
|
||||
@@ -229,7 +229,7 @@ namespace OpenRA.Mods.Common
|
||||
public static string InternalTypeName(Type t)
|
||||
{
|
||||
return t.IsGenericType
|
||||
? $"{t.Name.Substring(0, t.Name.IndexOf('`'))}<{string.Join(", ", t.GenericTypeArguments.Select(arg => arg.Name))}>"
|
||||
? $"{t.Name[..t.Name.IndexOf('`')]}<{string.Join(", ", t.GenericTypeArguments.Select(arg => arg.Name))}>"
|
||||
: t.Name;
|
||||
}
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
var localEnums = new List<Type>();
|
||||
foreach (var init in actorInits)
|
||||
{
|
||||
var name = init.Name.Substring(0, init.Name.Length - 4);
|
||||
var name = init.Name[..^4];
|
||||
var parameters = init.GetConstructors().Select(ci => ci.GetParameters());
|
||||
var parameterString = string.Join(" | ",
|
||||
parameters
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
.Select(type => new
|
||||
{
|
||||
type.Namespace,
|
||||
Name = type.Name.EndsWith("Info") ? type.Name.Substring(0, type.Name.Length - 4) : type.Name,
|
||||
Name = type.Name.EndsWith("Info") ? type.Name[..^4] : type.Name,
|
||||
Description = string.Join(" ", Utility.GetCustomAttributes<DescAttribute>(type, false).SelectMany(d => d.Lines)),
|
||||
RequiresTraits = RequiredTraitTypes(type)
|
||||
.Select(y => y.Name),
|
||||
@@ -79,7 +79,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
.Select(a =>
|
||||
{
|
||||
var name = a.AttributeType.Name;
|
||||
name = name.EndsWith("Attribute") ? name.Substring(0, name.Length - 9) : name;
|
||||
name = name.EndsWith("Attribute") ? name[..^9] : name;
|
||||
|
||||
return new
|
||||
{
|
||||
|
||||
@@ -58,7 +58,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
.Select(type => new
|
||||
{
|
||||
type.Namespace,
|
||||
Name = type.Name.EndsWith("Info") ? type.Name.Substring(0, type.Name.Length - 4) : type.Name,
|
||||
Name = type.Name.EndsWith("Info") ? type.Name[..^4] : type.Name,
|
||||
Description = string.Join(" ", Utility.GetCustomAttributes<DescAttribute>(type, false).SelectMany(d => d.Lines)),
|
||||
InheritedTypes = type.BaseTypes()
|
||||
.Select(y => y.Name)
|
||||
@@ -82,7 +82,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
.Select(a =>
|
||||
{
|
||||
var name = a.AttributeType.Name;
|
||||
name = name.EndsWith("Attribute") ? name.Substring(0, name.Length - 9) : name;
|
||||
name = name.EndsWith("Attribute") ? name[..^9] : name;
|
||||
|
||||
return new
|
||||
{
|
||||
|
||||
@@ -231,7 +231,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
|
||||
static string Truncate(string s, int maxLength)
|
||||
{
|
||||
return s.Length <= maxLength ? s : s.Substring(0, maxLength);
|
||||
return s.Length <= maxLength ? s : s[..maxLength];
|
||||
}
|
||||
|
||||
static string GetTileset(IniSection mapSection)
|
||||
|
||||
@@ -51,13 +51,13 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
if (highlightStart > 0 && highlightEnd > highlightStart)
|
||||
{
|
||||
// Normal line segment before highlight
|
||||
var lineNormal = line.Substring(0, highlightStart);
|
||||
var lineNormal = line[..highlightStart];
|
||||
components.Add((lineNormal, false));
|
||||
|
||||
// Highlight line segment
|
||||
var lineHighlight = line.Substring(highlightStart + 1, highlightEnd - highlightStart - 1);
|
||||
var lineHighlight = line[(highlightStart + 1)..highlightEnd];
|
||||
components.Add((lineHighlight, true));
|
||||
line = line.Substring(highlightEnd + 1);
|
||||
line = line[(highlightEnd + 1)..];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -676,15 +676,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
name = source.Name;
|
||||
var compare = Platform.CurrentPlatform == PlatformType.Windows ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal;
|
||||
if (name.StartsWith(modData.Manifest.Package.Name, compare))
|
||||
name = "$" + modData.Manifest.Id + "/" + name.Substring(modData.Manifest.Package.Name.Length + 1);
|
||||
name = "$" + modData.Manifest.Id + "/" + name[(modData.Manifest.Package.Name.Length + 1)..];
|
||||
else if (name.StartsWith(Platform.EngineDir, compare))
|
||||
name = "./" + name.Substring(Platform.EngineDir.Length);
|
||||
name = "./" + name[Platform.EngineDir.Length..];
|
||||
else if (name.StartsWith(Platform.SupportDir, compare))
|
||||
name = "^" + name.Substring(Platform.SupportDir.Length);
|
||||
name = "^" + name[Platform.SupportDir.Length..];
|
||||
}
|
||||
|
||||
if (name.Length > 18)
|
||||
name = "..." + name.Substring(name.Length - 15);
|
||||
name = "..." + name[^15..];
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
@@ -35,8 +35,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
}
|
||||
else
|
||||
{
|
||||
ipField.Text = text.Substring(0, last);
|
||||
portField.Text = text.Substring(last + 1);
|
||||
ipField.Text = text[..last];
|
||||
portField.Text = text[(last + 1)..];
|
||||
}
|
||||
|
||||
var joinButton = panel.Get<ButtonWidget>("JOIN_BUTTON");
|
||||
|
||||
@@ -205,8 +205,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
return (null, null);
|
||||
|
||||
var split = input.IndexOf(token, StringComparison.Ordinal);
|
||||
var first = split > 0 ? input.Substring(0, split) : input;
|
||||
var second = split > 0 ? input.Substring(split + token.Length) : null;
|
||||
var first = split > 0 ? input[..split] : input;
|
||||
var second = split > 0 ? input[(split + token.Length)..] : null;
|
||||
return (first, second);
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
{
|
||||
prefix = "/";
|
||||
suffix = "";
|
||||
toComplete = text.Substring(1);
|
||||
toComplete = text[1..];
|
||||
candidates = Commands.Where(x => x.StartsWith(toComplete, StringComparison.InvariantCultureIgnoreCase)).ToList();
|
||||
}
|
||||
else if (Names != null)
|
||||
@@ -52,9 +52,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
var oneWord = text.Contains(' ');
|
||||
if (oneWord)
|
||||
{
|
||||
prefix = text.Substring(0, text.LastIndexOf(' ') + 1);
|
||||
prefix = text[..(text.LastIndexOf(' ') + 1)];
|
||||
suffix = "";
|
||||
toComplete = text.Substring(prefix.Length);
|
||||
toComplete = text[prefix.Length..];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -156,7 +156,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
var minValue = int.MaxValue;
|
||||
for (var i = 0; i <= apparentText.Length; i++)
|
||||
{
|
||||
var dist = Math.Abs(start + font.Measure(apparentText.Substring(0, i)).X - x);
|
||||
var dist = Math.Abs(start + font.Measure(apparentText[..i]).X - x);
|
||||
if (dist > minValue)
|
||||
break;
|
||||
minValue = dist;
|
||||
@@ -168,12 +168,12 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
|
||||
int GetPrevWhitespaceIndex()
|
||||
{
|
||||
return Text.Substring(0, CursorPosition).TrimEnd().LastIndexOf(' ') + 1;
|
||||
return Text[..CursorPosition].TrimEnd().LastIndexOf(' ') + 1;
|
||||
}
|
||||
|
||||
int GetNextWhitespaceIndex()
|
||||
{
|
||||
var substr = Text.Substring(CursorPosition);
|
||||
var substr = Text[CursorPosition..];
|
||||
var substrTrimmed = substr.TrimStart();
|
||||
var trimmedSpaces = substr.Length - substrTrimmed.Length;
|
||||
var nextWhitespace = substrTrimmed.IndexOf(' ');
|
||||
@@ -335,7 +335,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
if (!isOSX && e.Modifiers.HasModifier(Modifiers.Ctrl) && CursorPosition > 0)
|
||||
{
|
||||
// Write directly to the Text backing field to avoid unnecessary validation
|
||||
text = text.Substring(CursorPosition);
|
||||
text = text[CursorPosition..];
|
||||
CursorPosition = 0;
|
||||
ClearSelection();
|
||||
OnTextEdited();
|
||||
@@ -350,7 +350,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
{
|
||||
var lowestIndex = selectionStartIndex < selectionEndIndex ? selectionStartIndex : selectionEndIndex;
|
||||
var highestIndex = selectionStartIndex < selectionEndIndex ? selectionEndIndex : selectionStartIndex;
|
||||
Game.Renderer.SetClipboardText(Text.Substring(lowestIndex, highestIndex - lowestIndex));
|
||||
Game.Renderer.SetClipboardText(Text[lowestIndex..highestIndex]);
|
||||
|
||||
RemoveSelectedText();
|
||||
}
|
||||
@@ -363,7 +363,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
{
|
||||
var lowestIndex = selectionStartIndex < selectionEndIndex ? selectionStartIndex : selectionEndIndex;
|
||||
var highestIndex = selectionStartIndex < selectionEndIndex ? selectionEndIndex : selectionStartIndex;
|
||||
Game.Renderer.SetClipboardText(Text.Substring(lowestIndex, highestIndex - lowestIndex));
|
||||
Game.Renderer.SetClipboardText(Text[lowestIndex..highestIndex]);
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -377,7 +377,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
{
|
||||
// Write directly to the Text backing field to avoid unnecessary validation
|
||||
if ((!isOSX && e.Modifiers.HasModifier(Modifiers.Ctrl)) || (isOSX && e.Modifiers.HasModifier(Modifiers.Alt)))
|
||||
text = text.Substring(0, CursorPosition) + text.Substring(GetNextWhitespaceIndex());
|
||||
text = text[..CursorPosition] + text[GetNextWhitespaceIndex()..];
|
||||
else if (isOSX && e.Modifiers.HasModifier(Modifiers.Meta))
|
||||
text = text.Remove(CursorPosition);
|
||||
else
|
||||
@@ -400,12 +400,12 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
if ((!isOSX && e.Modifiers.HasModifier(Modifiers.Ctrl)) || (isOSX && e.Modifiers.HasModifier(Modifiers.Alt)))
|
||||
{
|
||||
var prevWhitespace = GetPrevWhitespaceIndex();
|
||||
text = text.Substring(0, prevWhitespace) + text.Substring(CursorPosition);
|
||||
text = text[..prevWhitespace] + text[CursorPosition..];
|
||||
CursorPosition = prevWhitespace;
|
||||
}
|
||||
else if (isOSX && e.Modifiers.HasModifier(Modifiers.Meta))
|
||||
{
|
||||
text = text.Substring(CursorPosition);
|
||||
text = text[CursorPosition..];
|
||||
CursorPosition = 0;
|
||||
}
|
||||
else
|
||||
@@ -432,7 +432,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
// Take only the first line of the clipboard contents
|
||||
var nl = clipboardText.IndexOf('\n');
|
||||
if (nl > 0)
|
||||
clipboardText = clipboardText.Substring(0, nl);
|
||||
clipboardText = clipboardText[..nl];
|
||||
|
||||
clipboardText = clipboardText.Trim();
|
||||
if (clipboardText.Length > 0)
|
||||
@@ -479,7 +479,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
pasteLength = Math.Min(input.Length, MaxLength - Text.Length);
|
||||
|
||||
// Write directly to the Text backing field to avoid repeating the invalid character validation
|
||||
text = text.Insert(CursorPosition, input.Substring(0, pasteLength));
|
||||
text = text.Insert(CursorPosition, input[..pasteLength]);
|
||||
CursorPosition += pasteLength;
|
||||
ClearSelection();
|
||||
OnTextEdited();
|
||||
@@ -551,7 +551,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
var pos = RenderOrigin;
|
||||
|
||||
var textSize = font.Measure(apparentText);
|
||||
var cursorPosition = font.Measure(apparentText.Substring(0, CursorPosition));
|
||||
var cursorPosition = font.Measure(apparentText[..CursorPosition]);
|
||||
|
||||
var disabled = IsDisabled();
|
||||
var hover = Ui.MouseOverWidget == this || Children.Any(c => c == Ui.MouseOverWidget);
|
||||
@@ -580,8 +580,8 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
{
|
||||
var visualSelectionStartIndex = selectionStartIndex < selectionEndIndex ? selectionStartIndex : selectionEndIndex;
|
||||
var visualSelectionEndIndex = selectionStartIndex < selectionEndIndex ? selectionEndIndex : selectionStartIndex;
|
||||
var highlightStartX = font.Measure(apparentText.Substring(0, visualSelectionStartIndex)).X;
|
||||
var highlightEndX = font.Measure(apparentText.Substring(0, visualSelectionEndIndex)).X;
|
||||
var highlightStartX = font.Measure(apparentText[..visualSelectionStartIndex]).X;
|
||||
var highlightEndX = font.Measure(apparentText[..visualSelectionEndIndex]).X;
|
||||
|
||||
WidgetUtils.FillRectWithColor(
|
||||
new Rectangle(textPos.X + highlightStartX, textPos.Y, highlightEndX - highlightStartX, Bounds.Height - verticalMargin * 2), TextColorHighlight);
|
||||
|
||||
@@ -249,7 +249,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
if (spaceIndex == -1)
|
||||
break;
|
||||
|
||||
var fragmentWidth = font.Measure(line.Substring(0, spaceIndex)).X;
|
||||
var fragmentWidth = font.Measure(line[..spaceIndex]).X;
|
||||
if (fragmentWidth > width)
|
||||
break;
|
||||
|
||||
@@ -258,8 +258,8 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
|
||||
if (start > 0)
|
||||
{
|
||||
lines[i] = line.Substring(0, start - 1);
|
||||
lines.Insert(i + 1, line.Substring(start));
|
||||
lines[i] = line[..(start - 1)];
|
||||
lines.Insert(i + 1, line[start..]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -278,7 +278,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
var trimmed = text;
|
||||
while (trimmedWidth > width && trimmed.Length > 3)
|
||||
{
|
||||
trimmed = text.Substring(0, trimmed.Length - 4) + "...";
|
||||
trimmed = text[..(trimmed.Length - 4)] + "...";
|
||||
trimmedWidth = font.Measure(trimmed).X;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user