feat: Replaces params array with params ReadOnlySpan (#2125)
This commit is contained in:
parent
90059c5e74
commit
279b10dd0f
15 changed files with 36 additions and 35 deletions
|
|
@ -423,7 +423,7 @@ public partial class Container : Item
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual bool TryDropItems(Mobile from, bool sendFullMessage, params Item[] droppedItems)
|
public virtual bool TryDropItems(Mobile from, bool sendFullMessage, params ReadOnlySpan<Item> droppedItems)
|
||||||
{
|
{
|
||||||
var dropItems = new List<Item>();
|
var dropItems = new List<Item>();
|
||||||
var stackItems = new List<ItemStackEntry>();
|
var stackItems = new List<ItemStackEntry>();
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,7 @@ public class Region : IComparable<Region>, IValueLinkListNode<Region>
|
||||||
public const int MinZ = sbyte.MinValue;
|
public const int MinZ = sbyte.MinValue;
|
||||||
public const int MaxZ = sbyte.MaxValue + 1;
|
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<Rectangle2D> area) : this(
|
||||||
name,
|
name,
|
||||||
map,
|
map,
|
||||||
priority,
|
priority,
|
||||||
|
|
@ -147,7 +147,7 @@ public class Region : IComparable<Region>, IValueLinkListNode<Region>
|
||||||
public Region(string name, Map map, Region parent, int priority, params Rectangle3D[] area) : this(name, map, parent, area) =>
|
public Region(string name, Map map, Region parent, int priority, params Rectangle3D[] area) : this(name, map, parent, area) =>
|
||||||
Priority = priority;
|
Priority = priority;
|
||||||
|
|
||||||
public Region(string name, Map map, Region parent, params Rectangle2D[] area) : this(
|
public Region(string name, Map map, Region parent, params ReadOnlySpan<Rectangle2D> area) : this(
|
||||||
name,
|
name,
|
||||||
map,
|
map,
|
||||||
parent,
|
parent,
|
||||||
|
|
@ -314,7 +314,7 @@ public class Region : IComparable<Region>, IValueLinkListNode<Region>
|
||||||
public static Rectangle3D ConvertTo3D(Rectangle2D rect) =>
|
public static Rectangle3D ConvertTo3D(Rectangle2D rect) =>
|
||||||
new(new Point3D(rect.Start, MinZ), new Point3D(rect.End, MaxZ));
|
new(new Point3D(rect.Start, MinZ), new Point3D(rect.End, MaxZ));
|
||||||
|
|
||||||
public static Rectangle3D[] ConvertTo3D(Rectangle2D[] rects)
|
public static Rectangle3D[] ConvertTo3D(ReadOnlySpan<Rectangle2D> rects)
|
||||||
{
|
{
|
||||||
var ret = new Rectangle3D[rects.Length];
|
var ret = new Rectangle3D[rects.Length];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -745,7 +745,7 @@ public static partial class Utility
|
||||||
}
|
}
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static T RandomList<T>(params T[] list) => list.RandomElement();
|
public static T RandomList<T>(params ReadOnlySpan<T> list) => list.RandomElement();
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static T RandomElement<T>(this ReadOnlySpan<T> list) => list.Length == 0 ? default : list[Random(list.Length)];
|
public static T RandomElement<T>(this ReadOnlySpan<T> list) => list.Length == 0 ? default : list[Random(list.Length)];
|
||||||
|
|
@ -1305,15 +1305,15 @@ public static partial class Utility
|
||||||
}
|
}
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static T[] Combine<T>(this IList<T> source, params IList<T>[] arrays) =>
|
public static T[] Combine<T>(this IList<T> source, params ReadOnlySpan<IList<T>> arrays) =>
|
||||||
source.Combine(false, arrays);
|
source.Combine(false, arrays);
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static T[] CombinePooled<T>(this IList<T> source, params IList<T>[] arrays) =>
|
public static T[] CombinePooled<T>(this IList<T> source, params ReadOnlySpan<IList<T>> arrays) =>
|
||||||
source.Combine(true, arrays);
|
source.Combine(true, arrays);
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static T[] Combine<T>(this IList<T> source, bool pooled, params IList<T>[] arrays)
|
public static T[] Combine<T>(this IList<T> source, bool pooled, params ReadOnlySpan<IList<T>> arrays)
|
||||||
{
|
{
|
||||||
var totalLength = source.Count;
|
var totalLength = source.Count;
|
||||||
foreach (var arr in arrays)
|
foreach (var arr in arrays)
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ public abstract partial class BaseSpawner : Item, ISpawner
|
||||||
|
|
||||||
public BaseSpawner(
|
public BaseSpawner(
|
||||||
int amount, int minDelay, int maxDelay, int team, int homeRange,
|
int amount, int minDelay, int maxDelay, int team, int homeRange,
|
||||||
params string[] spawnedNames
|
params ReadOnlySpan<string> spawnedNames
|
||||||
) : this(
|
) : this(
|
||||||
amount,
|
amount,
|
||||||
TimeSpan.FromMinutes(minDelay),
|
TimeSpan.FromMinutes(minDelay),
|
||||||
|
|
@ -99,7 +99,7 @@ public abstract partial class BaseSpawner : Item, ISpawner
|
||||||
|
|
||||||
public BaseSpawner(
|
public BaseSpawner(
|
||||||
int amount, TimeSpan minDelay, TimeSpan maxDelay, int team, int homeRange,
|
int amount, TimeSpan minDelay, TimeSpan maxDelay, int team, int homeRange,
|
||||||
params string[] spawnedNames
|
params ReadOnlySpan<string> spawnedNames
|
||||||
) : base(0x1f13)
|
) : base(0x1f13)
|
||||||
{
|
{
|
||||||
_guid = Guid.NewGuid();
|
_guid = Guid.NewGuid();
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ public partial class ProximitySpawner : Spawner
|
||||||
[Constructible(AccessLevel.Developer)]
|
[Constructible(AccessLevel.Developer)]
|
||||||
public ProximitySpawner(
|
public ProximitySpawner(
|
||||||
int amount, TimeSpan minDelay, TimeSpan maxDelay, int team, int homeRange,
|
int amount, TimeSpan minDelay, TimeSpan maxDelay, int team, int homeRange,
|
||||||
params string[] spawnedNames
|
params ReadOnlySpan<string> spawnedNames
|
||||||
) : base(amount, minDelay, maxDelay, team, homeRange, spawnedNames)
|
) : base(amount, minDelay, maxDelay, team, homeRange, spawnedNames)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -74,7 +74,7 @@ public partial class ProximitySpawner : Spawner
|
||||||
[Constructible(AccessLevel.Developer)]
|
[Constructible(AccessLevel.Developer)]
|
||||||
public ProximitySpawner(
|
public ProximitySpawner(
|
||||||
int amount, TimeSpan minDelay, TimeSpan maxDelay, int team, int homeRange, int triggerRange,
|
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<string> spawnedNames
|
||||||
) : base(amount, minDelay, maxDelay, team, homeRange, spawnedNames)
|
) : base(amount, minDelay, maxDelay, team, homeRange, spawnedNames)
|
||||||
{
|
{
|
||||||
TriggerRange = triggerRange;
|
TriggerRange = triggerRange;
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ public partial class RegionSpawner : Spawner
|
||||||
[Constructible(AccessLevel.Developer)]
|
[Constructible(AccessLevel.Developer)]
|
||||||
public RegionSpawner(
|
public RegionSpawner(
|
||||||
int amount, int minDelay, int maxDelay, int team, int homeRange,
|
int amount, int minDelay, int maxDelay, int team, int homeRange,
|
||||||
params string[] spawnedNames
|
params ReadOnlySpan<string> spawnedNames
|
||||||
) : this(
|
) : this(
|
||||||
amount,
|
amount,
|
||||||
TimeSpan.FromMinutes(minDelay),
|
TimeSpan.FromMinutes(minDelay),
|
||||||
|
|
@ -57,7 +57,7 @@ public partial class RegionSpawner : Spawner
|
||||||
[Constructible(AccessLevel.Developer)]
|
[Constructible(AccessLevel.Developer)]
|
||||||
public RegionSpawner(
|
public RegionSpawner(
|
||||||
int amount, TimeSpan minDelay, TimeSpan maxDelay, int team, int homeRange,
|
int amount, TimeSpan minDelay, TimeSpan maxDelay, int team, int homeRange,
|
||||||
params string[] spawnedNames
|
params ReadOnlySpan<string> spawnedNames
|
||||||
) : base(amount, minDelay, maxDelay, team, homeRange, spawnedNames)
|
) : base(amount, minDelay, maxDelay, team, homeRange, spawnedNames)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ public partial class Spawner : BaseSpawner
|
||||||
[Constructible(AccessLevel.Developer)]
|
[Constructible(AccessLevel.Developer)]
|
||||||
public Spawner(
|
public Spawner(
|
||||||
int amount, int minDelay, int maxDelay, int team, int homeRange,
|
int amount, int minDelay, int maxDelay, int team, int homeRange,
|
||||||
params string[] spawnedNames
|
params ReadOnlySpan<string> spawnedNames
|
||||||
) : this(
|
) : this(
|
||||||
amount,
|
amount,
|
||||||
TimeSpan.FromMinutes(minDelay),
|
TimeSpan.FromMinutes(minDelay),
|
||||||
|
|
@ -36,7 +36,7 @@ public partial class Spawner : BaseSpawner
|
||||||
[Constructible(AccessLevel.Developer)]
|
[Constructible(AccessLevel.Developer)]
|
||||||
public Spawner(
|
public Spawner(
|
||||||
int amount, TimeSpan minDelay, TimeSpan maxDelay, int team, int homeRange,
|
int amount, TimeSpan minDelay, TimeSpan maxDelay, int team, int homeRange,
|
||||||
params string[] spawnedNames
|
params ReadOnlySpan<string> spawnedNames
|
||||||
) : base(amount, minDelay, maxDelay, team, homeRange, spawnedNames)
|
) : base(amount, minDelay, maxDelay, team, homeRange, spawnedNames)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1313,7 +1313,7 @@ namespace Server.Gumps
|
||||||
|
|
||||||
public void AddPageButton(
|
public void AddPageButton(
|
||||||
int x, int y, int buttonID, string text, AdminGumpPage page,
|
int x, int y, int buttonID, string text, AdminGumpPage page,
|
||||||
params AdminGumpPage[] subPages
|
params ReadOnlySpan<AdminGumpPage> subPages
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
var isSelection = m_PageType == page;
|
var isSelection = m_PageType == page;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ namespace Server.Items;
|
||||||
[AttributeUsage(AttributeTargets.Class)]
|
[AttributeUsage(AttributeTargets.Class)]
|
||||||
public class FlippableAddonAttribute : Attribute
|
public class FlippableAddonAttribute : Attribute
|
||||||
{
|
{
|
||||||
private static readonly string m_MethodName = "Flip";
|
private const string MethodName = "Flip";
|
||||||
|
|
||||||
private static readonly Type[] m_Params =
|
private static readonly Type[] m_Params =
|
||||||
{
|
{
|
||||||
|
|
@ -26,7 +26,7 @@ public class FlippableAddonAttribute : Attribute
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var flipMethod = addon.GetType().GetMethod(m_MethodName, m_Params);
|
var flipMethod = addon.GetType().GetMethod(MethodName, m_Params);
|
||||||
|
|
||||||
if (flipMethod == null)
|
if (flipMethod == null)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -360,10 +360,10 @@ namespace Server.Misc
|
||||||
return sentence.ToString();
|
return sentence.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SayRandomTranslate(Mobile mob, params string[] sentancesInEnglish)
|
public void SayRandomTranslate(Mobile mob, params ReadOnlySpan<string> sentencesInEnglish)
|
||||||
{
|
{
|
||||||
SaySentance(mob, Utility.RandomMinMax(2, 3));
|
SaySentance(mob, Utility.RandomMinMax(2, 3));
|
||||||
mob.Say(sentancesInEnglish.RandomElement());
|
mob.Say(sentencesInEnglish.RandomElement());
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetRandomResponseWord(List<string> keywordsFound)
|
private string GetRandomResponseWord(List<string> keywordsFound)
|
||||||
|
|
|
||||||
|
|
@ -766,15 +766,15 @@ namespace Server
|
||||||
}
|
}
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static Item Construct(params Type[] types) => Construct<Item>(types.RandomElement());
|
public static Item Construct(params ReadOnlySpan<Type> types) => Construct<Item>(types.RandomElement());
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static T Construct<T>(params Type[] types) where T : Item => Construct<T>(types.RandomElement());
|
public static T Construct<T>(params ReadOnlySpan<Type> types) where T : Item => Construct<T>(types.RandomElement());
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static Item Construct(Type[] types, int index) => Construct<Item>(types, index);
|
public static Item Construct(ReadOnlySpan<Type> types, int index) => Construct<Item>(types, index);
|
||||||
|
|
||||||
public static T Construct<T>(Type[] types, int index) where T : Item
|
public static T Construct<T>(ReadOnlySpan<Type> types, int index) where T : Item
|
||||||
{
|
{
|
||||||
if (index >= 0 && index < types.Length)
|
if (index >= 0 && index < types.Length)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -15,14 +15,14 @@ namespace Server.Misc
|
||||||
private int m_Stage;
|
private int m_Stage;
|
||||||
|
|
||||||
public Weather(
|
public Weather(
|
||||||
Map facet, Rectangle2D[] area, int temperature, int chanceOfPercipitation, int chanceOfExtremeTemperature,
|
Map facet, Rectangle2D[] area, int temperature, int chanceOfPrecipitation, int chanceOfExtremeTemperature,
|
||||||
TimeSpan interval
|
TimeSpan interval
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Facet = facet;
|
Facet = facet;
|
||||||
Area = area;
|
Area = area;
|
||||||
Temperature = temperature;
|
Temperature = temperature;
|
||||||
ChanceOfPercipitation = chanceOfPercipitation;
|
ChanceOfPrecipitation = chanceOfPrecipitation;
|
||||||
ChanceOfExtremeTemperature = chanceOfExtremeTemperature;
|
ChanceOfExtremeTemperature = chanceOfExtremeTemperature;
|
||||||
|
|
||||||
var list = GetWeatherList(facet);
|
var list = GetWeatherList(facet);
|
||||||
|
|
@ -42,7 +42,7 @@ namespace Server.Misc
|
||||||
|
|
||||||
public int Temperature { get; set; }
|
public int Temperature { get; set; }
|
||||||
|
|
||||||
public int ChanceOfPercipitation { get; set; }
|
public int ChanceOfPrecipitation { get; set; }
|
||||||
|
|
||||||
public int ChanceOfExtremeTemperature { get; set; }
|
public int ChanceOfExtremeTemperature { get; set; }
|
||||||
|
|
||||||
|
|
@ -298,7 +298,7 @@ namespace Server.Misc
|
||||||
{
|
{
|
||||||
if (m_Stage == 0)
|
if (m_Stage == 0)
|
||||||
{
|
{
|
||||||
m_Active = ChanceOfPercipitation > Utility.Random(100);
|
m_Active = ChanceOfPrecipitation > Utility.Random(100);
|
||||||
m_ExtremeTemperature = ChanceOfExtremeTemperature > Utility.Random(100);
|
m_ExtremeTemperature = ChanceOfExtremeTemperature > Utility.Random(100);
|
||||||
|
|
||||||
if (MoveSpeed > 0)
|
if (MoveSpeed > 0)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
using System;
|
||||||
using Server.Spells;
|
using Server.Spells;
|
||||||
using Server.Spells.First;
|
using Server.Spells.First;
|
||||||
using Server.Spells.Fourth;
|
using Server.Spells.Fourth;
|
||||||
|
|
@ -132,7 +133,7 @@ public class HealerAI : BaseAI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Mobile Find(params NeedDelegate[] funcs)
|
private Mobile Find(params ReadOnlySpan<NeedDelegate> funcs)
|
||||||
{
|
{
|
||||||
if (m_Mobile.Deleted)
|
if (m_Mobile.Deleted)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -147,17 +147,17 @@ namespace Server.Multis
|
||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LoadItems(string path, params string[] itemColumns)
|
private void LoadItems(string path, params ReadOnlySpan<string> itemColumns)
|
||||||
{
|
{
|
||||||
LoadSpreadsheet(m_ItemTable, path, itemColumns);
|
LoadSpreadsheet(m_ItemTable, path, itemColumns);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LoadMultis(string path, params string[] multiColumns)
|
private void LoadMultis(string path, params ReadOnlySpan<string> multiColumns)
|
||||||
{
|
{
|
||||||
LoadSpreadsheet(m_MultiTable, path, 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<string> tileColumns)
|
||||||
{
|
{
|
||||||
var ss = new Spreadsheet(path);
|
var ss = new Spreadsheet(path);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ public class BaseRegion : Region
|
||||||
private static readonly List<Rectangle3D> m_RectBuffer1 = new();
|
private static readonly List<Rectangle3D> m_RectBuffer1 = new();
|
||||||
private static readonly List<Rectangle3D> m_RectBuffer2 = new();
|
private static readonly List<Rectangle3D> 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<Rectangle2D> 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<Rectangle2D> area) : base(name, map, parent, area)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue