diff options
Diffstat (limited to 'Impostor-dev/src/Impostor.Server/Extensions')
3 files changed, 95 insertions, 0 deletions
diff --git a/Impostor-dev/src/Impostor.Server/Extensions/MessageReaderExtensions.cs b/Impostor-dev/src/Impostor.Server/Extensions/MessageReaderExtensions.cs new file mode 100644 index 0000000..5f25e89 --- /dev/null +++ b/Impostor-dev/src/Impostor.Server/Extensions/MessageReaderExtensions.cs @@ -0,0 +1,15 @@ +using Impostor.Api.Net.Messages; +using Impostor.Server.Net.Inner; +using Impostor.Server.Net.State; + +namespace Impostor.Server +{ + internal static class MessageReaderExtensions + { + public static T ReadNetObject<T>(this IMessageReader reader, Game game) + where T : InnerNetObject + { + return game.FindObjectByNetId<T>(reader.ReadPackedUInt32()); + } + } +}
\ No newline at end of file diff --git a/Impostor-dev/src/Impostor.Server/Extensions/NodeLocatorExtensions.cs b/Impostor-dev/src/Impostor.Server/Extensions/NodeLocatorExtensions.cs new file mode 100644 index 0000000..370bca6 --- /dev/null +++ b/Impostor-dev/src/Impostor.Server/Extensions/NodeLocatorExtensions.cs @@ -0,0 +1,13 @@ +using System.Threading.Tasks; +using Impostor.Server.Net.Redirector; + +namespace Impostor.Server +{ + public static class NodeLocatorExtensions + { + public static async ValueTask<bool> ExistsAsync(this INodeLocator nodeLocator, string gameCode) + { + return await nodeLocator.FindAsync(gameCode) != null; + } + } +}
\ No newline at end of file diff --git a/Impostor-dev/src/Impostor.Server/Extensions/TypeExtensions.cs b/Impostor-dev/src/Impostor.Server/Extensions/TypeExtensions.cs new file mode 100644 index 0000000..55d42fb --- /dev/null +++ b/Impostor-dev/src/Impostor.Server/Extensions/TypeExtensions.cs @@ -0,0 +1,67 @@ +using System; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Reflection; + +namespace Impostor.Server +{ + internal static class TypeExtensions + { + /// <summary> + /// Get the friendly name for the type. + /// </summary> + /// <param name="type">The type.</param> + /// <returns>The friendly name.</returns> + [SuppressMessage("ReSharper", "SA1503", Justification = "Readability")] + public static string GetFriendlyName(this Type type) + { + if (type == null) + return "null"; + if (type == typeof(int)) + return "int"; + if (type == typeof(short)) + return "short"; + if (type == typeof(byte)) + return "byte"; + if (type == typeof(bool)) + return "bool"; + if (type == typeof(long)) + return "long"; + if (type == typeof(float)) + return "float"; + if (type == typeof(double)) + return "double"; + if (type == typeof(decimal)) + return "decimal"; + if (type == typeof(string)) + return "string"; + if (type.IsGenericType) + return type.Name.Split('`')[0] + "<" + string.Join(", ", type.GetGenericArguments().Select(GetFriendlyName).ToArray()) + ">"; + return type.Name; + } + + /// <summary> + /// Get the friendly name for the method. + /// </summary> + /// <param name="method">The method.</param> + /// <param name="showParameters">True if the parameters should be included in the name.</param> + /// <returns>Friendly name of the method</returns> + public static string GetFriendlyName(this MethodBase method, bool showParameters = true) + { + var str = method.Name; + + if (method.DeclaringType != null) + { + str = method.DeclaringType.GetFriendlyName() + '.' + str; + } + + if (showParameters) + { + var parameters = string.Join(", ", method.GetParameters().Select(p => p.ParameterType.GetFriendlyName())); + str += $"({parameters})"; + } + + return str; + } + } +}
\ No newline at end of file |