From 279b10dd0f9b9148601c40b559cd238015fa4c54 Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Thu, 13 Feb 2025 21:19:02 -0800 Subject: [PATCH] feat: Replaces params array with params ReadOnlySpan (#2125) --- Projects/Server/Items/Container.cs | 2 +- Projects/Server/Regions/Region.cs | 6 +++--- Projects/Server/Utilities/Utility.cs | 8 ++++---- Projects/UOContent/Engines/Spawners/BaseSpawner.cs | 4 ++-- Projects/UOContent/Engines/Spawners/ProximitySpawner.cs | 4 ++-- Projects/UOContent/Engines/Spawners/RegionSpawner.cs | 4 ++-- Projects/UOContent/Engines/Spawners/Spawner.cs | 4 ++-- Projects/UOContent/Gumps/AdminGump.cs | 2 +- Projects/UOContent/Items/Misc/FlippableAddonAttribute.cs | 4 ++-- Projects/UOContent/Misc/InhumanSpeech.cs | 4 ++-- Projects/UOContent/Misc/Loot.cs | 8 ++++---- Projects/UOContent/Misc/Weather.cs | 8 ++++---- Projects/UOContent/Mobiles/AI/HealerAI.cs | 3 ++- Projects/UOContent/Multis/ComponentVerification.cs | 6 +++--- Projects/UOContent/Regions/BaseRegion.cs | 4 ++-- 15 files changed, 36 insertions(+), 35 deletions(-) diff --git a/Projects/Server/Items/Container.cs b/Projects/Server/Items/Container.cs index 2d50aa8b3..bf4fab0b1 100644 --- a/Projects/Server/Items/Container.cs +++ b/Projects/Server/Items/Container.cs @@ -423,7 +423,7 @@ public partial class Container : Item return false; } - public virtual bool TryDropItems(Mobile from, bool sendFullMessage, params Item[] droppedItems) + public virtual bool TryDropItems(Mobile from, bool sendFullMessage, params ReadOnlySpan droppedItems) { var dropItems = new List(); var stackItems = new List(); diff --git a/Projects/Server/Regions/Region.cs b/Projects/Server/Regions/Region.cs index 0045a1ffa..a53e6466f 100644 --- a/Projects/Server/Regions/Region.cs +++ b/Projects/Server/Regions/Region.cs @@ -127,7 +127,7 @@ public class Region : IComparable, IValueLinkListNode public const int MinZ = sbyte.MinValue; public const int MaxZ = sbyte.MaxValue + 1; - public Region(string name, Map map, int priority, params Rectangle2D[] area) : this( + public Region(string name, Map map, int priority, params ReadOnlySpan area) : this( name, map, priority, @@ -147,7 +147,7 @@ public class Region : IComparable, IValueLinkListNode public Region(string name, Map map, Region parent, int priority, params Rectangle3D[] area) : this(name, map, parent, area) => Priority = priority; - public Region(string name, Map map, Region parent, params Rectangle2D[] area) : this( + public Region(string name, Map map, Region parent, params ReadOnlySpan area) : this( name, map, parent, @@ -314,7 +314,7 @@ public class Region : IComparable, IValueLinkListNode public static Rectangle3D ConvertTo3D(Rectangle2D rect) => new(new Point3D(rect.Start, MinZ), new Point3D(rect.End, MaxZ)); - public static Rectangle3D[] ConvertTo3D(Rectangle2D[] rects) + public static Rectangle3D[] ConvertTo3D(ReadOnlySpan rects) { var ret = new Rectangle3D[rects.Length]; diff --git a/Projects/Server/Utilities/Utility.cs b/Projects/Server/Utilities/Utility.cs index 61545077d..9f61d7446 100644 --- a/Projects/Server/Utilities/Utility.cs +++ b/Projects/Server/Utilities/Utility.cs @@ -745,7 +745,7 @@ public static partial class Utility } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static T RandomList(params T[] list) => list.RandomElement(); + public static T RandomList(params ReadOnlySpan list) => list.RandomElement(); [MethodImpl(MethodImplOptions.AggressiveInlining)] public static T RandomElement(this ReadOnlySpan list) => list.Length == 0 ? default : list[Random(list.Length)]; @@ -1305,15 +1305,15 @@ public static partial class Utility } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static T[] Combine(this IList source, params IList[] arrays) => + public static T[] Combine(this IList source, params ReadOnlySpan> arrays) => source.Combine(false, arrays); [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static T[] CombinePooled(this IList source, params IList[] arrays) => + public static T[] CombinePooled(this IList source, params ReadOnlySpan> arrays) => source.Combine(true, arrays); [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static T[] Combine(this IList source, bool pooled, params IList[] arrays) + public static T[] Combine(this IList source, bool pooled, params ReadOnlySpan> arrays) { var totalLength = source.Count; foreach (var arr in arrays) diff --git a/Projects/UOContent/Engines/Spawners/BaseSpawner.cs b/Projects/UOContent/Engines/Spawners/BaseSpawner.cs index 28e423313..258d2956b 100644 --- a/Projects/UOContent/Engines/Spawners/BaseSpawner.cs +++ b/Projects/UOContent/Engines/Spawners/BaseSpawner.cs @@ -85,7 +85,7 @@ public abstract partial class BaseSpawner : Item, ISpawner public BaseSpawner( int amount, int minDelay, int maxDelay, int team, int homeRange, - params string[] spawnedNames + params ReadOnlySpan spawnedNames ) : this( amount, TimeSpan.FromMinutes(minDelay), @@ -99,7 +99,7 @@ public abstract partial class BaseSpawner : Item, ISpawner public BaseSpawner( int amount, TimeSpan minDelay, TimeSpan maxDelay, int team, int homeRange, - params string[] spawnedNames + params ReadOnlySpan spawnedNames ) : base(0x1f13) { _guid = Guid.NewGuid(); diff --git a/Projects/UOContent/Engines/Spawners/ProximitySpawner.cs b/Projects/UOContent/Engines/Spawners/ProximitySpawner.cs index ad1dde122..ad03c2ad8 100644 --- a/Projects/UOContent/Engines/Spawners/ProximitySpawner.cs +++ b/Projects/UOContent/Engines/Spawners/ProximitySpawner.cs @@ -66,7 +66,7 @@ public partial class ProximitySpawner : Spawner [Constructible(AccessLevel.Developer)] public ProximitySpawner( int amount, TimeSpan minDelay, TimeSpan maxDelay, int team, int homeRange, - params string[] spawnedNames + params ReadOnlySpan spawnedNames ) : base(amount, minDelay, maxDelay, team, homeRange, spawnedNames) { } @@ -74,7 +74,7 @@ public partial class ProximitySpawner : Spawner [Constructible(AccessLevel.Developer)] public ProximitySpawner( int amount, TimeSpan minDelay, TimeSpan maxDelay, int team, int homeRange, int triggerRange, - TextDefinition spawnMessage, bool instantFlag, params string[] spawnedNames + TextDefinition spawnMessage, bool instantFlag, params ReadOnlySpan spawnedNames ) : base(amount, minDelay, maxDelay, team, homeRange, spawnedNames) { TriggerRange = triggerRange; diff --git a/Projects/UOContent/Engines/Spawners/RegionSpawner.cs b/Projects/UOContent/Engines/Spawners/RegionSpawner.cs index 90deae17f..f4f889d34 100644 --- a/Projects/UOContent/Engines/Spawners/RegionSpawner.cs +++ b/Projects/UOContent/Engines/Spawners/RegionSpawner.cs @@ -42,7 +42,7 @@ public partial class RegionSpawner : Spawner [Constructible(AccessLevel.Developer)] public RegionSpawner( int amount, int minDelay, int maxDelay, int team, int homeRange, - params string[] spawnedNames + params ReadOnlySpan spawnedNames ) : this( amount, TimeSpan.FromMinutes(minDelay), @@ -57,7 +57,7 @@ public partial class RegionSpawner : Spawner [Constructible(AccessLevel.Developer)] public RegionSpawner( int amount, TimeSpan minDelay, TimeSpan maxDelay, int team, int homeRange, - params string[] spawnedNames + params ReadOnlySpan spawnedNames ) : base(amount, minDelay, maxDelay, team, homeRange, spawnedNames) { } diff --git a/Projects/UOContent/Engines/Spawners/Spawner.cs b/Projects/UOContent/Engines/Spawners/Spawner.cs index 5a5b1d1f2..49a3539ae 100644 --- a/Projects/UOContent/Engines/Spawners/Spawner.cs +++ b/Projects/UOContent/Engines/Spawners/Spawner.cs @@ -21,7 +21,7 @@ public partial class Spawner : BaseSpawner [Constructible(AccessLevel.Developer)] public Spawner( int amount, int minDelay, int maxDelay, int team, int homeRange, - params string[] spawnedNames + params ReadOnlySpan spawnedNames ) : this( amount, TimeSpan.FromMinutes(minDelay), @@ -36,7 +36,7 @@ public partial class Spawner : BaseSpawner [Constructible(AccessLevel.Developer)] public Spawner( int amount, TimeSpan minDelay, TimeSpan maxDelay, int team, int homeRange, - params string[] spawnedNames + params ReadOnlySpan spawnedNames ) : base(amount, minDelay, maxDelay, team, homeRange, spawnedNames) { } diff --git a/Projects/UOContent/Gumps/AdminGump.cs b/Projects/UOContent/Gumps/AdminGump.cs index 816d1967b..1d8a8a024 100644 --- a/Projects/UOContent/Gumps/AdminGump.cs +++ b/Projects/UOContent/Gumps/AdminGump.cs @@ -1313,7 +1313,7 @@ namespace Server.Gumps public void AddPageButton( int x, int y, int buttonID, string text, AdminGumpPage page, - params AdminGumpPage[] subPages + params ReadOnlySpan subPages ) { var isSelection = m_PageType == page; diff --git a/Projects/UOContent/Items/Misc/FlippableAddonAttribute.cs b/Projects/UOContent/Items/Misc/FlippableAddonAttribute.cs index 2a76571ea..1d929904b 100644 --- a/Projects/UOContent/Items/Misc/FlippableAddonAttribute.cs +++ b/Projects/UOContent/Items/Misc/FlippableAddonAttribute.cs @@ -6,7 +6,7 @@ namespace Server.Items; [AttributeUsage(AttributeTargets.Class)] public class FlippableAddonAttribute : Attribute { - private static readonly string m_MethodName = "Flip"; + private const string MethodName = "Flip"; private static readonly Type[] m_Params = { @@ -26,7 +26,7 @@ public class FlippableAddonAttribute : Attribute try { - var flipMethod = addon.GetType().GetMethod(m_MethodName, m_Params); + var flipMethod = addon.GetType().GetMethod(MethodName, m_Params); if (flipMethod == null) { diff --git a/Projects/UOContent/Misc/InhumanSpeech.cs b/Projects/UOContent/Misc/InhumanSpeech.cs index 41f0e51b7..4aafad2f8 100644 --- a/Projects/UOContent/Misc/InhumanSpeech.cs +++ b/Projects/UOContent/Misc/InhumanSpeech.cs @@ -360,10 +360,10 @@ namespace Server.Misc return sentence.ToString(); } - public void SayRandomTranslate(Mobile mob, params string[] sentancesInEnglish) + public void SayRandomTranslate(Mobile mob, params ReadOnlySpan sentencesInEnglish) { SaySentance(mob, Utility.RandomMinMax(2, 3)); - mob.Say(sentancesInEnglish.RandomElement()); + mob.Say(sentencesInEnglish.RandomElement()); } private string GetRandomResponseWord(List keywordsFound) diff --git a/Projects/UOContent/Misc/Loot.cs b/Projects/UOContent/Misc/Loot.cs index 82a73054b..b641400a2 100644 --- a/Projects/UOContent/Misc/Loot.cs +++ b/Projects/UOContent/Misc/Loot.cs @@ -766,15 +766,15 @@ namespace Server } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Item Construct(params Type[] types) => Construct(types.RandomElement()); + public static Item Construct(params ReadOnlySpan types) => Construct(types.RandomElement()); [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static T Construct(params Type[] types) where T : Item => Construct(types.RandomElement()); + public static T Construct(params ReadOnlySpan types) where T : Item => Construct(types.RandomElement()); [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Item Construct(Type[] types, int index) => Construct(types, index); + public static Item Construct(ReadOnlySpan types, int index) => Construct(types, index); - public static T Construct(Type[] types, int index) where T : Item + public static T Construct(ReadOnlySpan types, int index) where T : Item { if (index >= 0 && index < types.Length) { diff --git a/Projects/UOContent/Misc/Weather.cs b/Projects/UOContent/Misc/Weather.cs index a29b7e985..178e233b8 100644 --- a/Projects/UOContent/Misc/Weather.cs +++ b/Projects/UOContent/Misc/Weather.cs @@ -15,14 +15,14 @@ namespace Server.Misc private int m_Stage; public Weather( - Map facet, Rectangle2D[] area, int temperature, int chanceOfPercipitation, int chanceOfExtremeTemperature, + Map facet, Rectangle2D[] area, int temperature, int chanceOfPrecipitation, int chanceOfExtremeTemperature, TimeSpan interval ) { Facet = facet; Area = area; Temperature = temperature; - ChanceOfPercipitation = chanceOfPercipitation; + ChanceOfPrecipitation = chanceOfPrecipitation; ChanceOfExtremeTemperature = chanceOfExtremeTemperature; var list = GetWeatherList(facet); @@ -42,7 +42,7 @@ namespace Server.Misc public int Temperature { get; set; } - public int ChanceOfPercipitation { get; set; } + public int ChanceOfPrecipitation { get; set; } public int ChanceOfExtremeTemperature { get; set; } @@ -298,7 +298,7 @@ namespace Server.Misc { if (m_Stage == 0) { - m_Active = ChanceOfPercipitation > Utility.Random(100); + m_Active = ChanceOfPrecipitation > Utility.Random(100); m_ExtremeTemperature = ChanceOfExtremeTemperature > Utility.Random(100); if (MoveSpeed > 0) diff --git a/Projects/UOContent/Mobiles/AI/HealerAI.cs b/Projects/UOContent/Mobiles/AI/HealerAI.cs index 9a08703ea..4afa17e3b 100644 --- a/Projects/UOContent/Mobiles/AI/HealerAI.cs +++ b/Projects/UOContent/Mobiles/AI/HealerAI.cs @@ -1,3 +1,4 @@ +using System; using Server.Spells; using Server.Spells.First; using Server.Spells.Fourth; @@ -132,7 +133,7 @@ public class HealerAI : BaseAI } } - private Mobile Find(params NeedDelegate[] funcs) + private Mobile Find(params ReadOnlySpan funcs) { if (m_Mobile.Deleted) { diff --git a/Projects/UOContent/Multis/ComponentVerification.cs b/Projects/UOContent/Multis/ComponentVerification.cs index f0fd40d08..9942fc9a0 100644 --- a/Projects/UOContent/Multis/ComponentVerification.cs +++ b/Projects/UOContent/Multis/ComponentVerification.cs @@ -147,17 +147,17 @@ namespace Server.Multis return table; } - private void LoadItems(string path, params string[] itemColumns) + private void LoadItems(string path, params ReadOnlySpan itemColumns) { LoadSpreadsheet(m_ItemTable, path, itemColumns); } - private void LoadMultis(string path, params string[] multiColumns) + private void LoadMultis(string path, params ReadOnlySpan multiColumns) { LoadSpreadsheet(m_MultiTable, path, multiColumns); } - private void LoadSpreadsheet(int[] table, string path, params string[] tileColumns) + private void LoadSpreadsheet(int[] table, string path, params ReadOnlySpan tileColumns) { var ss = new Spreadsheet(path); diff --git a/Projects/UOContent/Regions/BaseRegion.cs b/Projects/UOContent/Regions/BaseRegion.cs index dbe924594..b18c7fa18 100644 --- a/Projects/UOContent/Regions/BaseRegion.cs +++ b/Projects/UOContent/Regions/BaseRegion.cs @@ -12,7 +12,7 @@ public class BaseRegion : Region private static readonly List m_RectBuffer1 = new(); private static readonly List m_RectBuffer2 = new(); - public BaseRegion(string name, Map map, int priority, params Rectangle2D[] area) : base(name, map, priority, area) + public BaseRegion(string name, Map map, int priority, params ReadOnlySpan area) : base(name, map, priority, area) { } @@ -26,7 +26,7 @@ public class BaseRegion : Region { } - public BaseRegion(string name, Map map, Region parent, params Rectangle2D[] area) : base(name, map, parent, area) + public BaseRegion(string name, Map map, Region parent, params ReadOnlySpan area) : base(name, map, parent, area) { }