fix: Cleans up LINQ calls. (#965)

- [X] Removes several `ToList()` uses with `PooledRefQueue`
- [X] Adds a `PeekRandom` to PooledRefQueue
- [X] Updates EV/BS so they dispel each other in a more efficient manner.
- [X] Fixes Firebomb so it works like a normal firefield.
- [X] Fixes field spells so they aren't unnecessarily using a Point3D ref more than necessary.
- [X] Removes extra allocation in campfire by using reverse loop.
- [X] Removes other LINQ calls that aren't needed.
This commit is contained in:
Kamron Batman 2022-03-20 19:20:54 -07:00 • committed by GitHub
parent daf89686d1
commit 23532db603
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
40 changed files with 585 additions and 447 deletions

View file

@ -920,6 +920,7 @@ namespace Server
return total + bonus;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Shuffle<T>(this IList<T> list)
{
var count = list.Count;
@ -930,6 +931,7 @@ namespace Server
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Shuffle<T>(this Span<T> list)
{
var count = list.Length;
@ -1094,6 +1096,15 @@ namespace Server
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double RandomDouble() => RandomSources.Source.NextDouble();
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Point3D RandomPointIn(Rectangle2D rect, Map map)
{
var x = Random(rect.X, rect.Width);
var y = Random(rect.Y, rect.Height);
return new Point3D(x, y, map.GetAverageZ(x, y));
}
/// <summary>
/// Random pink, blue, green, orange, red or yellow hue
/// </summary>