From b4541cd1dff6ce30d31f9e356c9c43bc42861c19 Mon Sep 17 00:00:00 2001 From: Crypto137 Date: Tue, 12 Mar 2024 20:05:05 +0300 Subject: [PATCH] Separate MHServerEmu.Core into a library --- MHServerEmu.sln | 6 ++++ .../BitFieldEnums.cs | 0 .../Collisions/Aabb.cs | 0 .../Collisions/Aabb2.cs | 0 .../Collisions/Capsule.cs | 0 .../Collisions/IBounds.cs | 0 .../Collisions/Obb.cs | 0 .../Collisions/Plane.cs | 0 .../Collisions/Segment.cs | 0 .../Collisions/Sphere.cs | 0 .../Collisions/Square.cs | 0 .../Collisions/Triangle.cs | 0 .../Config/ConfigContainer.cs | 0 .../Config/ConfigIgnoreAttribute.cs | 0 .../Config/ConfigManager.cs | 0 .../Config/Containers/AuthConfig.cs | 0 .../Config/Containers/BillingConfig.cs | 0 .../Containers/DefaultPlayerDataConfig.cs | 0 .../Config/Containers/FrontendConfig.cs | 0 .../Config/Containers/GameDataConfig.cs | 0 .../Config/Containers/GameOptionsConfig.cs | 0 .../Containers/GroupingManagerConfig.cs | 0 .../Config/Containers/LoggingConfig.cs | 0 .../Config/Containers/PlayerManagerConfig.cs | 0 .../Config/IniFile.cs | 0 .../Extensions/ArrayExtensions.cs | 0 .../Extensions/BinaryReaderExtensions.cs | 0 .../Extensions/BinaryWriterExtensions.cs | 0 .../Extensions/MiscExtensions.cs | 0 .../Extensions/NumberExtensions.cs | 0 .../Extensions/ProtobufExtensions.cs | 0 .../Helpers/AssemblyHelper.cs | 0 .../Helpers/CompressionHelper.cs | 34 +++++++++++++++++++ .../Helpers/CryptographyHelper.cs | 0 .../Helpers/FileHelper.cs | 0 .../Helpers/HashHelper.cs | 0 .../Helpers/MathHelper.cs | 0 .../Logging/LogManager.cs | 0 .../Logging/LogMessage.cs | 0 .../Logging/LogRouter.cs | 0 .../Logging/LogTarget.cs | 0 .../Logging/Logger.cs | 0 .../Logging/Targets/ConsoleTarget.cs | 0 .../Logging/Targets/FileTarget.cs | 0 src/MHServerEmu.Core/MHServerEmu.Core.csproj | 29 ++++++++++++++++ .../Network/GameMessage.cs | 0 .../Network/IGameService.cs | 0 .../Network/PacketIn.cs | 0 .../Network/PacketOut.cs | 0 .../Network/ProtocolDispatchTable.cs | 0 .../Network/ServerManager.cs | 0 .../Network/Tcp/IPacket.cs | 0 .../Network/Tcp/ITcpClient.cs | 0 .../Network/Tcp/TcpClientConnection.cs | 0 .../Network/Tcp/TcpServer.cs | 0 .../Serialization/BoolDecoder.cs | 0 .../Serialization/BoolEncoder.cs | 0 .../Serialization/TimeSpanJsonConverter.cs | 0 .../Core => MHServerEmu.Core}/System/Clock.cs | 0 .../System/IdGenerator.cs | 0 .../System/Random/GRandom.cs | 0 .../System/Random/Rand.cs | 0 .../System/Random/RandMwc.cs | 0 .../VectorMath/Matrix3.cs | 0 .../VectorMath/Orientation.cs | 0 .../VectorMath/Point2.cs | 0 .../VectorMath/Point3.cs | 0 .../VectorMath/Transform3.cs | 0 .../VectorMath/Vector2.cs | 0 .../VectorMath/Vector3.cs | 0 .../Games/Achievements/AchievementDatabase.cs | 19 ++++------- src/MHServerEmu/Games/GameData/PakFile.cs | 6 ++-- src/MHServerEmu/MHServerEmu.csproj | 10 +----- 73 files changed, 79 insertions(+), 25 deletions(-) rename src/{MHServerEmu/Core => MHServerEmu.Core}/BitFieldEnums.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Collisions/Aabb.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Collisions/Aabb2.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Collisions/Capsule.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Collisions/IBounds.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Collisions/Obb.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Collisions/Plane.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Collisions/Segment.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Collisions/Sphere.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Collisions/Square.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Collisions/Triangle.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Config/ConfigContainer.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Config/ConfigIgnoreAttribute.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Config/ConfigManager.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Config/Containers/AuthConfig.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Config/Containers/BillingConfig.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Config/Containers/DefaultPlayerDataConfig.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Config/Containers/FrontendConfig.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Config/Containers/GameDataConfig.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Config/Containers/GameOptionsConfig.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Config/Containers/GroupingManagerConfig.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Config/Containers/LoggingConfig.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Config/Containers/PlayerManagerConfig.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Config/IniFile.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Extensions/ArrayExtensions.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Extensions/BinaryReaderExtensions.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Extensions/BinaryWriterExtensions.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Extensions/MiscExtensions.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Extensions/NumberExtensions.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Extensions/ProtobufExtensions.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Helpers/AssemblyHelper.cs (100%) create mode 100644 src/MHServerEmu.Core/Helpers/CompressionHelper.cs rename src/{MHServerEmu/Core => MHServerEmu.Core}/Helpers/CryptographyHelper.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Helpers/FileHelper.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Helpers/HashHelper.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Helpers/MathHelper.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Logging/LogManager.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Logging/LogMessage.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Logging/LogRouter.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Logging/LogTarget.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Logging/Logger.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Logging/Targets/ConsoleTarget.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Logging/Targets/FileTarget.cs (100%) create mode 100644 src/MHServerEmu.Core/MHServerEmu.Core.csproj rename src/{MHServerEmu/Core => MHServerEmu.Core}/Network/GameMessage.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Network/IGameService.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Network/PacketIn.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Network/PacketOut.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Network/ProtocolDispatchTable.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Network/ServerManager.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Network/Tcp/IPacket.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Network/Tcp/ITcpClient.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Network/Tcp/TcpClientConnection.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Network/Tcp/TcpServer.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Serialization/BoolDecoder.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Serialization/BoolEncoder.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/Serialization/TimeSpanJsonConverter.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/System/Clock.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/System/IdGenerator.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/System/Random/GRandom.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/System/Random/Rand.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/System/Random/RandMwc.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/VectorMath/Matrix3.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/VectorMath/Orientation.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/VectorMath/Point2.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/VectorMath/Point3.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/VectorMath/Transform3.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/VectorMath/Vector2.cs (100%) rename src/{MHServerEmu/Core => MHServerEmu.Core}/VectorMath/Vector3.cs (100%) diff --git a/MHServerEmu.sln b/MHServerEmu.sln index a6cec2f8..1fe03ead 100644 --- a/MHServerEmu.sln +++ b/MHServerEmu.sln @@ -7,6 +7,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MHServerEmu", "src\MHServer EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gazillion", "src\Gazillion\Gazillion.csproj", "{7D085437-F307-49D6-AF7A-C3B3DF4E4189}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MHServerEmu.Core", "src\MHServerEmu.Core\MHServerEmu.Core.csproj", "{667BA21C-0E76-450A-9854-93D0C4C3D79E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -21,6 +23,10 @@ Global {7D085437-F307-49D6-AF7A-C3B3DF4E4189}.Debug|x64.Build.0 = Debug|x64 {7D085437-F307-49D6-AF7A-C3B3DF4E4189}.Release|x64.ActiveCfg = Release|x64 {7D085437-F307-49D6-AF7A-C3B3DF4E4189}.Release|x64.Build.0 = Release|x64 + {667BA21C-0E76-450A-9854-93D0C4C3D79E}.Debug|x64.ActiveCfg = Debug|x64 + {667BA21C-0E76-450A-9854-93D0C4C3D79E}.Debug|x64.Build.0 = Debug|x64 + {667BA21C-0E76-450A-9854-93D0C4C3D79E}.Release|x64.ActiveCfg = Release|x64 + {667BA21C-0E76-450A-9854-93D0C4C3D79E}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/MHServerEmu/Core/BitFieldEnums.cs b/src/MHServerEmu.Core/BitFieldEnums.cs similarity index 100% rename from src/MHServerEmu/Core/BitFieldEnums.cs rename to src/MHServerEmu.Core/BitFieldEnums.cs diff --git a/src/MHServerEmu/Core/Collisions/Aabb.cs b/src/MHServerEmu.Core/Collisions/Aabb.cs similarity index 100% rename from src/MHServerEmu/Core/Collisions/Aabb.cs rename to src/MHServerEmu.Core/Collisions/Aabb.cs diff --git a/src/MHServerEmu/Core/Collisions/Aabb2.cs b/src/MHServerEmu.Core/Collisions/Aabb2.cs similarity index 100% rename from src/MHServerEmu/Core/Collisions/Aabb2.cs rename to src/MHServerEmu.Core/Collisions/Aabb2.cs diff --git a/src/MHServerEmu/Core/Collisions/Capsule.cs b/src/MHServerEmu.Core/Collisions/Capsule.cs similarity index 100% rename from src/MHServerEmu/Core/Collisions/Capsule.cs rename to src/MHServerEmu.Core/Collisions/Capsule.cs diff --git a/src/MHServerEmu/Core/Collisions/IBounds.cs b/src/MHServerEmu.Core/Collisions/IBounds.cs similarity index 100% rename from src/MHServerEmu/Core/Collisions/IBounds.cs rename to src/MHServerEmu.Core/Collisions/IBounds.cs diff --git a/src/MHServerEmu/Core/Collisions/Obb.cs b/src/MHServerEmu.Core/Collisions/Obb.cs similarity index 100% rename from src/MHServerEmu/Core/Collisions/Obb.cs rename to src/MHServerEmu.Core/Collisions/Obb.cs diff --git a/src/MHServerEmu/Core/Collisions/Plane.cs b/src/MHServerEmu.Core/Collisions/Plane.cs similarity index 100% rename from src/MHServerEmu/Core/Collisions/Plane.cs rename to src/MHServerEmu.Core/Collisions/Plane.cs diff --git a/src/MHServerEmu/Core/Collisions/Segment.cs b/src/MHServerEmu.Core/Collisions/Segment.cs similarity index 100% rename from src/MHServerEmu/Core/Collisions/Segment.cs rename to src/MHServerEmu.Core/Collisions/Segment.cs diff --git a/src/MHServerEmu/Core/Collisions/Sphere.cs b/src/MHServerEmu.Core/Collisions/Sphere.cs similarity index 100% rename from src/MHServerEmu/Core/Collisions/Sphere.cs rename to src/MHServerEmu.Core/Collisions/Sphere.cs diff --git a/src/MHServerEmu/Core/Collisions/Square.cs b/src/MHServerEmu.Core/Collisions/Square.cs similarity index 100% rename from src/MHServerEmu/Core/Collisions/Square.cs rename to src/MHServerEmu.Core/Collisions/Square.cs diff --git a/src/MHServerEmu/Core/Collisions/Triangle.cs b/src/MHServerEmu.Core/Collisions/Triangle.cs similarity index 100% rename from src/MHServerEmu/Core/Collisions/Triangle.cs rename to src/MHServerEmu.Core/Collisions/Triangle.cs diff --git a/src/MHServerEmu/Core/Config/ConfigContainer.cs b/src/MHServerEmu.Core/Config/ConfigContainer.cs similarity index 100% rename from src/MHServerEmu/Core/Config/ConfigContainer.cs rename to src/MHServerEmu.Core/Config/ConfigContainer.cs diff --git a/src/MHServerEmu/Core/Config/ConfigIgnoreAttribute.cs b/src/MHServerEmu.Core/Config/ConfigIgnoreAttribute.cs similarity index 100% rename from src/MHServerEmu/Core/Config/ConfigIgnoreAttribute.cs rename to src/MHServerEmu.Core/Config/ConfigIgnoreAttribute.cs diff --git a/src/MHServerEmu/Core/Config/ConfigManager.cs b/src/MHServerEmu.Core/Config/ConfigManager.cs similarity index 100% rename from src/MHServerEmu/Core/Config/ConfigManager.cs rename to src/MHServerEmu.Core/Config/ConfigManager.cs diff --git a/src/MHServerEmu/Core/Config/Containers/AuthConfig.cs b/src/MHServerEmu.Core/Config/Containers/AuthConfig.cs similarity index 100% rename from src/MHServerEmu/Core/Config/Containers/AuthConfig.cs rename to src/MHServerEmu.Core/Config/Containers/AuthConfig.cs diff --git a/src/MHServerEmu/Core/Config/Containers/BillingConfig.cs b/src/MHServerEmu.Core/Config/Containers/BillingConfig.cs similarity index 100% rename from src/MHServerEmu/Core/Config/Containers/BillingConfig.cs rename to src/MHServerEmu.Core/Config/Containers/BillingConfig.cs diff --git a/src/MHServerEmu/Core/Config/Containers/DefaultPlayerDataConfig.cs b/src/MHServerEmu.Core/Config/Containers/DefaultPlayerDataConfig.cs similarity index 100% rename from src/MHServerEmu/Core/Config/Containers/DefaultPlayerDataConfig.cs rename to src/MHServerEmu.Core/Config/Containers/DefaultPlayerDataConfig.cs diff --git a/src/MHServerEmu/Core/Config/Containers/FrontendConfig.cs b/src/MHServerEmu.Core/Config/Containers/FrontendConfig.cs similarity index 100% rename from src/MHServerEmu/Core/Config/Containers/FrontendConfig.cs rename to src/MHServerEmu.Core/Config/Containers/FrontendConfig.cs diff --git a/src/MHServerEmu/Core/Config/Containers/GameDataConfig.cs b/src/MHServerEmu.Core/Config/Containers/GameDataConfig.cs similarity index 100% rename from src/MHServerEmu/Core/Config/Containers/GameDataConfig.cs rename to src/MHServerEmu.Core/Config/Containers/GameDataConfig.cs diff --git a/src/MHServerEmu/Core/Config/Containers/GameOptionsConfig.cs b/src/MHServerEmu.Core/Config/Containers/GameOptionsConfig.cs similarity index 100% rename from src/MHServerEmu/Core/Config/Containers/GameOptionsConfig.cs rename to src/MHServerEmu.Core/Config/Containers/GameOptionsConfig.cs diff --git a/src/MHServerEmu/Core/Config/Containers/GroupingManagerConfig.cs b/src/MHServerEmu.Core/Config/Containers/GroupingManagerConfig.cs similarity index 100% rename from src/MHServerEmu/Core/Config/Containers/GroupingManagerConfig.cs rename to src/MHServerEmu.Core/Config/Containers/GroupingManagerConfig.cs diff --git a/src/MHServerEmu/Core/Config/Containers/LoggingConfig.cs b/src/MHServerEmu.Core/Config/Containers/LoggingConfig.cs similarity index 100% rename from src/MHServerEmu/Core/Config/Containers/LoggingConfig.cs rename to src/MHServerEmu.Core/Config/Containers/LoggingConfig.cs diff --git a/src/MHServerEmu/Core/Config/Containers/PlayerManagerConfig.cs b/src/MHServerEmu.Core/Config/Containers/PlayerManagerConfig.cs similarity index 100% rename from src/MHServerEmu/Core/Config/Containers/PlayerManagerConfig.cs rename to src/MHServerEmu.Core/Config/Containers/PlayerManagerConfig.cs diff --git a/src/MHServerEmu/Core/Config/IniFile.cs b/src/MHServerEmu.Core/Config/IniFile.cs similarity index 100% rename from src/MHServerEmu/Core/Config/IniFile.cs rename to src/MHServerEmu.Core/Config/IniFile.cs diff --git a/src/MHServerEmu/Core/Extensions/ArrayExtensions.cs b/src/MHServerEmu.Core/Extensions/ArrayExtensions.cs similarity index 100% rename from src/MHServerEmu/Core/Extensions/ArrayExtensions.cs rename to src/MHServerEmu.Core/Extensions/ArrayExtensions.cs diff --git a/src/MHServerEmu/Core/Extensions/BinaryReaderExtensions.cs b/src/MHServerEmu.Core/Extensions/BinaryReaderExtensions.cs similarity index 100% rename from src/MHServerEmu/Core/Extensions/BinaryReaderExtensions.cs rename to src/MHServerEmu.Core/Extensions/BinaryReaderExtensions.cs diff --git a/src/MHServerEmu/Core/Extensions/BinaryWriterExtensions.cs b/src/MHServerEmu.Core/Extensions/BinaryWriterExtensions.cs similarity index 100% rename from src/MHServerEmu/Core/Extensions/BinaryWriterExtensions.cs rename to src/MHServerEmu.Core/Extensions/BinaryWriterExtensions.cs diff --git a/src/MHServerEmu/Core/Extensions/MiscExtensions.cs b/src/MHServerEmu.Core/Extensions/MiscExtensions.cs similarity index 100% rename from src/MHServerEmu/Core/Extensions/MiscExtensions.cs rename to src/MHServerEmu.Core/Extensions/MiscExtensions.cs diff --git a/src/MHServerEmu/Core/Extensions/NumberExtensions.cs b/src/MHServerEmu.Core/Extensions/NumberExtensions.cs similarity index 100% rename from src/MHServerEmu/Core/Extensions/NumberExtensions.cs rename to src/MHServerEmu.Core/Extensions/NumberExtensions.cs diff --git a/src/MHServerEmu/Core/Extensions/ProtobufExtensions.cs b/src/MHServerEmu.Core/Extensions/ProtobufExtensions.cs similarity index 100% rename from src/MHServerEmu/Core/Extensions/ProtobufExtensions.cs rename to src/MHServerEmu.Core/Extensions/ProtobufExtensions.cs diff --git a/src/MHServerEmu/Core/Helpers/AssemblyHelper.cs b/src/MHServerEmu.Core/Helpers/AssemblyHelper.cs similarity index 100% rename from src/MHServerEmu/Core/Helpers/AssemblyHelper.cs rename to src/MHServerEmu.Core/Helpers/AssemblyHelper.cs diff --git a/src/MHServerEmu.Core/Helpers/CompressionHelper.cs b/src/MHServerEmu.Core/Helpers/CompressionHelper.cs new file mode 100644 index 00000000..520c5b69 --- /dev/null +++ b/src/MHServerEmu.Core/Helpers/CompressionHelper.cs @@ -0,0 +1,34 @@ +using Free.Ports.zLib; +using K4os.Compression.LZ4; + +namespace MHServerEmu.Core.Helpers +{ + public static class CompressionHelper + { + /// + /// Decompresses the provided LZ4 buffer. + /// + public static void LZ4Decode(byte[] source, byte[] target) + { + LZ4Codec.Decode(source, target); + } + + /// + /// Compresses the provided buffer using zlib. + /// + public static byte[] ZLibDeflate(byte[] buffer) + { + // This is used for compressing the achievement database dump before sending it to clients. + // We need to compress specifically with a port of zlib rather than various alternatives like SharpZipLib + // to produce the same result as the original. zlib.compress() in Python also produces the result we need. + + using (MemoryStream ms = new()) + using (ZStreamWriter writer = new(ms)) + { + writer.Write(buffer); + writer.Close(); + return ms.ToArray(); + } + } + } +} diff --git a/src/MHServerEmu/Core/Helpers/CryptographyHelper.cs b/src/MHServerEmu.Core/Helpers/CryptographyHelper.cs similarity index 100% rename from src/MHServerEmu/Core/Helpers/CryptographyHelper.cs rename to src/MHServerEmu.Core/Helpers/CryptographyHelper.cs diff --git a/src/MHServerEmu/Core/Helpers/FileHelper.cs b/src/MHServerEmu.Core/Helpers/FileHelper.cs similarity index 100% rename from src/MHServerEmu/Core/Helpers/FileHelper.cs rename to src/MHServerEmu.Core/Helpers/FileHelper.cs diff --git a/src/MHServerEmu/Core/Helpers/HashHelper.cs b/src/MHServerEmu.Core/Helpers/HashHelper.cs similarity index 100% rename from src/MHServerEmu/Core/Helpers/HashHelper.cs rename to src/MHServerEmu.Core/Helpers/HashHelper.cs diff --git a/src/MHServerEmu/Core/Helpers/MathHelper.cs b/src/MHServerEmu.Core/Helpers/MathHelper.cs similarity index 100% rename from src/MHServerEmu/Core/Helpers/MathHelper.cs rename to src/MHServerEmu.Core/Helpers/MathHelper.cs diff --git a/src/MHServerEmu/Core/Logging/LogManager.cs b/src/MHServerEmu.Core/Logging/LogManager.cs similarity index 100% rename from src/MHServerEmu/Core/Logging/LogManager.cs rename to src/MHServerEmu.Core/Logging/LogManager.cs diff --git a/src/MHServerEmu/Core/Logging/LogMessage.cs b/src/MHServerEmu.Core/Logging/LogMessage.cs similarity index 100% rename from src/MHServerEmu/Core/Logging/LogMessage.cs rename to src/MHServerEmu.Core/Logging/LogMessage.cs diff --git a/src/MHServerEmu/Core/Logging/LogRouter.cs b/src/MHServerEmu.Core/Logging/LogRouter.cs similarity index 100% rename from src/MHServerEmu/Core/Logging/LogRouter.cs rename to src/MHServerEmu.Core/Logging/LogRouter.cs diff --git a/src/MHServerEmu/Core/Logging/LogTarget.cs b/src/MHServerEmu.Core/Logging/LogTarget.cs similarity index 100% rename from src/MHServerEmu/Core/Logging/LogTarget.cs rename to src/MHServerEmu.Core/Logging/LogTarget.cs diff --git a/src/MHServerEmu/Core/Logging/Logger.cs b/src/MHServerEmu.Core/Logging/Logger.cs similarity index 100% rename from src/MHServerEmu/Core/Logging/Logger.cs rename to src/MHServerEmu.Core/Logging/Logger.cs diff --git a/src/MHServerEmu/Core/Logging/Targets/ConsoleTarget.cs b/src/MHServerEmu.Core/Logging/Targets/ConsoleTarget.cs similarity index 100% rename from src/MHServerEmu/Core/Logging/Targets/ConsoleTarget.cs rename to src/MHServerEmu.Core/Logging/Targets/ConsoleTarget.cs diff --git a/src/MHServerEmu/Core/Logging/Targets/FileTarget.cs b/src/MHServerEmu.Core/Logging/Targets/FileTarget.cs similarity index 100% rename from src/MHServerEmu/Core/Logging/Targets/FileTarget.cs rename to src/MHServerEmu.Core/Logging/Targets/FileTarget.cs diff --git a/src/MHServerEmu.Core/MHServerEmu.Core.csproj b/src/MHServerEmu.Core/MHServerEmu.Core.csproj new file mode 100644 index 00000000..d1e9af8b --- /dev/null +++ b/src/MHServerEmu.Core/MHServerEmu.Core.csproj @@ -0,0 +1,29 @@ + + + + net6.0 + enable + disable + x64 + + + + + + + + + ..\..\dep\Free.Ports.zLib\Free.Ports.zLib.dll + + + ..\..\dep\protobuf-csharp\Google.ProtocolBuffers.dll + + + ..\..\dep\ini-parser\INIFileParser.dll + + + ..\..\dep\K4os.Compression.LZ4\K4os.Compression.LZ4.dll + + + + diff --git a/src/MHServerEmu/Core/Network/GameMessage.cs b/src/MHServerEmu.Core/Network/GameMessage.cs similarity index 100% rename from src/MHServerEmu/Core/Network/GameMessage.cs rename to src/MHServerEmu.Core/Network/GameMessage.cs diff --git a/src/MHServerEmu/Core/Network/IGameService.cs b/src/MHServerEmu.Core/Network/IGameService.cs similarity index 100% rename from src/MHServerEmu/Core/Network/IGameService.cs rename to src/MHServerEmu.Core/Network/IGameService.cs diff --git a/src/MHServerEmu/Core/Network/PacketIn.cs b/src/MHServerEmu.Core/Network/PacketIn.cs similarity index 100% rename from src/MHServerEmu/Core/Network/PacketIn.cs rename to src/MHServerEmu.Core/Network/PacketIn.cs diff --git a/src/MHServerEmu/Core/Network/PacketOut.cs b/src/MHServerEmu.Core/Network/PacketOut.cs similarity index 100% rename from src/MHServerEmu/Core/Network/PacketOut.cs rename to src/MHServerEmu.Core/Network/PacketOut.cs diff --git a/src/MHServerEmu/Core/Network/ProtocolDispatchTable.cs b/src/MHServerEmu.Core/Network/ProtocolDispatchTable.cs similarity index 100% rename from src/MHServerEmu/Core/Network/ProtocolDispatchTable.cs rename to src/MHServerEmu.Core/Network/ProtocolDispatchTable.cs diff --git a/src/MHServerEmu/Core/Network/ServerManager.cs b/src/MHServerEmu.Core/Network/ServerManager.cs similarity index 100% rename from src/MHServerEmu/Core/Network/ServerManager.cs rename to src/MHServerEmu.Core/Network/ServerManager.cs diff --git a/src/MHServerEmu/Core/Network/Tcp/IPacket.cs b/src/MHServerEmu.Core/Network/Tcp/IPacket.cs similarity index 100% rename from src/MHServerEmu/Core/Network/Tcp/IPacket.cs rename to src/MHServerEmu.Core/Network/Tcp/IPacket.cs diff --git a/src/MHServerEmu/Core/Network/Tcp/ITcpClient.cs b/src/MHServerEmu.Core/Network/Tcp/ITcpClient.cs similarity index 100% rename from src/MHServerEmu/Core/Network/Tcp/ITcpClient.cs rename to src/MHServerEmu.Core/Network/Tcp/ITcpClient.cs diff --git a/src/MHServerEmu/Core/Network/Tcp/TcpClientConnection.cs b/src/MHServerEmu.Core/Network/Tcp/TcpClientConnection.cs similarity index 100% rename from src/MHServerEmu/Core/Network/Tcp/TcpClientConnection.cs rename to src/MHServerEmu.Core/Network/Tcp/TcpClientConnection.cs diff --git a/src/MHServerEmu/Core/Network/Tcp/TcpServer.cs b/src/MHServerEmu.Core/Network/Tcp/TcpServer.cs similarity index 100% rename from src/MHServerEmu/Core/Network/Tcp/TcpServer.cs rename to src/MHServerEmu.Core/Network/Tcp/TcpServer.cs diff --git a/src/MHServerEmu/Core/Serialization/BoolDecoder.cs b/src/MHServerEmu.Core/Serialization/BoolDecoder.cs similarity index 100% rename from src/MHServerEmu/Core/Serialization/BoolDecoder.cs rename to src/MHServerEmu.Core/Serialization/BoolDecoder.cs diff --git a/src/MHServerEmu/Core/Serialization/BoolEncoder.cs b/src/MHServerEmu.Core/Serialization/BoolEncoder.cs similarity index 100% rename from src/MHServerEmu/Core/Serialization/BoolEncoder.cs rename to src/MHServerEmu.Core/Serialization/BoolEncoder.cs diff --git a/src/MHServerEmu/Core/Serialization/TimeSpanJsonConverter.cs b/src/MHServerEmu.Core/Serialization/TimeSpanJsonConverter.cs similarity index 100% rename from src/MHServerEmu/Core/Serialization/TimeSpanJsonConverter.cs rename to src/MHServerEmu.Core/Serialization/TimeSpanJsonConverter.cs diff --git a/src/MHServerEmu/Core/System/Clock.cs b/src/MHServerEmu.Core/System/Clock.cs similarity index 100% rename from src/MHServerEmu/Core/System/Clock.cs rename to src/MHServerEmu.Core/System/Clock.cs diff --git a/src/MHServerEmu/Core/System/IdGenerator.cs b/src/MHServerEmu.Core/System/IdGenerator.cs similarity index 100% rename from src/MHServerEmu/Core/System/IdGenerator.cs rename to src/MHServerEmu.Core/System/IdGenerator.cs diff --git a/src/MHServerEmu/Core/System/Random/GRandom.cs b/src/MHServerEmu.Core/System/Random/GRandom.cs similarity index 100% rename from src/MHServerEmu/Core/System/Random/GRandom.cs rename to src/MHServerEmu.Core/System/Random/GRandom.cs diff --git a/src/MHServerEmu/Core/System/Random/Rand.cs b/src/MHServerEmu.Core/System/Random/Rand.cs similarity index 100% rename from src/MHServerEmu/Core/System/Random/Rand.cs rename to src/MHServerEmu.Core/System/Random/Rand.cs diff --git a/src/MHServerEmu/Core/System/Random/RandMwc.cs b/src/MHServerEmu.Core/System/Random/RandMwc.cs similarity index 100% rename from src/MHServerEmu/Core/System/Random/RandMwc.cs rename to src/MHServerEmu.Core/System/Random/RandMwc.cs diff --git a/src/MHServerEmu/Core/VectorMath/Matrix3.cs b/src/MHServerEmu.Core/VectorMath/Matrix3.cs similarity index 100% rename from src/MHServerEmu/Core/VectorMath/Matrix3.cs rename to src/MHServerEmu.Core/VectorMath/Matrix3.cs diff --git a/src/MHServerEmu/Core/VectorMath/Orientation.cs b/src/MHServerEmu.Core/VectorMath/Orientation.cs similarity index 100% rename from src/MHServerEmu/Core/VectorMath/Orientation.cs rename to src/MHServerEmu.Core/VectorMath/Orientation.cs diff --git a/src/MHServerEmu/Core/VectorMath/Point2.cs b/src/MHServerEmu.Core/VectorMath/Point2.cs similarity index 100% rename from src/MHServerEmu/Core/VectorMath/Point2.cs rename to src/MHServerEmu.Core/VectorMath/Point2.cs diff --git a/src/MHServerEmu/Core/VectorMath/Point3.cs b/src/MHServerEmu.Core/VectorMath/Point3.cs similarity index 100% rename from src/MHServerEmu/Core/VectorMath/Point3.cs rename to src/MHServerEmu.Core/VectorMath/Point3.cs diff --git a/src/MHServerEmu/Core/VectorMath/Transform3.cs b/src/MHServerEmu.Core/VectorMath/Transform3.cs similarity index 100% rename from src/MHServerEmu/Core/VectorMath/Transform3.cs rename to src/MHServerEmu.Core/VectorMath/Transform3.cs diff --git a/src/MHServerEmu/Core/VectorMath/Vector2.cs b/src/MHServerEmu.Core/VectorMath/Vector2.cs similarity index 100% rename from src/MHServerEmu/Core/VectorMath/Vector2.cs rename to src/MHServerEmu.Core/VectorMath/Vector2.cs diff --git a/src/MHServerEmu/Core/VectorMath/Vector3.cs b/src/MHServerEmu.Core/VectorMath/Vector3.cs similarity index 100% rename from src/MHServerEmu/Core/VectorMath/Vector3.cs rename to src/MHServerEmu.Core/VectorMath/Vector3.cs diff --git a/src/MHServerEmu/Games/Achievements/AchievementDatabase.cs b/src/MHServerEmu/Games/Achievements/AchievementDatabase.cs index b944fcc7..4825776a 100644 --- a/src/MHServerEmu/Games/Achievements/AchievementDatabase.cs +++ b/src/MHServerEmu/Games/Achievements/AchievementDatabase.cs @@ -1,6 +1,5 @@ using System.Diagnostics; using System.Text.Json; -using Free.Ports.zLib; using Google.ProtocolBuffers; using Gazillion; using MHServerEmu.Core.Helpers; @@ -186,19 +185,13 @@ namespace MHServerEmu.Games.Achievements .SetAchievementNewThresholdUS((ulong)AchievementNewThresholdUS.TotalSeconds) .Build().ToByteArray(); - // We need to compress specifically with a port of zlib rather than various alternatives like SharpZipLib - // to produce the same result. zlib.compress() in Python also produces the result we need. + // NOTE: If you don't use the right library to compress this it's going to cause client-side errors. + // See CompressionHelper.ZLibDeflate() for more details. + byte[] compressedBuffer = CompressionHelper.ZLibDeflate(dumpBuffer); - using (MemoryStream ms = new()) - using (ZStreamWriter writer = new(ms)) - { - writer.Write(dumpBuffer); - writer.Close(); - - _cachedDump = NetMessageAchievementDatabaseDump.CreateBuilder() - .SetCompressedAchievementDatabaseDump(ByteString.CopyFrom(ms.ToArray())) - .Build(); - } + _cachedDump = NetMessageAchievementDatabaseDump.CreateBuilder() + .SetCompressedAchievementDatabaseDump(ByteString.CopyFrom(compressedBuffer)) + .Build(); } } } diff --git a/src/MHServerEmu/Games/GameData/PakFile.cs b/src/MHServerEmu/Games/GameData/PakFile.cs index bcba73ad..76766534 100644 --- a/src/MHServerEmu/Games/GameData/PakFile.cs +++ b/src/MHServerEmu/Games/GameData/PakFile.cs @@ -1,5 +1,5 @@ -using K4os.Compression.LZ4; -using MHServerEmu.Core.Extensions; +using MHServerEmu.Core.Extensions; +using MHServerEmu.Core.Helpers; using MHServerEmu.Core.Logging; namespace MHServerEmu.Games.GameData @@ -76,7 +76,7 @@ namespace MHServerEmu.Games.GameData } byte[] uncompressedData = new byte[entry.UncompressedSize]; - LZ4Codec.Decode(entry.CompressedData, uncompressedData); + CompressionHelper.LZ4Decode(entry.CompressedData, uncompressedData); return new(uncompressedData); } diff --git a/src/MHServerEmu/MHServerEmu.csproj b/src/MHServerEmu/MHServerEmu.csproj index f9f99052..abf5cde3 100644 --- a/src/MHServerEmu/MHServerEmu.csproj +++ b/src/MHServerEmu/MHServerEmu.csproj @@ -22,24 +22,16 @@ + ..\..\dep\Dapper\Dapper.dll - - ..\..\dep\Free.Ports.zLib\Free.Ports.zLib.dll - ..\..\dep\protobuf-csharp\Google.ProtocolBuffers.dll - - ..\..\dep\ini-parser\INIFileParser.dll - - - ..\..\dep\K4os.Compression.LZ4\K4os.Compression.LZ4.dll - ..\..\dep\System.Data.SQLite\System.Data.SQLite.dll