fix(core): Optimizes strings / .NET 5 compatibility changes (#354)
- [X] Removes some string allocations (e.g. split) - [X] Optimizes some collections - [X] Converts insensitive to extension methods of built-ins. - [X] Adds ordinal (case sensitive) string helpers - [X] Fixes conditionals for in-game commands so they use Ordinal comparisons. - [X] Replaces ToLower.Contains with InsensitiveContains - [X] Adds ValueStringBuilder - [X] Implements ValueStringBuilder in a few places where it makes sense - [X] Removes the redundant Wrap function and replaces it with an optimized version - [X] Fixes list conversions in Utility Closes #351 Bumps release version
This commit is contained in:
parent
92aae8d482
commit
77ce2e1980
117 changed files with 2000 additions and 1226 deletions
|
|
@ -1,5 +1,6 @@
|
|||
using System;
|
||||
using System.Text;
|
||||
using Microsoft.Toolkit.HighPerformance.Extensions;
|
||||
using Server.Commands;
|
||||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
|
@ -31,43 +32,50 @@ namespace Server.Misc
|
|||
return;
|
||||
}
|
||||
|
||||
if (Insensitive.StartsWith(args.Speech, "set"))
|
||||
if (args.Speech.InsensitiveStartsWith("set"))
|
||||
{
|
||||
var from = args.Mobile;
|
||||
|
||||
var split = args.Speech.Split(' ');
|
||||
|
||||
if (split.Length == 3)
|
||||
var tokenizer = args.Speech.Tokenize(' ');
|
||||
if (!tokenizer.MoveNext())
|
||||
{
|
||||
try
|
||||
{
|
||||
var name = split[1];
|
||||
var value = Convert.ToDouble(split[2]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (Insensitive.Equals(name, "str"))
|
||||
{
|
||||
ChangeStrength(from, (int)value);
|
||||
}
|
||||
else if (Insensitive.Equals(name, "dex"))
|
||||
{
|
||||
ChangeDexterity(from, (int)value);
|
||||
}
|
||||
else if (Insensitive.Equals(name, "int"))
|
||||
{
|
||||
ChangeIntelligence(from, (int)value);
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeSkill(from, name, value);
|
||||
}
|
||||
}
|
||||
catch
|
||||
var name = tokenizer.MoveNext() ? tokenizer.Current : null;
|
||||
var valueStr = tokenizer.MoveNext() ? tokenizer.Current : null;
|
||||
if (valueStr == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var value = double.Parse(valueStr);
|
||||
|
||||
try
|
||||
{
|
||||
if (name.InsensitiveEquals("str"))
|
||||
{
|
||||
// ignored
|
||||
ChangeStrength(from, (int)value);
|
||||
}
|
||||
else if (name.InsensitiveEquals("dex"))
|
||||
{
|
||||
ChangeDexterity(from, (int)value);
|
||||
}
|
||||
else if (name.InsensitiveEquals("int"))
|
||||
{
|
||||
ChangeIntelligence(from, (int)value);
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeSkill(from, name.ToString(), value);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// ignored
|
||||
}
|
||||
}
|
||||
else if (Insensitive.Equals(args.Speech, "help"))
|
||||
else if (args.Speech.InsensitiveEquals("help"))
|
||||
{
|
||||
args.Mobile.SendGump(new TCHelpGump());
|
||||
args.Handled = true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue