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:
Kamron Batman 2020-12-20 23:21:55 -08:00 • committed by GitHub
parent 92aae8d482
commit 77ce2e1980
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
117 changed files with 2000 additions and 1226 deletions

View file

@ -1396,7 +1396,7 @@ namespace Server.Engines.ConPVP
return;
}
if (Insensitive.Contains(e.Speech, "i wish to duel"))
if (e.Speech.InsensitiveContains("i wish to duel"))
{
if (!pm.CheckAlive())
{
@ -1432,7 +1432,7 @@ namespace Server.Engines.ConPVP
e.Handled = true;
}
}
else if (Insensitive.Equals(e.Speech, "change arena preferences"))
else if (e.Speech.InsensitiveEquals("change arena preferences"))
{
if (!pm.CheckAlive())
{
@ -1448,7 +1448,7 @@ namespace Server.Engines.ConPVP
}
}
}
else if (Insensitive.Equals(e.Speech, "showladder"))
else if (e.Speech.InsensitiveEquals("showladder"))
{
e.Blocked = true;
if (!pm.CheckAlive())
@ -1487,7 +1487,7 @@ namespace Server.Engines.ConPVP
}
}
}
else if (Insensitive.Equals(e.Speech, "viewladder"))
else if (e.Speech.InsensitiveEquals("viewladder"))
{
e.Blocked = true;
@ -1509,7 +1509,7 @@ namespace Server.Engines.ConPVP
}
}
}
else if (Insensitive.Contains(e.Speech, "i yield"))
else if (e.Speech.InsensitiveContains("i yield"))
{
if (!pm.CheckAlive())
{

View file

@ -122,7 +122,10 @@ namespace Server.Engines.ConPVP
{
for (var i = 0; i < entries.Count; ++i)
{
var teamInfo = entries[i] as DDTeamInfo;
if (entries[i] is not DDTeamInfo teamInfo)
{
continue;
}
AddImage(30, 70 + i * 75, 10152);
AddImage(30, 85 + i * 75, 10151);
@ -884,7 +887,7 @@ namespace Server.Engines.ConPVP
}
}
if (i == winner.TeamID)
if (i == winner?.TeamID)
{
continue;
}
@ -898,7 +901,10 @@ namespace Server.Engines.ConPVP
}
}
m_Context.Finish(m_Context.Participants[winner.TeamID]);
if (winner != null)
{
m_Context.Finish(m_Context.Participants[winner.TeamID]);
}
}
public override void OnStop()

View file

@ -279,7 +279,7 @@ namespace Server.Engines.ConPVP
AddPage(0);
AddBackground(0, 0, 300, 300, 9380);
var pList = m_List?.CastListCovariant<object, TourneyParticipant>()
var pList = m_List?.SafeConvertList<object, TourneyParticipant>()
?? new List<TourneyParticipant>(tourney.Participants);
AddLeftArrow(25, 11, ToButtonID(0, 0));
@ -412,10 +412,6 @@ namespace Server.Engines.ConPVP
AddLeftArrow(25, 11, ToButtonID(0, 0));
AddHtml(25, 35, 250, 20, Center("Rounds"));
// List<PyramidLevel> levelsList = m_List != null
// ? Utility.CastListCovariant<object, PyramidLevel>(m_List)
// : new List<PyramidLevel>(tourney.Pyramid.Levels);
StartPage(out var index, out var count, out var y, 12);
for (var i = 0; i < count; ++i, y += 18)
@ -439,7 +435,7 @@ namespace Server.Engines.ConPVP
}
var matchesList = m_List != null
? m_List.CastListCovariant<object, TourneyMatch>()
? m_List.SafeConvertList<object, TourneyMatch>()
: new List<TourneyMatch>(level.Matches);
AddRightArrow(