From e9ea621b93fbb58d9edfca8375918791637bbd52 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 30 Dec 2020 20:59:04 +0800 Subject: +init --- .../Extensions/MessageReaderExtensions.cs | 15 +++++ .../Extensions/NodeLocatorExtensions.cs | 13 +++++ .../Impostor.Server/Extensions/TypeExtensions.cs | 67 ++++++++++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 Impostor-dev/src/Impostor.Server/Extensions/MessageReaderExtensions.cs create mode 100644 Impostor-dev/src/Impostor.Server/Extensions/NodeLocatorExtensions.cs create mode 100644 Impostor-dev/src/Impostor.Server/Extensions/TypeExtensions.cs (limited to 'Impostor-dev/src/Impostor.Server/Extensions') 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(this IMessageReader reader, Game game) + where T : InnerNetObject + { + return game.FindObjectByNetId(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 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 + { + /// + /// Get the friendly name for the type. + /// + /// The type. + /// The friendly name. + [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; + } + + /// + /// Get the friendly name for the method. + /// + /// The method. + /// True if the parameters should be included in the name. + /// Friendly name of the method + 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 -- cgit v1.1-26-g67d0