From c435e312c281006e16a3b48fa7fe0228e1b54d89 Mon Sep 17 00:00:00 2001 From: Keith Date: Wed, 15 Nov 2023 13:23:51 +0800 Subject: [PATCH] Update to .NET 8.0, and performance fixes (#81) * Update to .NET 8.0 * Change Immutable collection usages to Frozen collections where possible * Change frozen collections to immutable where not long standing * Remove unused using imports * Add property to restore packages with packages.lock.json * Add freezing mechanism to template managers and loaders to call Freeze() * Change ToImmutableHashSet calls to ToImmutableArray when used for iteration * Add template manager freezing to NPC string and Mob string * Update build workflow to allow preview dotnet builds * Optimise encryption, avoid creating multiple transformer per transform * Fix redundant tmp variable * Update packages.lock.json * Update collections to use immutable * Update workflows to use .NET 8 * Oops missed out on some configs --- .github/workflows/build.yaml | 5 +- .github/workflows/publish.yaml | 6 +- .gitignore | 2 + src/Source.targets | 17 +- .../Bootstraps/LoadTemplateBootstrap.cs | 4 +- .../Edelstein.Application.Server.csproj | 2 +- .../packages.lock.json | 861 ++++++++++++++++++ .../packages.lock.json | 36 + .../Edelstein.Common.Crypto/AESCipher.cs | 17 +- .../packages.lock.json | 6 + .../Edelstein.Common.Data.NX/NXDataManager.cs | 39 + .../Edelstein.Common.Database.csproj | 2 +- .../Repositories/CharacterRepository.cs | 2 +- .../packages.lock.json | 340 +++++++ .../Combat/SkillContext.cs | 2 +- .../Resistance/Mechanic1SkillHandler.cs | 2 - .../Resistance/Mechanic3SkillHandler.cs | 1 - .../Continents/ContiMove.cs | 2 +- .../Continents/ContiMoveManager.cs | 2 +- .../Templates/ContiMoveTemplateLoader.cs | 1 + .../Speakers/Facades/SpeakerUserInventory.cs | 5 +- .../Speakers/Facades/SpeakerUserQuests.cs | 7 +- .../Edelstein.Common.Gameplay.Game/Field.cs | 4 +- .../FieldManager.cs | 2 +- .../FieldSplit.cs | 16 +- ...eldOnPacketUserCharacterInfoRequestPlug.cs | 8 +- .../Plugs/NotifyPartyChangedBossPlug.cs | 4 +- .../Plugs/NotifyPartyDisbandedPlug.cs | 4 +- .../Plugs/NotifyPartyMemberJoinedPlug.cs | 2 +- ...tifyPartyMemberUpdateChannelOrFieldPlug.cs | 4 +- .../NotifyPartyMemberUpdateLevelOrJobPlug.cs | 4 +- .../Plugs/NotifyPartyMemberWithdrawnPlug.cs | 4 +- .../Objects/AbstractFieldObject.cs | 2 +- .../Objects/AffectedArea/FieldAffectedArea.cs | 4 +- .../Objects/FieldObjectPool.cs | 2 +- .../Objects/Mob/FieldMob.cs | 8 +- .../Modify/ModifyMobTemporaryStatsContext.cs | 4 +- .../Mob/Templates/MobStringTemplateLoader.cs | 1 + .../Objects/Mob/Templates/MobTemplate.cs | 7 +- .../Mob/Templates/MobTemplateLoader.cs | 1 + .../Objects/NPC/Templates/NPCShopTemplate.cs | 2 +- .../NPC/Templates/NPCShopTemplateLoader.cs | 1 + .../NPC/Templates/NPCStringTemplateLoader.cs | 1 + .../Objects/NPC/Templates/NPCTemplate.cs | 6 +- .../NPC/Templates/NPCTemplateLoader.cs | 1 + .../Objects/User/FieldUser.cs | 2 +- .../Objects/User/FieldUserStats.cs | 2 +- .../Quests/QuestManager.cs | 18 +- .../ModifiedQuestTimeTemplateLoader.cs | 1 + .../Quests/Templates/QuestTemplateAct.cs | 8 +- .../Quests/Templates/QuestTemplateActSP.cs | 4 +- .../Quests/Templates/QuestTemplateActSkill.cs | 4 +- .../Quests/Templates/QuestTemplateCheck.cs | 7 +- .../Quests/Templates/QuestTemplateLoader.cs | 1 + .../Spatial/FieldSpace.cs | 4 +- .../Templates/FieldStringTemplateLoader.cs | 1 + .../Templates/FieldTemplate.cs | 10 +- .../Templates/FieldTemplateLoader.cs | 1 + .../packages.lock.json | 175 ++++ .../Plugs/UserOnPacketSelectWorldPlug.cs | 4 +- .../Plugs/UserOnPacketWorldRequestPlug.cs | 4 +- .../Templates/WorldTemplateLoader.cs | 1 + .../packages.lock.json | 109 +++ .../Templates/CashPackageTemplate.cs | 4 +- .../Templates/CashPackageTemplateLoader.cs | 1 + .../Templates/CommodityTemplateLoader.cs | 1 + .../Templates/ModifiedCommodityTemplate.cs | 4 +- .../ModifiedCommodityTemplateLoader.cs | 1 + .../Templates/NotSaleTemplateLoader.cs | 1 + .../packages.lock.json | 104 +++ .../packages.lock.json | 104 +++ .../Skills/Modify/ModifySkillContext.cs | 7 +- .../Templates/SkillStringTemplateLoader.cs | 1 + .../Skills/Templates/SkillTemplate.cs | 14 +- .../Skills/Templates/SkillTemplateLoader.cs | 1 + .../Modify/ModifyTemporaryStatContext.cs | 4 +- .../Models/Inventories/InventoryManager.cs | 12 +- .../Templates/ItemStringTemplateLoader.cs | 1 + .../Items/Templates/ItemTemplateLoader.cs | 9 +- .../Templates/Options/ItemOptionTemplate.cs | 6 +- .../Options/ItemOptionTemplateLoader.cs | 1 + .../Items/Templates/Sets/ItemSetTemplate.cs | 8 +- .../Templates/Sets/ItemSetTemplateLoader.cs | 1 + .../Modify/AbstractModifyInventory.cs | 4 +- .../Modify/ModifyInventoryContext.cs | 22 +- .../Modify/ModifyInventoryGroupContext.cs | 11 +- .../Social/PartyExtensions.cs | 5 +- .../packages.lock.json | 81 ++ .../Handlers/NettyTransportAcceptorHandler.cs | 3 +- .../NettyTransportConnectorHandler.cs | 3 +- .../packages.lock.json | 145 +++ .../Edelstein.Common.Plugin.csproj | 2 +- .../packages.lock.json | 162 ++++ .../packages.lock.json | 16 + .../Edelstein.Common.Services.Auth.csproj | 2 +- .../packages.lock.json | 253 +++++ .../Edelstein.Common.Services.Server.csproj | 2 +- .../ServerService.cs | 4 +- .../packages.lock.json | 340 +++++++ .../Edelstein.Common.Services.Social.csproj | 2 +- .../packages.lock.json | 321 +++++++ .../Edelstein.Common.Utilities.csproj | 1 - .../Repositories/Repository.cs | 2 +- .../Templates/TemplateManager.cs | 18 +- .../Tickers/TickerManager.cs | 9 +- .../packages.lock.json | 28 + .../Commands/AbstractTemplateCommand.cs | 11 +- .../Commands/Admin/EquipCommand.cs | 10 +- .../Commands/Admin/FieldCommand.cs | 2 +- .../Commands/Admin/ItemCommand.cs | 2 +- .../Commands/Admin/MobCommand.cs | 2 +- .../Commands/Admin/NPCCommand.cs | 2 +- .../Commands/Admin/QuestCommand.cs | 2 +- .../Commands/Admin/SkillCommand.cs | 2 +- .../Edelstein.Plugin.Rue/packages.lock.json | 151 +++ .../packages.lock.json | 47 + .../packages.lock.json | 47 + .../packages.lock.json | 47 + .../packages.lock.json | 47 + .../packages.lock.json | 28 + .../packages.lock.json | 10 + .../packages.lock.json | 82 ++ .../packages.lock.json | 81 ++ .../packages.lock.json | 82 ++ .../packages.lock.json | 82 ++ .../Edelstein.Protocol.Plugin.csproj | 2 +- .../packages.lock.json | 30 + .../packages.lock.json | 6 + .../packages.lock.json | 6 + .../packages.lock.json | 36 + .../packages.lock.json | 10 + .../Methods/IRepositoryMethodFreeze.cs | 6 + .../Templates/ITemplateManager.cs | 3 +- .../packages.lock.json | 6 + 134 files changed, 4169 insertions(+), 203 deletions(-) create mode 100644 src/app/Edelstein.Application.Server/packages.lock.json create mode 100644 src/common/Edelstein.Common.Constants/packages.lock.json create mode 100644 src/common/Edelstein.Common.Crypto/packages.lock.json create mode 100644 src/common/Edelstein.Common.Data.NX/NXDataManager.cs create mode 100644 src/common/Edelstein.Common.Database/packages.lock.json create mode 100644 src/common/Edelstein.Common.Gameplay.Game/packages.lock.json create mode 100644 src/common/Edelstein.Common.Gameplay.Login/packages.lock.json create mode 100644 src/common/Edelstein.Common.Gameplay.Shop/packages.lock.json create mode 100644 src/common/Edelstein.Common.Gameplay.Trade/packages.lock.json create mode 100644 src/common/Edelstein.Common.Gameplay/packages.lock.json create mode 100644 src/common/Edelstein.Common.Network.DotNetty/packages.lock.json create mode 100644 src/common/Edelstein.Common.Plugin/packages.lock.json create mode 100644 src/common/Edelstein.Common.Scripting.Lua/packages.lock.json create mode 100644 src/common/Edelstein.Common.Services.Auth/packages.lock.json create mode 100644 src/common/Edelstein.Common.Services.Server/packages.lock.json create mode 100644 src/common/Edelstein.Common.Services.Social/packages.lock.json create mode 100644 src/common/Edelstein.Common.Utilities/packages.lock.json create mode 100644 src/plugin/Edelstein.Plugin.Rue/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Gameplay.Game/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Gameplay.Login/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Gameplay.Shop/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Gameplay.Trade/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Gameplay/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Network/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Plugin.Game/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Plugin.Login/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Plugin.Shop/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Plugin.Trade/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Plugin/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Scripting/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Services.Auth/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Services.Server/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Services.Social/packages.lock.json create mode 100644 src/protocol/Edelstein.Protocol.Utilities/Repositories/Methods/IRepositoryMethodFreeze.cs create mode 100644 src/protocol/Edelstein.Protocol.Utilities/packages.lock.json diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index e9bc96263..6f75e0878 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -14,9 +14,10 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v3 with: - dotnet-version: '7.0.x' + dotnet-version: '8.0.x' + dotnet-quality: 'preview' - - uses: actions/cache@v1 + - uses: actions/cache@v3 with: path: ~/.nuget/packages key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 9fde2ea00..c92078d2b 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -31,7 +31,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v3 with: - dotnet-version: '7.0.x' + dotnet-version: '8.0.x' - name: Install Minver run: dotnet tool install --global minver-cli --version 4.3.0 @@ -51,7 +51,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v3 with: - dotnet-version: '7.0.x' + dotnet-version: '8.0.x' - uses: actions/cache@v1 with: @@ -98,7 +98,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v3 with: - dotnet-version: '7.0.x' + dotnet-version: '8.0.x' - uses: actions/cache@v1 with: diff --git a/.gitignore b/.gitignore index b0b3b3669..5bba0909a 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,8 @@ !**/appsettings.json !**/devsettings.json +!**/packages.lock.json + .env scripts.zip data.zip diff --git a/src/Source.targets b/src/Source.targets index 6d2c14c28..37ab9f42c 100644 --- a/src/Source.targets +++ b/src/Source.targets @@ -1,11 +1,15 @@ - net7.0 + net8.0 enable enable + + true + + Kaioru @@ -27,16 +31,5 @@ - - - preview - 1.0 - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - \ No newline at end of file diff --git a/src/app/Edelstein.Application.Server/Bootstraps/LoadTemplateBootstrap.cs b/src/app/Edelstein.Application.Server/Bootstraps/LoadTemplateBootstrap.cs index 0c35855a5..f3769eb85 100644 --- a/src/app/Edelstein.Application.Server/Bootstraps/LoadTemplateBootstrap.cs +++ b/src/app/Edelstein.Application.Server/Bootstraps/LoadTemplateBootstrap.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Frozen; using System.Diagnostics; using Edelstein.Common.Utilities.Templates; using Microsoft.Extensions.Logging; @@ -16,7 +16,7 @@ IEnumerable loaders ) { _logger = logger; - _loaders = loaders.ToImmutableList(); + _loaders = loaders.ToFrozenSet(); } public int Priority => BootstrapPriority.Load; diff --git a/src/app/Edelstein.Application.Server/Edelstein.Application.Server.csproj b/src/app/Edelstein.Application.Server/Edelstein.Application.Server.csproj index 4d7facf06..f3edc87b2 100644 --- a/src/app/Edelstein.Application.Server/Edelstein.Application.Server.csproj +++ b/src/app/Edelstein.Application.Server/Edelstein.Application.Server.csproj @@ -14,7 +14,7 @@ - + diff --git a/src/app/Edelstein.Application.Server/packages.lock.json b/src/app/Edelstein.Application.Server/packages.lock.json new file mode 100644 index 000000000..6f41eca2d --- /dev/null +++ b/src/app/Edelstein.Application.Server/packages.lock.json @@ -0,0 +1,861 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Autofac": { + "type": "Direct", + "requested": "[7.1.0, )", + "resolved": "7.1.0", + "contentHash": "XCXmpxhOnuztTTRkzG+8B8KU8SR8WjBYwSntndjlsFR5lM3K/g43r9hUwewIPDBJwDrmZU3TjmNdH6s8IF3VFQ==", + "dependencies": { + "System.Diagnostics.DiagnosticSource": "4.7.1" + } + }, + "Autofac.Extensions.DependencyInjection": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "nGrXNpQX2FiZpIBydK9cxZnnoqP/cUd3k/53uRERYEqLtWzKtE15R6L+j5q5ax5Rv/+3wAIkOaPePkahfqrwjg==", + "dependencies": { + "Autofac": "6.4.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" + } + }, + "AutoMapper.Extensions.Microsoft.DependencyInjection": { + "type": "Direct", + "requested": "[12.0.1, )", + "resolved": "12.0.1", + "contentHash": "+g/K+Vpe3gGMKGzjslMOdqNlkikScDjWfVvmWTayrDHaG/n2pPmFBMa+jKX1r/h6BDGFdkyRjAuhFE3ykW+r1g==", + "dependencies": { + "AutoMapper": "[12.0.1]", + "Microsoft.Extensions.Options": "6.0.0" + } + }, + "Duey.Provider.NX": { + "type": "Direct", + "requested": "[2.0.0, )", + "resolved": "2.0.0", + "contentHash": "+rUyVKH5twoxsv7Rfy0GUDvA78t0M0vKCGGtfMzljDcsX/RyeeNj0ZJENZ9w7va0J+Nm69XMPEjrxZyWMV5uVQ==", + "dependencies": { + "Duey.Abstractions": "2.0.0", + "K4os.Compression.LZ4": "1.3.6" + } + }, + "Duey.Provider.WZ": { + "type": "Direct", + "requested": "[2.0.0, )", + "resolved": "2.0.0", + "contentHash": "byBI5tAqQvJ8u/Lqyhg0Dg8AkrdKuAP3rF2pA0RkQSBcgdRCsKKLP4ogisCadrt5x+xjN0OMEYOrxjUc1axYoA==", + "dependencies": { + "Duey.Abstractions": "2.0.0" + } + }, + "Foundatio.JsonNet": { + "type": "Direct", + "requested": "[10.6.1, )", + "resolved": "10.6.1", + "contentHash": "y+OMdteUdbp2t7Qp7KeYl+bwtYXLLP2PNwe+8BUutVeL08m7e6cWspUGgDePwe4L3RtnYz9jzEJOE82EVYMdMQ==", + "dependencies": { + "Foundatio": "10.6.1", + "Newtonsoft.Json": "13.0.1" + } + }, + "Microsoft.EntityFrameworkCore": { + "type": "Direct", + "requested": "[7.0.10, )", + "resolved": "7.0.10", + "contentHash": "24NbXJqJ/x8u88/agqeb1pLdAF9+9StDLA36+P/3g5xsJPOaB2GxXn7epR8dWpZTgHsNZ7cvBMxBgfFmF+xZlg==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "7.0.10", + "Microsoft.EntityFrameworkCore.Analyzers": "7.0.10", + "Microsoft.Extensions.Caching.Memory": "7.0.0", + "Microsoft.Extensions.DependencyInjection": "7.0.0", + "Microsoft.Extensions.Logging": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Direct", + "requested": "[8.0.0-rc.1.23419.4, )", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "NoIBM0qnZrl5o3em/5Qx4T3HcDruKdDVvm4PsG/wiuWawtwHRqaqkFjPS66lPnu1Kgzv+D1JJd+r4C5wPxXErw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0-rc.1.23419.4", + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Configuration.Json": { + "type": "Direct", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "LDNYe3uw76W35Jci+be4LDf2lkQZe0A7EEYQVChFbc509CpZ4Iupod8li4PUXPBhEUOFI/rlQNf5xkzJRQGvtA==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "System.Text.Json": "7.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Direct", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "elNeOmkeX3eDVG6pYVeV82p29hr+UKDaBhrZyWvWLw/EVZSYEkZlQdkp0V39k/Xehs2Qa0mvoCvkVj3eQxNQ1Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.Hosting": { + "type": "Direct", + "requested": "[7.0.1, )", + "resolved": "7.0.1", + "contentHash": "aoeMou6XSW84wiqd895OdaGyO9PfH6nohQJ0XBcshRDafbdIU6PQIVl8TpOCssPYq3ciRseP5064hbFyCR9J9w==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.Configuration.Binder": "7.0.3", + "Microsoft.Extensions.Configuration.CommandLine": "7.0.0", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "7.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "7.0.0", + "Microsoft.Extensions.Configuration.Json": "7.0.0", + "Microsoft.Extensions.Configuration.UserSecrets": "7.0.0", + "Microsoft.Extensions.DependencyInjection": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Physical": "7.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Configuration": "7.0.0", + "Microsoft.Extensions.Logging.Console": "7.0.0", + "Microsoft.Extensions.Logging.Debug": "7.0.0", + "Microsoft.Extensions.Logging.EventLog": "7.0.0", + "Microsoft.Extensions.Logging.EventSource": "7.0.0", + "Microsoft.Extensions.Options": "7.0.1", + "System.Diagnostics.DiagnosticSource": "7.0.1" + } + }, + "Serilog": { + "type": "Direct", + "requested": "[3.0.1, )", + "resolved": "3.0.1", + "contentHash": "E4UmOQ++eNJax1laE+lws7E3zbhKgHsGJbO7ra0yE5smUh+5FfUPIKKBxM3MO1tK4sgpQke6/pLReDxIc/ggNw==" + }, + "Serilog.Extensions.Hosting": { + "type": "Direct", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "AWsDTs6TeCtyXYDWakzLXCOZA3/IdIfBWBwkYAF0ZvVktVr3E15oYP9pfI7GzKaGVmHaJF9TgFQnFEfcnzEkcw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Serilog": "2.12.0", + "Serilog.Extensions.Logging": "7.0.0" + } + }, + "Serilog.Settings.Configuration": { + "type": "Direct", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "MlabSn74uXAGKNv9WWDdGejmsr7cKhsfi98ZtdeK119s4lTLp+hakBtnPm8OvXNUvtXYs2ijXKA0tIy4IMnjWQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "7.0.0", + "Microsoft.Extensions.DependencyModel": "7.0.0", + "Serilog": "2.12.0" + } + }, + "Serilog.Sinks.Console": { + "type": "Direct", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "K6N5q+5fetjnJPvCmkWOpJ/V8IEIoMIB1s86OzBrbxwTyHxdx3pmz4H+8+O/Dc/ftUX12DM1aynx/dDowkwzqg==", + "dependencies": { + "Serilog": "2.10.0" + } + }, + "AutoMapper": { + "type": "Transitive", + "resolved": "12.0.1", + "contentHash": "hvV62vl6Hp/WfQ24yzo3Co9+OPl8wH8hApwVtgWpiAynVJkUcs7xvehnSftawL8Pe8FrPffBRM3hwzLQqWDNjA==", + "dependencies": { + "Microsoft.CSharp": "4.7.0" + } + }, + "BCrypt.Net-Next": { + "type": "Transitive", + "resolved": "4.0.3", + "contentHash": "W+U9WvmZQgi5cX6FS5GDtDoPzUCV4LkBLkywq/kRZhuDwcbavOzcDAr3LXJFqHUi952Yj3LEYoWW0jbEUQChsA==" + }, + "DotNetty.Buffers": { + "type": "Transitive", + "resolved": "0.7.5", + "contentHash": "ri4udTfNS856dAZ09VkQ9k6gxmYwFuZh930TAMa71smowEAvhGQEDpRY4mLgA5ADhbKhLYpmO/1vfDXEchDugQ==", + "dependencies": { + "DotNetty.Common": "0.7.5", + "System.Runtime.CompilerServices.Unsafe": "5.0.0" + } + }, + "DotNetty.Codecs": { + "type": "Transitive", + "resolved": "0.7.5", + "contentHash": "6FqSnZ2gmc5RalbxVNWeEm6FqZHORdskyDUKGdgm4gDr86D8w8TLv4L1MIS7Mshsq3figHl0TP9yFyOXe6SHdQ==", + "dependencies": { + "DotNetty.Buffers": "0.7.5", + "DotNetty.Common": "0.7.5", + "DotNetty.Transport": "0.7.5", + "System.Collections.Immutable": "1.5.0" + } + }, + "DotNetty.Common": { + "type": "Transitive", + "resolved": "0.7.5", + "contentHash": "U9dLNbZhtWhSsWIwLVhIwKC9Ku3+Q/CrY/U5Lahb8DxoEt6uo3GIPPGY3NT1COllfhT422bLALdGlesFOcwXEg==", + "dependencies": { + "Microsoft.Extensions.Logging": "5.0.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0" + } + }, + "DotNetty.Handlers": { + "type": "Transitive", + "resolved": "0.7.5", + "contentHash": "1iXurgUEaEqRW33CvPCEndrHoTB6Ql4PBNpMkVixJ6MxSS9kMLPi+nVpcnEQCPyRBkf/9znk+YO02R0bDWA03g==", + "dependencies": { + "DotNetty.Buffers": "0.7.5", + "DotNetty.Codecs": "0.7.5", + "DotNetty.Common": "0.7.5", + "DotNetty.Transport": "0.7.5" + } + }, + "DotNetty.Transport": { + "type": "Transitive", + "resolved": "0.7.5", + "contentHash": "Ha1ZDqUOEPgk5/IWpAcP220cUtcekLankgkq/KhkrmvVANNbTxwTvjBS50m2/nAK623HjT+1wcLZBfFzBg3TyQ==", + "dependencies": { + "DotNetty.Buffers": "0.7.5", + "DotNetty.Common": "0.7.5" + } + }, + "Duey.Abstractions": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "Foundatio": { + "type": "Transitive", + "resolved": "10.6.1", + "contentHash": "c5LXLzjaCwBlzozpIiumQeuFhalZgE5L38uaGu6IVlB8HMOd2Wnf7WmylRUo15BWySgqi/mpoq2ikVZCUrrpKg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "6.0.0", + "Microsoft.Extensions.DependencyInjection": "6.0.0", + "Microsoft.Extensions.Logging.Abstractions": "6.0.0", + "System.Diagnostics.DiagnosticSource": "6.0.0", + "System.Text.Json": "6.0.0" + } + }, + "K4os.Compression.LZ4": { + "type": "Transitive", + "resolved": "1.3.6", + "contentHash": "RxGhoJBjZCgGeZgDqOP4Krs1cR9PHInbz6d2N19Dic0Y6ZACzVKbR3uSpqfEZf4RiUbHk9aiog2eS22nQPTc2A==" + }, + "MathParser.org-mXparser": { + "type": "Transitive", + "resolved": "4.4.3", + "contentHash": "QhHsP4nzyjC3G2kJ+dbT3NFuE0M0rKfa0wQjCcn5UyK0VnXN8OeYMy9KEYGzNKI9ealcwOQJd/4Xcq4PE+Vl7g==" + }, + "McMaster.NETCore.Plugins": { + "type": "Transitive", + "resolved": "1.4.0", + "contentHash": "UKw5Z2/QHhkR7kiAJmqdCwVDMQV0lwsfj10+FG676r8DsJWIpxtachtEjE0qBs9WoK5GUQIqxgyFeYUSwuPszg==", + "dependencies": { + "Microsoft.DotNet.PlatformAbstractions": "3.1.6", + "Microsoft.Extensions.DependencyModel": "5.0.0" + } + }, + "Microsoft.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==" + }, + "Microsoft.CSharp": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==" + }, + "Microsoft.DotNet.PlatformAbstractions": { + "type": "Transitive", + "resolved": "3.1.6", + "contentHash": "jek4XYaQ/PGUwDKKhwR8K47Uh1189PFzMeLqO83mXrXQVIpARZCcfuDedH50YDTepBkfijCZN5U/vZi++erxtg==" + }, + "Microsoft.EntityFrameworkCore.Abstractions": { + "type": "Transitive", + "resolved": "7.0.10", + "contentHash": "Z/lDWmGLiT9uNQrp6UXTKZxofSmAKQCiKOz98FDscTbfAGgBXE3DTTqRsPMc8HFIVVSNANSiFRz3JyLg07HN9Q==" + }, + "Microsoft.EntityFrameworkCore.Analyzers": { + "type": "Transitive", + "resolved": "7.0.10", + "contentHash": "+8NVNpyJTzW6nNh/7RGfldf+mbeboVcn+X1tD8kMBCEJswuy3RqM/qecEEfOfTcWLliZExPMaHwOwtHO6RMpdA==" + }, + "Microsoft.EntityFrameworkCore.Relational": { + "type": "Transitive", + "resolved": "7.0.10", + "contentHash": "PO2QB2Du+pW210UHmepYR12bk+ZOZJCiNkA7zEAxWs+vzvrRAMsUPlDlfgX2LXE7NBsnb0uvZp7a1/qqKf3fRQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "7.0.10", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.Caching.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "IeimUd0TNbhB4ded3AbgBLQv2SnsiVugDyGV1MvspQFVlA07nDC7Zul7kcwH5jWN3JiTcp/ySE83AIJo8yfKjg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "xpidBs2KCE2gw1JrD0quHE72kvCaI3xFql5/Peb2GRtUuZX+dYPoK/NTdVMiM67Svym0M0Df9A3xyU0FbMQhHw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "tY5wKwXNZ6cBeyHxvxyLy57TxUaA6H82/vW8vTTmikG9bkfRzfyS0EEDloiPzL4ln8P+3aZxeAestjPC6942Kg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "7.0.3", + "contentHash": "1eRFwJBrkkncTpvh6mivB8zg4uBVm6+Y6stEJERrVEqZZc8Hvf+N1iIgj2ySYDUQko4J1Gw1rLf1M8bG83F0eA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration.CommandLine": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "a8Iq8SCw5m8W5pZJcPCgBpBO4E89+NaObPng+ApIhrGSv9X4JPrcFAaGM4sDgR0X83uhLgsNJq8VnGP/wqhr8A==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "RIkfqCkvrAogirjsqSrG1E1FxgrLsOZU2nhRbl07lrajnxzSU2isj2lwQah0CtCbLWo/pOIukQzM1GfneBUnxA==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration.FileExtensions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "xk2lRJ1RDuqe57BmgvRPyCt6zyePKUmvT6iuXqiHR+/OIIgWVR8Ff5k2p6DwmqY8a17hx/OnrekEhziEIeQP6Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Physical": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration.UserSecrets": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "33HPW1PmB2RS0ietBQyvOxjp4O3wlt+4tIs8KPyMn1kqp04goiZGa7+3mc69NRLv6bphkLDy0YR7Uw3aZyf8Zw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.Configuration.Json": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Physical": "7.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "h3j/QfmFN4S0w4C2A6X7arXij/M/OVw3uQHSOFxnND4DyAzO1F9eMX7Eti7lU/OkSthEE0WzRsfT/Dmx86jzCw==" + }, + "Microsoft.Extensions.DependencyModel": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "oONNYd71J3LzkWc4fUHl3SvMfiQMYUCo/mDHDEu76hYYxdhdrPYv6fvGv9nnKVyhE9P0h20AU8RZB5OOWQcAXg==", + "dependencies": { + "System.Text.Encodings.Web": "7.0.0", + "System.Text.Json": "7.0.0" + } + }, + "Microsoft.Extensions.FileProviders.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "NyawiW9ZT/liQb34k9YqBSNPLuuPkrjMgQZ24Y/xXX1RoiBkLUdPMaQTmxhZ5TYu8ZKZ9qayzil75JX95vGQUg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.FileProviders.Physical": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "K8D2MTR+EtzkbZ8z80LrG7Ur64R7ZZdRLt1J5cgpc/pUWl0C6IkAUapPuK28oionHueCPELUqq0oYEvZfalNdg==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.FileSystemGlobbing": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "2jONjKHiF+E92ynz2ZFcr9OvxIw+rTGMPEH+UZGeHTEComVav93jQUWGkso8yWwVBcEJGcNcZAaqY01FFJcj7w==" + }, + "Microsoft.Extensions.Hosting.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "43n9Je09z0p/7ViPxfRqs5BUItRLNVh5b6JH40F2Agkh2NBsY/jpNYTtbCcxrHCsA3oRmbR6RJBzUutB4VZvNQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "Nw2muoNrOG5U5qa2ZekXwudUn2BJcD41e65zwmDHb1fQegTX66UokLWZkJRpqSSHXDOWZ5V0iqhbxOEky91atA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.Extensions.Logging.Configuration": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "FLDA0HcffKA8ycoDQLJuCNGIE42cLWPxgdQGRBaSzZrYTkMBjnf9zrr8pGT06psLq9Q+RKWmmZczQ9bCrXEBcA==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.Configuration.Binder": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "7.0.0" + } + }, + "Microsoft.Extensions.Logging.Console": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "qt5n8bHLZPUfuRnFxJKW5q9ZwOTncdh96rtWzWpX3Y/064MlxzCSw2ELF5Jlwdo+Y4wK3I47NmUTFsV7Sg8rqg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Configuration": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0", + "System.Text.Json": "7.0.0" + } + }, + "Microsoft.Extensions.Logging.Debug": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "tFGGyPDpJ8ZdQdeckCArP7nZuoY3am9zJWuvp4OD1bHq65S0epW9BNHzAWeaIO4eYwWnGm1jRNt3vRciH8H6MA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.Logging.EventLog": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "Rp7cYL9xQRVTgjMl77H5YDxszAaO+mlA+KT0BnLSVhuCoKQQOOs1sSK2/x8BK2dZ/lKeAC/CVF+20Ef2dpKXwg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0", + "System.Diagnostics.EventLog": "7.0.0" + } + }, + "Microsoft.Extensions.Logging.EventSource": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "MxQXndQFviIyOPqyMeLNshXnmqcfzEHE2wWcr7BF1unSisJgouZ3tItnq+aJLGPojrW8OZSC/ZdRoR6wAq+c7w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0", + "System.Text.Json": "7.0.0" + } + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "7.0.1", + "contentHash": "pZRDYdN1FpepOIfHU62QoBQ6zdAoTvnjxFfqAzEd9Jhb2dfhA5i6jeTdgGgcgTWFRC7oT0+3XrbQu4LjvgX1Nw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Options.ConfigurationExtensions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "95UnxZkkFdXxF6vSrtJsMHCzkDeSMuUWGs2hDT54cX+U5eVajrCJ3qLyQRW+CtpTt5OJ8bmTvpQVHu1DLhH+cA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.Configuration.Binder": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "zyoB4zblhvpylS9VOmKyBuGH+RjKDsfi0cTB2KRPPDD6tFinpP+vGr3dictaNYLhGUg6jaBmq+2H/WZMCnvGDQ==" + }, + "Microsoft.IO.RecyclableMemoryStream": { + "type": "Transitive", + "resolved": "2.3.2", + "contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q==" + }, + "MoonSharp": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "uiAcRh7d+53k3xW9pFDJfAFVw4RnjHVCJG05M3oPAVEVwPtFavhg1H/IpC6So4X1j9kJlzuLlA3OghhPcIvc5A==" + }, + "Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" + }, + "Npgsql": { + "type": "Transitive", + "resolved": "7.0.4", + "contentHash": "7UVPYy2RP0ci04PED1tc9ZCaTw/DfSdSkLiGEFCAvwMwsgA/bAluj1liNzP1IpN0MFofnOF0cm1zJfmbEuCehg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "6.0.0" + } + }, + "Npgsql.EntityFrameworkCore.PostgreSQL": { + "type": "Transitive", + "resolved": "7.0.4", + "contentHash": "ZYMtyG6pmLtUsFAx0/XaIlVkJM+1gArWEKD55cLLxiVlGScAphjiGj+G7Gk16yg5lhhdWx+bgXWpIUISXuS33g==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[7.0.5, 8.0.0)", + "Microsoft.EntityFrameworkCore.Abstractions": "[7.0.5, 8.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[7.0.5, 8.0.0)", + "Npgsql": "7.0.4" + } + }, + "RBush": { + "type": "Transitive", + "resolved": "3.2.0", + "contentHash": "ijGh9N0zZ7JfXk3oQkWCwK8SwSSByexbyh/MjbCjNxOft9eG5ZqKC1vdgiYq78h4IZRFmN4s3JZ/b10Jipud5w==" + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "9faU0zNQqU7I6soVhLUMYaGNpgWv6cKlKb2S5AnS8gXxzW/em5Ladm/6FMrWTnX41cdbdGPOWNAo6adi4WaJ6A==", + "dependencies": { + "Microsoft.Extensions.Logging": "7.0.0", + "Serilog": "2.12.0" + } + }, + "Stateless": { + "type": "Transitive", + "resolved": "5.13.0", + "contentHash": "M4Rb4b31TUEfhCd4en0WlRfuFgQ2rwva9e1CuXnto5vNGvRsNVimHENnvjegf6nKG9ZH+51McAZ/huqRtTziYg==" + }, + "System.Collections.Immutable": { + "type": "Transitive", + "resolved": "1.5.0", + "contentHash": "EXKiDFsChZW0RjrZ4FYHu9aW6+P4MCgEDCklsVseRfhoO0F+dXeMSsMRAlVXIo06kGJ/zv+2w1a2uc2+kxxSaQ==" + }, + "System.Diagnostics.DiagnosticSource": { + "type": "Transitive", + "resolved": "7.0.1", + "contentHash": "T9SLFxzDp0SreCffRDXSAS5G+lq6E8qP4knHS2IBjwCdx2KEvGnGZsq7gFpselYOda7l6gXsJMD93TQsFj/URA==" + }, + "System.Diagnostics.EventLog": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "eUDP47obqQm3SFJfP6z+Fx2nJ4KKTQbXB4Q9Uesnzw9SbYdhjyoGXuvDn/gEmFY6N5Z3bFFbpAQGA7m6hrYJCw==" + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "OP6umVGxc0Z0MvZQBVigj4/U31Pw72ITihDWP9WiWDm+q5aoe0GaJivsfYGq53o6dxH7DcXWiCTl7+0o2CGdmg==" + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "DaGSsVqKsn/ia6RG8frjwmJonfos0srquhw09TlT8KRw5I43E+4gs+/bZj4K0vShJ5H9imCuXupb4RmS+dBy3w==", + "dependencies": { + "System.Text.Encodings.Web": "7.0.0" + } + }, + "edelstein.common.constants": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )" + } + }, + "edelstein.common.crypto": { + "type": "Project" + }, + "edelstein.common.database": { + "type": "Project", + "dependencies": { + "AutoMapper": "[12.0.1, )", + "Edelstein.Common.Gameplay": "[1.0.0, )", + "Microsoft.EntityFrameworkCore": "[7.0.10, )", + "Microsoft.EntityFrameworkCore.Relational": "[7.0.10, )", + "Microsoft.Extensions.Configuration": "[8.0.0-rc.1.23419.4, )", + "Microsoft.Extensions.Configuration.Json": "[7.0.0, )", + "Newtonsoft.Json": "[13.0.3, )", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.4, )" + } + }, + "edelstein.common.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Common.Constants": "[1.0.0, )", + "Edelstein.Common.Utilities": "[1.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "MathParser.org-mXparser": "[4.4.3, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "edelstein.common.gameplay.game": { + "type": "Project", + "dependencies": { + "Edelstein.Common.Constants": "[1.0.0, )", + "Edelstein.Common.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Gameplay.Game": "[1.0.0, )", + "Edelstein.Protocol.Scripting": "[1.0.0, )", + "Foundatio": "[10.6.1, )", + "Stateless": "[5.13.0, )" + } + }, + "edelstein.common.gameplay.login": { + "type": "Project", + "dependencies": { + "BCrypt.Net-Next": "[4.0.3, )", + "Edelstein.Common.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Gameplay.Login": "[1.0.0, )" + } + }, + "edelstein.common.gameplay.shop": { + "type": "Project", + "dependencies": { + "Edelstein.Common.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Gameplay.Shop": "[1.0.0, )" + } + }, + "edelstein.common.gameplay.trade": { + "type": "Project", + "dependencies": { + "Edelstein.Common.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Gameplay.Trade": "[1.0.0, )" + } + }, + "edelstein.common.network.dotnetty": { + "type": "Project", + "dependencies": { + "DotNetty.Buffers": "[0.7.5, )", + "DotNetty.Codecs": "[0.7.5, )", + "DotNetty.Common": "[0.7.5, )", + "DotNetty.Handlers": "[0.7.5, )", + "DotNetty.Transport": "[0.7.5, )", + "Edelstein.Common.Crypto": "[1.0.0, )", + "Edelstein.Common.Utilities": "[1.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )" + } + }, + "edelstein.common.plugin": { + "type": "Project", + "dependencies": { + "Edelstein.Common.Utilities": "[1.0.0, )", + "Edelstein.Protocol.Plugin": "[1.0.0, )", + "McMaster.NETCore.Plugins": "[1.4.0, )", + "Microsoft.Extensions.Configuration": "[8.0.0-rc.1.23419.4, )", + "Microsoft.Extensions.Configuration.Json": "[7.0.0, )", + "Microsoft.Extensions.Hosting.Abstractions": "[7.0.0, )" + } + }, + "edelstein.common.scripting.lua": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Scripting": "[1.0.0, )", + "MoonSharp": "[2.0.0, )" + } + }, + "edelstein.common.services.auth": { + "type": "Project", + "dependencies": { + "BCrypt.Net-Next": "[4.0.3, )", + "Edelstein.Protocol.Services.Auth": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.EntityFrameworkCore": "[7.0.10, )", + "Microsoft.EntityFrameworkCore.Relational": "[7.0.10, )", + "Microsoft.Extensions.Configuration": "[8.0.0-rc.1.23419.4, )", + "Microsoft.Extensions.Configuration.Json": "[7.0.0, )", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.4, )" + } + }, + "edelstein.common.services.server": { + "type": "Project", + "dependencies": { + "AutoMapper": "[12.0.1, )", + "Edelstein.Common.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.EntityFrameworkCore": "[7.0.10, )", + "Microsoft.EntityFrameworkCore.Relational": "[7.0.10, )", + "Microsoft.Extensions.Configuration": "[8.0.0-rc.1.23419.4, )", + "Microsoft.Extensions.Configuration.Json": "[7.0.0, )", + "Newtonsoft.Json": "[13.0.3, )", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.4, )" + } + }, + "edelstein.common.services.social": { + "type": "Project", + "dependencies": { + "AutoMapper": "[12.0.1, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Foundatio": "[10.6.1, )", + "Microsoft.EntityFrameworkCore": "[7.0.10, )", + "Microsoft.EntityFrameworkCore.Relational": "[7.0.10, )", + "Microsoft.Extensions.Configuration": "[8.0.0-rc.1.23419.4, )", + "Microsoft.Extensions.Configuration.Json": "[7.0.0, )", + "Newtonsoft.Json": "[13.0.3, )", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.4, )" + } + }, + "edelstein.common.utilities": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )", + "Microsoft.IO.RecyclableMemoryStream": "[2.3.2, )", + "RBush": "[3.2.0, )" + } + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.gameplay.game": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Auth": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )" + } + }, + "edelstein.protocol.gameplay.login": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Auth": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )" + } + }, + "edelstein.protocol.gameplay.shop": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Auth": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.gameplay.trade": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Auth": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.plugin": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[8.0.0-rc.1.23419.4, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "edelstein.protocol.scripting": { + "type": "Project" + }, + "edelstein.protocol.services.auth": { + "type": "Project" + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/common/Edelstein.Common.Constants/packages.lock.json b/src/common/Edelstein.Common.Constants/packages.lock.json new file mode 100644 index 000000000..bb28e8006 --- /dev/null +++ b/src/common/Edelstein.Common.Constants/packages.lock.json @@ -0,0 +1,36 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Duey.Abstractions": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/common/Edelstein.Common.Crypto/AESCipher.cs b/src/common/Edelstein.Common.Crypto/AESCipher.cs index 3c4da9e7a..13e292ccb 100644 --- a/src/common/Edelstein.Common.Crypto/AESCipher.cs +++ b/src/common/Edelstein.Common.Crypto/AESCipher.cs @@ -5,7 +5,7 @@ namespace Edelstein.Common.Crypto; public class AESCipher { - private readonly SymmetricAlgorithm _cipher; + private readonly ICryptoTransform _transformer; public AESCipher() : this(new byte[] { 0x13, 0x08, 0x06, 0xb4, 0x1b, 0x0f, 0x33, 0x52 }) { @@ -14,14 +14,15 @@ public AESCipher() : this(new byte[] { 0x13, 0x08, 0x06, 0xb4, 0x1b, 0x0f, 0x33, public AESCipher(ReadOnlySpan userKey) { var expandedKey = new byte[userKey.Length * 4]; + var cipher = Aes.Create(); for (var i = 0; i < userKey.Length; i++) expandedKey[i * 4] = userKey[i]; - - _cipher = Aes.Create(); - _cipher.KeySize = 256; - _cipher.Key = expandedKey; - _cipher.Mode = CipherMode.ECB; + + cipher.KeySize = 256; + cipher.Key = expandedKey; + cipher.Mode = CipherMode.ECB; + _transformer = cipher.CreateEncryptor(); } public void Transform(Span input, int remaining, uint pSrc) @@ -33,8 +34,6 @@ public void Transform(Span input, int remaining, uint pSrc) var srcExp = ArrayPool.Shared.Rent(srcExpL); var srcBytes = BitConverter.GetBytes(pSrc); - using var crypt = _cipher.CreateEncryptor(); - while (remaining > 0) { for (var i = 0; i < srcExpL; ++i) @@ -48,7 +47,7 @@ public void Transform(Span input, int remaining, uint pSrc) var sub = i - start; if (sub % srcExpL == 0) - crypt.TransformBlock(srcExp, 0, srcExpL, srcExp, 0); + _transformer.TransformBlock(srcExp, 0, srcExpL, srcExp, 0); input[i] ^= srcExp[sub % srcExpL]; } diff --git a/src/common/Edelstein.Common.Crypto/packages.lock.json b/src/common/Edelstein.Common.Crypto/packages.lock.json new file mode 100644 index 000000000..807ab822b --- /dev/null +++ b/src/common/Edelstein.Common.Crypto/packages.lock.json @@ -0,0 +1,6 @@ +{ + "version": 1, + "dependencies": { + "net8.0": {} + } +} \ No newline at end of file diff --git a/src/common/Edelstein.Common.Data.NX/NXDataManager.cs b/src/common/Edelstein.Common.Data.NX/NXDataManager.cs new file mode 100644 index 000000000..221dd50bf --- /dev/null +++ b/src/common/Edelstein.Common.Data.NX/NXDataManager.cs @@ -0,0 +1,39 @@ +using System.Collections.Frozen; +using Duey; +using Edelstein.Protocol.Data; + +namespace Edelstein.Common.Data.NX; + +public class NXDataManager : IDataManager +{ + private readonly IDictionary _nodes; + + public NXDataManager(string path) => + _nodes = Directory + .GetFiles(path, "*.nx") + .ToFrozenDictionary( + k => Path.GetFileNameWithoutExtension(k)!, + d => (INXNode)new NXFile(d).Root + ); + + public T? Resolve(string? path = null) where T : struct + { + var node = Resolve(path); + return node?.Resolve(); + } + + public T? ResolveOrDefault(string? path = null) where T : class + { + var node = Resolve(path); + return node?.ResolveOrDefault(); + } + + public IDataNode? Resolve(string? path = null) + { + if (string.IsNullOrEmpty(path)) return null; + var split = path.Split('/'); + return _nodes.TryGetValue(split[0], out var value) + ? new NXDataNode(value.ResolvePath(string.Join("/", split.Skip(1).ToArray()))) + : null; + } +} diff --git a/src/common/Edelstein.Common.Database/Edelstein.Common.Database.csproj b/src/common/Edelstein.Common.Database/Edelstein.Common.Database.csproj index eb5628952..83092fe8e 100644 --- a/src/common/Edelstein.Common.Database/Edelstein.Common.Database.csproj +++ b/src/common/Edelstein.Common.Database/Edelstein.Common.Database.csproj @@ -14,7 +14,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/src/common/Edelstein.Common.Database/Repositories/CharacterRepository.cs b/src/common/Edelstein.Common.Database/Repositories/CharacterRepository.cs index d291066b4..db0d1841b 100644 --- a/src/common/Edelstein.Common.Database/Repositories/CharacterRepository.cs +++ b/src/common/Edelstein.Common.Database/Repositories/CharacterRepository.cs @@ -86,6 +86,6 @@ public async Task> RetrieveAllByAccountWorld(int account .ToListAsync(); return results .Select(m => _mapper.Map(m)) - .ToImmutableList(); + .ToImmutableArray(); } } diff --git a/src/common/Edelstein.Common.Database/packages.lock.json b/src/common/Edelstein.Common.Database/packages.lock.json new file mode 100644 index 000000000..4abb4fea4 --- /dev/null +++ b/src/common/Edelstein.Common.Database/packages.lock.json @@ -0,0 +1,340 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "AutoMapper": { + "type": "Direct", + "requested": "[12.0.1, )", + "resolved": "12.0.1", + "contentHash": "hvV62vl6Hp/WfQ24yzo3Co9+OPl8wH8hApwVtgWpiAynVJkUcs7xvehnSftawL8Pe8FrPffBRM3hwzLQqWDNjA==", + "dependencies": { + "Microsoft.CSharp": "4.7.0" + } + }, + "Microsoft.EntityFrameworkCore": { + "type": "Direct", + "requested": "[7.0.10, )", + "resolved": "7.0.10", + "contentHash": "24NbXJqJ/x8u88/agqeb1pLdAF9+9StDLA36+P/3g5xsJPOaB2GxXn7epR8dWpZTgHsNZ7cvBMxBgfFmF+xZlg==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "7.0.10", + "Microsoft.EntityFrameworkCore.Analyzers": "7.0.10", + "Microsoft.Extensions.Caching.Memory": "7.0.0", + "Microsoft.Extensions.DependencyInjection": "7.0.0", + "Microsoft.Extensions.Logging": "7.0.0" + } + }, + "Microsoft.EntityFrameworkCore.Design": { + "type": "Direct", + "requested": "[7.0.10, )", + "resolved": "7.0.10", + "contentHash": "ZDdJ2aAE529A1zd3sEvszADRCiJmlOKxc0WlhS+NIhSs68NESAApPZL4uHXrIk0vb7SBRnNPYPfOhASWf9dahg==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.EntityFrameworkCore.Relational": "7.0.10", + "Microsoft.Extensions.DependencyModel": "7.0.0", + "Mono.TextTemplating": "2.2.1" + } + }, + "Microsoft.EntityFrameworkCore.Relational": { + "type": "Direct", + "requested": "[7.0.10, )", + "resolved": "7.0.10", + "contentHash": "PO2QB2Du+pW210UHmepYR12bk+ZOZJCiNkA7zEAxWs+vzvrRAMsUPlDlfgX2LXE7NBsnb0uvZp7a1/qqKf3fRQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "7.0.10", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Direct", + "requested": "[8.0.0-rc.1.23419.4, )", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "NoIBM0qnZrl5o3em/5Qx4T3HcDruKdDVvm4PsG/wiuWawtwHRqaqkFjPS66lPnu1Kgzv+D1JJd+r4C5wPxXErw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0-rc.1.23419.4", + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Configuration.Json": { + "type": "Direct", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "LDNYe3uw76W35Jci+be4LDf2lkQZe0A7EEYQVChFbc509CpZ4Iupod8li4PUXPBhEUOFI/rlQNf5xkzJRQGvtA==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "System.Text.Json": "7.0.0" + } + }, + "Newtonsoft.Json": { + "type": "Direct", + "requested": "[13.0.3, )", + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" + }, + "Npgsql.EntityFrameworkCore.PostgreSQL": { + "type": "Direct", + "requested": "[7.0.4, )", + "resolved": "7.0.4", + "contentHash": "ZYMtyG6pmLtUsFAx0/XaIlVkJM+1gArWEKD55cLLxiVlGScAphjiGj+G7Gk16yg5lhhdWx+bgXWpIUISXuS33g==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[7.0.5, 8.0.0)", + "Microsoft.EntityFrameworkCore.Abstractions": "[7.0.5, 8.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[7.0.5, 8.0.0)", + "Npgsql": "7.0.4" + } + }, + "Duey.Abstractions": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "Humanizer.Core": { + "type": "Transitive", + "resolved": "2.14.1", + "contentHash": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==" + }, + "MathParser.org-mXparser": { + "type": "Transitive", + "resolved": "4.4.3", + "contentHash": "QhHsP4nzyjC3G2kJ+dbT3NFuE0M0rKfa0wQjCcn5UyK0VnXN8OeYMy9KEYGzNKI9ealcwOQJd/4Xcq4PE+Vl7g==" + }, + "Microsoft.CSharp": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==" + }, + "Microsoft.EntityFrameworkCore.Abstractions": { + "type": "Transitive", + "resolved": "7.0.10", + "contentHash": "Z/lDWmGLiT9uNQrp6UXTKZxofSmAKQCiKOz98FDscTbfAGgBXE3DTTqRsPMc8HFIVVSNANSiFRz3JyLg07HN9Q==" + }, + "Microsoft.EntityFrameworkCore.Analyzers": { + "type": "Transitive", + "resolved": "7.0.10", + "contentHash": "+8NVNpyJTzW6nNh/7RGfldf+mbeboVcn+X1tD8kMBCEJswuy3RqM/qecEEfOfTcWLliZExPMaHwOwtHO6RMpdA==" + }, + "Microsoft.Extensions.Caching.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "IeimUd0TNbhB4ded3AbgBLQv2SnsiVugDyGV1MvspQFVlA07nDC7Zul7kcwH5jWN3JiTcp/ySE83AIJo8yfKjg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "xpidBs2KCE2gw1JrD0quHE72kvCaI3xFql5/Peb2GRtUuZX+dYPoK/NTdVMiM67Svym0M0Df9A3xyU0FbMQhHw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "tY5wKwXNZ6cBeyHxvxyLy57TxUaA6H82/vW8vTTmikG9bkfRzfyS0EEDloiPzL4ln8P+3aZxeAestjPC6942Kg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Configuration.FileExtensions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "xk2lRJ1RDuqe57BmgvRPyCt6zyePKUmvT6iuXqiHR+/OIIgWVR8Ff5k2p6DwmqY8a17hx/OnrekEhziEIeQP6Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Physical": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "elNeOmkeX3eDVG6pYVeV82p29hr+UKDaBhrZyWvWLw/EVZSYEkZlQdkp0V39k/Xehs2Qa0mvoCvkVj3eQxNQ1Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "h3j/QfmFN4S0w4C2A6X7arXij/M/OVw3uQHSOFxnND4DyAzO1F9eMX7Eti7lU/OkSthEE0WzRsfT/Dmx86jzCw==" + }, + "Microsoft.Extensions.DependencyModel": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "oONNYd71J3LzkWc4fUHl3SvMfiQMYUCo/mDHDEu76hYYxdhdrPYv6fvGv9nnKVyhE9P0h20AU8RZB5OOWQcAXg==", + "dependencies": { + "System.Text.Encodings.Web": "7.0.0", + "System.Text.Json": "7.0.0" + } + }, + "Microsoft.Extensions.FileProviders.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "NyawiW9ZT/liQb34k9YqBSNPLuuPkrjMgQZ24Y/xXX1RoiBkLUdPMaQTmxhZ5TYu8ZKZ9qayzil75JX95vGQUg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.FileProviders.Physical": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "K8D2MTR+EtzkbZ8z80LrG7Ur64R7ZZdRLt1J5cgpc/pUWl0C6IkAUapPuK28oionHueCPELUqq0oYEvZfalNdg==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.FileSystemGlobbing": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "2jONjKHiF+E92ynz2ZFcr9OvxIw+rTGMPEH+UZGeHTEComVav93jQUWGkso8yWwVBcEJGcNcZAaqY01FFJcj7w==" + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "Nw2muoNrOG5U5qa2ZekXwudUn2BJcD41e65zwmDHb1fQegTX66UokLWZkJRpqSSHXDOWZ5V0iqhbxOEky91atA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "lP1yBnTTU42cKpMozuafbvNtQ7QcBjr/CcK3bYOGEMH55Fjt+iecXjT6chR7vbgCMqy3PG3aNQSZgo/EuY/9qQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "zyoB4zblhvpylS9VOmKyBuGH+RjKDsfi0cTB2KRPPDD6tFinpP+vGr3dictaNYLhGUg6jaBmq+2H/WZMCnvGDQ==" + }, + "Microsoft.IO.RecyclableMemoryStream": { + "type": "Transitive", + "resolved": "2.3.2", + "contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q==" + }, + "Mono.TextTemplating": { + "type": "Transitive", + "resolved": "2.2.1", + "contentHash": "KZYeKBET/2Z0gY1WlTAK7+RHTl7GSbtvTLDXEZZojUdAPqpQNDL6tHv7VUpqfX5VEOh+uRGKaZXkuD253nEOBQ==", + "dependencies": { + "System.CodeDom": "4.4.0" + } + }, + "Npgsql": { + "type": "Transitive", + "resolved": "7.0.4", + "contentHash": "7UVPYy2RP0ci04PED1tc9ZCaTw/DfSdSkLiGEFCAvwMwsgA/bAluj1liNzP1IpN0MFofnOF0cm1zJfmbEuCehg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "6.0.0" + } + }, + "RBush": { + "type": "Transitive", + "resolved": "3.2.0", + "contentHash": "ijGh9N0zZ7JfXk3oQkWCwK8SwSSByexbyh/MjbCjNxOft9eG5ZqKC1vdgiYq78h4IZRFmN4s3JZ/b10Jipud5w==" + }, + "System.CodeDom": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "2sCCb7doXEwtYAbqzbF/8UAeDRMNmPaQbU2q50Psg1J9KzumyVVCgKQY8s53WIPTufNT0DpSe9QRvVjOzfDWBA==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "OP6umVGxc0Z0MvZQBVigj4/U31Pw72ITihDWP9WiWDm+q5aoe0GaJivsfYGq53o6dxH7DcXWiCTl7+0o2CGdmg==" + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "DaGSsVqKsn/ia6RG8frjwmJonfos0srquhw09TlT8KRw5I43E+4gs+/bZj4K0vShJ5H9imCuXupb4RmS+dBy3w==", + "dependencies": { + "System.Text.Encodings.Web": "7.0.0" + } + }, + "edelstein.common.constants": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )" + } + }, + "edelstein.common.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Common.Constants": "[1.0.0, )", + "Edelstein.Common.Utilities": "[1.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "MathParser.org-mXparser": "[4.4.3, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "edelstein.common.utilities": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )", + "Microsoft.IO.RecyclableMemoryStream": "[2.3.2, )", + "RBush": "[3.2.0, )" + } + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/common/Edelstein.Common.Gameplay.Game/Combat/SkillContext.cs b/src/common/Edelstein.Common.Gameplay.Game/Combat/SkillContext.cs index dacc440cd..6739c51c3 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Combat/SkillContext.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Combat/SkillContext.cs @@ -418,7 +418,7 @@ await Task.WhenAll(targets foreach (var summoned in _user.Owned .OfType() .Where(s => _resetSummoned.Contains(s.SkillID)) - .ToImmutableList()) + .ToImmutableArray()) { _user.Owned.Remove(summoned); if (_user.Field != null) diff --git a/src/common/Edelstein.Common.Gameplay.Game/Combat/Skills/Resistance/Mechanic1SkillHandler.cs b/src/common/Edelstein.Common.Gameplay.Game/Combat/Skills/Resistance/Mechanic1SkillHandler.cs index 812c38eb9..ecdc0deb9 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Combat/Skills/Resistance/Mechanic1SkillHandler.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Combat/Skills/Resistance/Mechanic1SkillHandler.cs @@ -1,7 +1,5 @@ using Edelstein.Common.Constants; using Edelstein.Protocol.Gameplay.Game.Combat; -using Edelstein.Protocol.Gameplay.Game.Objects.Mob; -using Edelstein.Protocol.Gameplay.Game.Objects.Mob.Stats; using Edelstein.Protocol.Gameplay.Game.Objects.User; namespace Edelstein.Common.Gameplay.Game.Combat.Skills.Resistance; diff --git a/src/common/Edelstein.Common.Gameplay.Game/Combat/Skills/Resistance/Mechanic3SkillHandler.cs b/src/common/Edelstein.Common.Gameplay.Game/Combat/Skills/Resistance/Mechanic3SkillHandler.cs index 26529c199..4a875e2a1 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Combat/Skills/Resistance/Mechanic3SkillHandler.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Combat/Skills/Resistance/Mechanic3SkillHandler.cs @@ -1,7 +1,6 @@ using Edelstein.Common.Constants; using Edelstein.Protocol.Gameplay.Game.Combat; using Edelstein.Protocol.Gameplay.Game.Objects; -using Edelstein.Protocol.Gameplay.Game.Objects.AffectedArea; using Edelstein.Protocol.Gameplay.Game.Objects.Mob; using Edelstein.Protocol.Gameplay.Game.Objects.Mob.Stats; using Edelstein.Protocol.Gameplay.Game.Objects.Summoned; diff --git a/src/common/Edelstein.Common.Gameplay.Game/Continents/ContiMove.cs b/src/common/Edelstein.Common.Gameplay.Game/Continents/ContiMove.cs index 72ef3613d..1fafd247c 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Continents/ContiMove.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Continents/ContiMove.cs @@ -170,7 +170,7 @@ await MoveField.Dispatch(packet.Build() } .Where(f => f != null) .SelectMany(f => f!.Objects) - .ToImmutableList(); + .ToImmutableArray(); public override Task Enter(IFieldObject obj) => (State switch { diff --git a/src/common/Edelstein.Common.Gameplay.Game/Continents/ContiMoveManager.cs b/src/common/Edelstein.Common.Gameplay.Game/Continents/ContiMoveManager.cs index 8f9db231e..bf8fdd38a 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Continents/ContiMoveManager.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Continents/ContiMoveManager.cs @@ -34,7 +34,7 @@ public ContiMoveManager(ITickerManager tickerManager) )); public Task> RetrieveAll() => - Task.FromResult>(_conti.Values.ToImmutableList()); + Task.FromResult>(_conti.Values.ToImmutableArray()); public Task Insert(IContiMove entry) { diff --git a/src/common/Edelstein.Common.Gameplay.Game/Continents/Templates/ContiMoveTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay.Game/Continents/Templates/ContiMoveTemplateLoader.cs index b756f0e49..6749b1ef2 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Continents/Templates/ContiMoveTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Continents/Templates/ContiMoveTemplateLoader.cs @@ -39,6 +39,7 @@ await _manager.Insert(new TemplateProviderLazy( )); })); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Conversations/Speakers/Facades/SpeakerUserInventory.cs b/src/common/Edelstein.Common.Gameplay.Game/Conversations/Speakers/Facades/SpeakerUserInventory.cs index 7528ce080..0c139269e 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Conversations/Speakers/Facades/SpeakerUserInventory.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Conversations/Speakers/Facades/SpeakerUserInventory.cs @@ -1,4 +1,5 @@ -using Edelstein.Common.Gameplay.Game.Objects.User.Effects; +using System.Collections.Immutable; +using Edelstein.Common.Gameplay.Game.Objects.User.Effects; using Edelstein.Protocol.Gameplay.Game.Conversations.Speakers.Facades; using Edelstein.Protocol.Gameplay.Game.Objects.User; @@ -37,5 +38,5 @@ public bool HasSlotFor(int templateID, short count = 1) public bool HasSlotFor(IDictionary templates) => _user.StageUser.Context.Managers.Inventory.HasSlotFor(_user.Character.Inventories, templates .Select(kv => Tuple.Create(kv.Key, kv.Value)) - .ToList()); + .ToImmutableArray()); } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Conversations/Speakers/Facades/SpeakerUserQuests.cs b/src/common/Edelstein.Common.Gameplay.Game/Conversations/Speakers/Facades/SpeakerUserQuests.cs index 3881522cb..4d8a7dc4a 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Conversations/Speakers/Facades/SpeakerUserQuests.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Conversations/Speakers/Facades/SpeakerUserQuests.cs @@ -1,5 +1,4 @@ -using System.Collections.Immutable; -using Edelstein.Common.Gameplay.Game.Objects.User.Messages; +using Edelstein.Common.Gameplay.Game.Objects.User.Messages; using Edelstein.Common.Gameplay.Models.Characters.Quests; using Edelstein.Protocol.Gameplay.Game.Conversations.Speakers.Facades; using Edelstein.Protocol.Gameplay.Game.Objects.User; @@ -25,9 +24,7 @@ private IDictionary GetDictionaryFromRecord(string record) ); private string GetRecordFromDictionary(IDictionary dictionary) - => string.Join(';', dictionary - .Select(kv => kv.Key + "=" + kv.Value) - .ToImmutableHashSet()); + => string.Join(';', dictionary.Select(kv => kv.Key + "=" + kv.Value)); public void SetRecord(short questID, string value) { diff --git a/src/common/Edelstein.Common.Gameplay.Game/Field.cs b/src/common/Edelstein.Common.Gameplay.Game/Field.cs index 4cf2a01d0..16c4b2825 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Field.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Field.cs @@ -58,7 +58,7 @@ public Field(IFieldManager manager, IFieldTemplate template) private DateTime NextGeneratorTick { get; set; } public override IReadOnlyCollection Objects => - _pools.Values.SelectMany(p => p.Objects).ToImmutableList(); + _pools.Values.SelectMany(p => p.Objects).ToImmutableArray(); public IFieldSplit? GetSplit(IPoint2D position) { @@ -195,7 +195,7 @@ public async Task Leave(IFieldObject obj, Func? getLeavePacket) if (obj.FieldSplit != null) { if (obj is IFieldSplitObserver observer) - foreach (var split in observer.Observing.ToImmutableList()) + foreach (var split in observer.Observing.ToImmutableArray()) await split.Unobserve(observer, true); await obj.FieldSplit.Leave(obj, getLeavePacket: getLeavePacket); } diff --git a/src/common/Edelstein.Common.Gameplay.Game/FieldManager.cs b/src/common/Edelstein.Common.Gameplay.Game/FieldManager.cs index 3cf298be7..f1c1bd0a0 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/FieldManager.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/FieldManager.cs @@ -73,5 +73,5 @@ ITemplateManager npcTemplates } public Task> RetrieveAll() => - Task.FromResult>(_fields.Values.ToImmutableList()); + Task.FromResult>(_fields.Values.ToImmutableArray()); } diff --git a/src/common/Edelstein.Common.Gameplay.Game/FieldSplit.cs b/src/common/Edelstein.Common.Gameplay.Game/FieldSplit.cs index 37bdbfe85..5b754413d 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/FieldSplit.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/FieldSplit.cs @@ -22,8 +22,8 @@ public FieldSplit(int row, int col) public int Row { get; } public int Col { get; } - public override IReadOnlyCollection Objects => _objects.ToImmutableList(); - public IReadOnlyCollection Observers => _observers.ToImmutableList(); + public override IReadOnlyCollection Objects => _objects.ToImmutableArray(); + public IReadOnlyCollection Observers => _observers.ToImmutableArray(); public override Task Enter(IFieldObject obj) => Enter(obj, null); public override Task Leave(IFieldObject obj) => Leave(obj, null); @@ -44,12 +44,12 @@ public async Task Enter(IFieldObject obj, Func? getEnterPacket, Func w != obj) .Where(obj.IsVisibleTo) .Except(fromObservers) - .ToImmutableList(); + .ToImmutableArray(); var oldWatchers = fromObservers .Where(w => w != obj) .Where(obj.IsVisibleTo) .Except(toObservers) - .ToImmutableList(); + .ToImmutableArray(); var enterPacket = getEnterPacket?.Invoke() ?? obj.GetEnterFieldPacket(); var leavePacket = getLeavePacket?.Invoke() ?? obj.GetLeaveFieldPacket(); @@ -63,11 +63,11 @@ public async Task Enter(IFieldObject obj, Func? getEnterPacket, Func s != null) - .ToImmutableList(); + .ToImmutableArray(); var newSplits = enclosingSplits .Except(observer.Observing) .Where(s => s != null) - .ToImmutableList(); + .ToImmutableArray(); await Task.WhenAll(oldSplits.Select(s => s!.Unobserve(observer))); await Task.WhenAll(newSplits.Select(s => s!.Observe(observer))); @@ -139,10 +139,10 @@ private async Task UpdateControllableObjects() var controllers = Observers .OfType() .OrderBy(u => u.Controlled.Count) - .ToImmutableList(); + .ToImmutableArray(); var controlled = Objects .OfType() - .ToImmutableList(); + .ToImmutableArray(); await Task.WhenAll(controlled .Where(c => c.Controller == null || !controllers.Contains(c.Controller)) diff --git a/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/FieldOnPacketUserCharacterInfoRequestPlug.cs b/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/FieldOnPacketUserCharacterInfoRequestPlug.cs index 64bfbfebe..035865712 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/FieldOnPacketUserCharacterInfoRequestPlug.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/FieldOnPacketUserCharacterInfoRequestPlug.cs @@ -31,9 +31,9 @@ public async Task Handle(IPipelineContext ctx, FieldOnPacketUserCharacterInfoReq var wishlist = message.Target.Character.Wishlist.Records .Where(c => c > 0) - .ToImmutableList(); + .ToImmutableArray(); - packet.WriteByte((byte)wishlist.Count); + packet.WriteByte((byte)wishlist.Length); foreach (var commodity in wishlist) packet.WriteInt(commodity); @@ -44,9 +44,9 @@ public async Task Handle(IPipelineContext ctx, FieldOnPacketUserCharacterInfoReq .Select(kv => kv.Value) .Select(i => i.ID) .Where(i => i / 10000 == 301) - .ToList() ?? new List(); + .ToImmutableArray() ?? ImmutableArray.Empty; - packet.WriteInt(chairs.Count); + packet.WriteInt(chairs.Length); foreach (var chair in chairs) packet.WriteInt(chair); diff --git a/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyChangedBossPlug.cs b/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyChangedBossPlug.cs index 13074f85e..71d04c493 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyChangedBossPlug.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyChangedBossPlug.cs @@ -17,7 +17,9 @@ public class NotifyPartyChangedBossPlug : IPipelinePlug public async Task Handle(IPipelineContext ctx, NotifyPartyChangedBoss message) { var users = await _stage.Users.RetrieveAll(); - var partied = users.Where(u => u.Party?.PartyID == message.PartyID).ToImmutableList(); + var partied = users + .Where(u => u.Party?.PartyID == message.PartyID) + .ToImmutableArray(); foreach (var user in partied) { diff --git a/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyDisbandedPlug.cs b/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyDisbandedPlug.cs index 385d1bc72..4eb385934 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyDisbandedPlug.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyDisbandedPlug.cs @@ -17,7 +17,9 @@ public class NotifyPartyDisbandedPlug : IPipelinePlug public async Task Handle(IPipelineContext ctx, NotifyPartyDisbanded message) { var users = await _stage.Users.RetrieveAll(); - var partied = users.Where(u => u.Party?.PartyID == message.PartyID).ToImmutableList(); + var partied = users + .Where(u => u.Party?.PartyID == message.PartyID) + .ToImmutableArray(); foreach (var user in partied) { diff --git a/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberJoinedPlug.cs b/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberJoinedPlug.cs index ec2dec5fb..25f540416 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberJoinedPlug.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberJoinedPlug.cs @@ -22,7 +22,7 @@ public async Task Handle(IPipelineContext ctx, NotifyPartyMemberJoined message) .Where(u => u.Party?.PartyID == message.PartyID || u.Character?.ID == message.PartyMember.CharacterID) - .ToImmutableList(); + .ToImmutableArray(); foreach (var user in partied) { diff --git a/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberUpdateChannelOrFieldPlug.cs b/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberUpdateChannelOrFieldPlug.cs index 37e204b9a..96a055b63 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberUpdateChannelOrFieldPlug.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberUpdateChannelOrFieldPlug.cs @@ -17,7 +17,9 @@ public class NotifyPartyMemberUpdateChannelOrFieldPlug : IPipelinePlug u.Party?.PartyID == message.PartyID).ToImmutableList(); + var partied = users + .Where(u => u.Party?.PartyID == message.PartyID) + .ToImmutableArray(); foreach (var user in partied) { diff --git a/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberUpdateLevelOrJobPlug.cs b/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberUpdateLevelOrJobPlug.cs index 6783fafef..de556b6ff 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberUpdateLevelOrJobPlug.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberUpdateLevelOrJobPlug.cs @@ -17,7 +17,9 @@ public class NotifyPartyMemberUpdateLevelOrJobPlug : IPipelinePlug u.Party?.PartyID == message.PartyID).ToImmutableList(); + var partied = users + .Where(u => u.Party?.PartyID == message.PartyID) + .ToImmutableArray(); foreach (var user in partied) { diff --git a/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberWithdrawnPlug.cs b/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberWithdrawnPlug.cs index 02d2e6af2..40051958d 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberWithdrawnPlug.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Handling/Plugs/NotifyPartyMemberWithdrawnPlug.cs @@ -17,7 +17,9 @@ public class NotifyPartyMemberWithdrawnPlug : IPipelinePlug u.Party?.PartyID == message.PartyID).ToImmutableList(); + var partied = users + .Where(u => u.Party?.PartyID == message.PartyID) + .ToImmutableArray(); foreach (var user in partied) { diff --git a/src/common/Edelstein.Common.Gameplay.Game/Objects/AbstractFieldObject.cs b/src/common/Edelstein.Common.Gameplay.Game/Objects/AbstractFieldObject.cs index 3820af458..d595a13f9 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Objects/AbstractFieldObject.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Objects/AbstractFieldObject.cs @@ -53,7 +53,7 @@ public async Task Hide(bool hidden = true) if (this is not IFieldObjectController controller) return; - foreach (var controlled in controller.Controlled.ToImmutableList()) + foreach (var controlled in controller.Controlled.ToImmutableArray()) await controlled.Control(); } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Objects/AffectedArea/FieldAffectedArea.cs b/src/common/Edelstein.Common.Gameplay.Game/Objects/AffectedArea/FieldAffectedArea.cs index bd51c283d..b4a9c3d80 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Objects/AffectedArea/FieldAffectedArea.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Objects/AffectedArea/FieldAffectedArea.cs @@ -116,7 +116,7 @@ public async Task OnTick(DateTime now) .Where(o => o is not IFieldAffectedArea) .Where(o => _affected.Contains(o)) .Where(o => !Bounds.Intersects(o.Position) || o.Field != Field) - .ToImmutableList()) + .ToImmutableArray()) { _affected.Remove(obj); _ = Leave(obj); @@ -131,7 +131,7 @@ public async Task OnTick(DateTime now) .Where(o => o is not IFieldAffectedArea) .Where(o => !_affected.Contains(o)) .Where(o => Bounds.Intersects(o.Position)) - .ToImmutableList()) + .ToImmutableArray()) { _affected.Add(obj); _ = Enter(obj); diff --git a/src/common/Edelstein.Common.Gameplay.Game/Objects/FieldObjectPool.cs b/src/common/Edelstein.Common.Gameplay.Game/Objects/FieldObjectPool.cs index 9d749a2da..51a7a63c7 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Objects/FieldObjectPool.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Objects/FieldObjectPool.cs @@ -16,7 +16,7 @@ public FieldObjectPool() _runningObjectID = new Queue(Enumerable.Range(1, 30_000)); } - public override IReadOnlyCollection Objects => _objects.Values.ToImmutableList(); + public override IReadOnlyCollection Objects => _objects.Values.ToImmutableArray(); public override Task Enter(IFieldObject obj) { diff --git a/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/FieldMob.cs b/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/FieldMob.cs index 022255dc3..ea445ae64 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/FieldMob.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/FieldMob.cs @@ -238,12 +238,12 @@ public async Task OnTick(DateTime now) var expiredStats = TemporaryStats.Records .Where(kv => kv.Value.DateExpire < now) - .ToImmutableList(); + .ToImmutableArray(); var expiredBurned = TemporaryStats.BurnedInfo .Where(b => b.DateExpire < now) - .ToImmutableList(); + .ToImmutableArray(); - if (expiredStats.Count > 0) + if (expiredStats.Length > 0) { await ModifyTemporaryStats(s => { @@ -252,7 +252,7 @@ await ModifyTemporaryStats(s => }); } - if (expiredBurned.Count > 0) + if (expiredBurned.Length > 0) { await ModifyTemporaryStats(s => { diff --git a/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Stats/Modify/ModifyMobTemporaryStatsContext.cs b/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Stats/Modify/ModifyMobTemporaryStatsContext.cs index bc130a4c5..f789fa0b0 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Stats/Modify/ModifyMobTemporaryStatsContext.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Stats/Modify/ModifyMobTemporaryStatsContext.cs @@ -58,7 +58,7 @@ public void ResetByReason(int reason) foreach (var type in _stats.Records .Where(kv => kv.Value.Reason == reason) .Select(kv => kv.Key) - .ToImmutableList()) + .ToImmutableArray()) ResetByType(type); } @@ -92,7 +92,7 @@ public void ResetBurnedInfoBySkill(int skillID) public void ResetBurnedInfoAll() { - foreach (var burned in _stats.BurnedInfo.ToImmutableList()) + foreach (var burned in _stats.BurnedInfo.ToImmutableArray()) { _stats.BurnedInfo.Remove(burned); HistoryReset.BurnedInfo.Add(burned); diff --git a/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Templates/MobStringTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Templates/MobStringTemplateLoader.cs index 0a0390106..6c85b5305 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Templates/MobStringTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Templates/MobStringTemplateLoader.cs @@ -31,6 +31,7 @@ await _manager.Insert(new TemplateProviderEager( )); }) ?? Array.Empty()); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Templates/MobTemplate.cs b/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Templates/MobTemplate.cs index bb17b1fd1..a1b052940 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Templates/MobTemplate.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Templates/MobTemplate.cs @@ -1,4 +1,5 @@ -using Duey.Abstractions; +using System.Collections.Immutable; +using Duey.Abstractions; using Edelstein.Protocol.Gameplay.Game.Objects; using Edelstein.Protocol.Gameplay.Game.Objects.Mob.Templates; using Edelstein.Protocol.Gameplay.Models.Characters.Skills.Templates; @@ -49,9 +50,9 @@ public MobTemplate(int id, IDataNode node, IDataNode info) var elemCount = 0; var elemAttrs = info.ResolveString("elemAttr") ?? string.Empty; - foreach (var group in elemAttrs.GroupBy(_ => elemCount++ / 2).ToList()) + foreach (var group in elemAttrs.GroupBy(_ => elemCount++ / 2).ToImmutableArray()) { - var groupList = group.ToList(); + var groupList = group.ToImmutableArray(); var elem = groupList[0] switch { 'P' => Element.Physical, diff --git a/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Templates/MobTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Templates/MobTemplateLoader.cs index cd2edf828..9dcded153 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Templates/MobTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Objects/Mob/Templates/MobTemplateLoader.cs @@ -37,6 +37,7 @@ await _manager.Insert(new TemplateProviderLazy( )); })); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCShopTemplate.cs b/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCShopTemplate.cs index d53ae63f9..76e79d17e 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCShopTemplate.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCShopTemplate.cs @@ -16,6 +16,6 @@ public NPCShopTemplate(int id, IDataNode property) ID = id; Items = property.Children .Select(p => (INPCShopItem)new NPCShopTemplateItem(Convert.ToInt32(p.Name), p.Cache())) - .ToImmutableSortedSet(new NPCShopTemplateItemComparer()) ?? ImmutableSortedSet.Empty; + .ToImmutableSortedSet(new NPCShopTemplateItemComparer()); } } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCShopTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCShopTemplateLoader.cs index dcc7952f3..db1da473b 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCShopTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCShopTemplateLoader.cs @@ -27,6 +27,7 @@ await _manager.Insert(new TemplateProviderEager( )); }) ?? Array.Empty()); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCStringTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCStringTemplateLoader.cs index 43d7293cd..5af1989b1 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCStringTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCStringTemplateLoader.cs @@ -31,6 +31,7 @@ await _manager.Insert(new TemplateProviderEager( )); }) ?? Array.Empty()); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCTemplate.cs b/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCTemplate.cs index 7e6b468e6..720d91dfc 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCTemplate.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCTemplate.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Frozen; using Duey.Abstractions; using Edelstein.Protocol.Gameplay.Game.Objects.NPC.Templates; @@ -22,8 +22,8 @@ public NPCTemplate(int id, IDataNode node, IDataNode info) Scripts = info.ResolvePath("script")?.Children .Where(p => p.Name.All(char.IsDigit)) // 1057006 causes errors .Select(p => new NPCTemplateScript(Convert.ToInt32(p.Name), p)) - .ToImmutableList() - ?? ImmutableList.Empty; + .ToFrozenSet() + ?? FrozenSet.Empty; } public int ID { get; } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCTemplateLoader.cs index 75981588c..97477c70e 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Objects/NPC/Templates/NPCTemplateLoader.cs @@ -36,6 +36,7 @@ await _manager.Insert(new TemplateProviderLazy( )); })); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Objects/User/FieldUser.cs b/src/common/Edelstein.Common.Gameplay.Game/Objects/User/FieldUser.cs index 3525e94cc..3d5ecb406 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Objects/User/FieldUser.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Objects/User/FieldUser.cs @@ -479,7 +479,7 @@ await ModifyTemporaryStats(s => { foreach (var kv in Character.TemporaryStats.Records .Where(kv => kv.Value.DateExpire < now) - .ToImmutableList()) + .ToImmutableArray()) s.ResetByType(kv.Key); if ((Character.TemporaryStats.EnergyChargedRecord?.IsActive() ?? false) && diff --git a/src/common/Edelstein.Common.Gameplay.Game/Objects/User/FieldUserStats.cs b/src/common/Edelstein.Common.Gameplay.Game/Objects/User/FieldUserStats.cs index 5f3d7f701..cc2390080 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Objects/User/FieldUserStats.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Objects/User/FieldUserStats.cs @@ -254,7 +254,7 @@ private async Task ApplyItems(IFieldUser user) .Where(kv => kv.Key < 0) .Where(kv => kv.Value is ItemSlotEquip) .Select(kv => (kv.Key, (ItemSlotEquip)kv.Value)) - .ToImmutableList() ?? ImmutableList<(short Key, ItemSlotEquip)>.Empty; + .ToImmutableArray() ?? ImmutableArray<(short Key, ItemSlotEquip)>.Empty; var setCompletion = new Dictionary(); foreach (var (slot, item) in equipped) diff --git a/src/common/Edelstein.Common.Gameplay.Game/Quests/QuestManager.cs b/src/common/Edelstein.Common.Gameplay.Game/Quests/QuestManager.cs index cf9bc58f2..7a6b8b6aa 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Quests/QuestManager.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Quests/QuestManager.cs @@ -184,7 +184,9 @@ private async Task Act(QuestAction action, IQuestTemplate templ var actTemplate = action == QuestAction.Start ? template.ActStart : template.ActEnd; - var rewardsBase = actTemplate.Items?.Where(i => i.Prob == null).ToImmutableList(); + var rewardsBase = actTemplate.Items? + .Where(i => i.Prob == null) + .ToImmutableArray() ?? ImmutableArray.Empty; var rewardsRandom = actTemplate.Items? .Where(i => i.Gender is null or 2 || i.Gender == user.Character.Gender) .Where(i => @@ -242,11 +244,13 @@ private async Task Act(QuestAction action, IQuestTemplate templ return check; }) .Where(i => i.Prob > 0) - .ToImmutableList(); - var rewardsSelect = actTemplate.Items?.Where(i => i.Prob == -1).ToDictionary( - i => i.Order, - i => i - ); + .ToImmutableArray() ?? ImmutableArray.Empty; + var rewardsSelect = actTemplate.Items? + .Where(i => i.Prob == -1) + .ToImmutableDictionary( + i => i.Order, + i => i + ); var rewardSelect = select != null ? rewardsSelect?.GetValueOrDefault(select.Value) : null; var rewardsCheck = new List>(); @@ -347,7 +351,7 @@ private async Task Act(QuestAction action, IQuestTemplate templ await user.ModifyInventory(inventory); await user.Effect(new QuestEffect(rewards .Select(r => Tuple.Create(r.ItemID, r.Count)) - .ToImmutableList())); + .ToImmutableArray())); } return QuestResultType.Success; diff --git a/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/ModifiedQuestTimeTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/ModifiedQuestTimeTemplateLoader.cs index 6b45cd99b..932874a51 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/ModifiedQuestTimeTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/ModifiedQuestTimeTemplateLoader.cs @@ -27,6 +27,7 @@ await _manager.Insert(new TemplateProviderEager( )); }) ?? Array.Empty()); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateAct.cs b/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateAct.cs index b14e2b03f..60d9cd8c5 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateAct.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateAct.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Frozen; using Duey.Abstractions; using Edelstein.Protocol.Gameplay.Game.Quests.Templates; @@ -21,13 +21,13 @@ public QuestTemplateAct(IDataNode? node) Items = node?.ResolvePath("item")?.Children .Select(p => (IQuestTemplateActItem)new QuestTemplateActItem(Convert.ToInt32(p.Name), p.Cache())) - .ToImmutableList(); + .ToFrozenSet(); Skills = node?.ResolvePath("skill")?.Children .Select(p => (IQuestTemplateActSkill)new QuestTemplateActSkill(p.Cache())) - .ToImmutableList(); + .ToFrozenSet(); SP = node?.ResolvePath("sp")?.Children .Select(p => (IQuestTemplateActSP)new QuestTemplateActSP(p.Cache())) - .ToImmutableList(); + .ToFrozenSet(); } public int? IncEXP { get; } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateActSP.cs b/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateActSP.cs index 01893c777..47d187aaa 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateActSP.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateActSP.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Frozen; using Duey.Abstractions; using Edelstein.Protocol.Gameplay.Game.Quests.Templates; @@ -13,7 +13,7 @@ public QuestTemplateActSP(IDataNode node) .Select(p => p.ResolveInt()) .Where(i => i.HasValue) .Select(i => i.Value) - .ToImmutableList(); + .ToFrozenSet(); } public int SP { get; } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateActSkill.cs b/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateActSkill.cs index 382171b5e..86a4b842c 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateActSkill.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateActSkill.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Frozen; using Duey.Abstractions; using Edelstein.Protocol.Gameplay.Game.Quests.Templates; @@ -16,7 +16,7 @@ public QuestTemplateActSkill(IDataNode node) .Select(p => p.ResolveInt()) .Where(i => i.HasValue) .Select(i => i.Value) - .ToImmutableList(); + .ToFrozenSet(); } public int SkillID { get; } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateCheck.cs b/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateCheck.cs index 0b84bb698..9d3e2e32f 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateCheck.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateCheck.cs @@ -1,4 +1,5 @@ -using System.Collections.Immutable; +using System.Collections.Frozen; +using System.Collections.Immutable; using System.Globalization; using Duey.Abstractions; using Edelstein.Protocol.Gameplay.Game.Quests.Templates; @@ -33,12 +34,12 @@ public QuestTemplateCheck(IDataNode? node) Jobs = node?.ResolvePath("job")?.Children .Select(c => c.ResolveInt() ?? -1) - .ToImmutableList(); + .ToFrozenSet(); SubJobFlags = node?.ResolveInt("subJobFlags"); CheckItem = node?.ResolvePath("item")?.Children .Select(p => (IQuestTemplateCheckItem)new QuestTemplateCheckItem(p.Cache())) - .ToImmutableList(); + .ToFrozenSet(); CheckMob = node?.ResolvePath("mob")?.Children .Select(p => (IQuestTemplateCheckMob)new QuestTemplateCheckMob(Convert.ToInt32(p.Name), p.Cache())) .ToImmutableSortedSet(new QuestTemplateCheckMobComparer()); diff --git a/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateLoader.cs index 27dbb60ac..c9c9ebd72 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Quests/Templates/QuestTemplateLoader.cs @@ -38,6 +38,7 @@ await _manager.Insert(new TemplateProviderEager( )); }) ?? Array.Empty()); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Spatial/FieldSpace.cs b/src/common/Edelstein.Common.Gameplay.Game/Spatial/FieldSpace.cs index 6dfed44d3..bde7be42f 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Spatial/FieldSpace.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Spatial/FieldSpace.cs @@ -19,13 +19,13 @@ public FieldSpace(IRectangle2D bounds) _space = new RBushSpace2D(); } - public IReadOnlyCollection Objects => _objects.Values.ToImmutableList(); + public IReadOnlyCollection Objects => _objects.Values.ToImmutableArray(); public IRectangle2D Bounds { get; } public void Insert(IEnumerable obj) { - var objects = obj.ToImmutableList(); + var objects = obj.ToImmutableArray(); foreach (var o in objects) _objects.Add(o.ID, o); _space.Insert(objects); diff --git a/src/common/Edelstein.Common.Gameplay.Game/Templates/FieldStringTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay.Game/Templates/FieldStringTemplateLoader.cs index 3d5de8fa7..a0719d42f 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Templates/FieldStringTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Templates/FieldStringTemplateLoader.cs @@ -36,6 +36,7 @@ await _manager.Insert(new TemplateProviderEager( )); })); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay.Game/Templates/FieldTemplate.cs b/src/common/Edelstein.Common.Gameplay.Game/Templates/FieldTemplate.cs index 41ceb803f..f130d9b07 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Templates/FieldTemplate.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Templates/FieldTemplate.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Frozen; using Duey.Abstractions; using Edelstein.Common.Gameplay.Game.Spatial; using Edelstein.Common.Utilities.Spatial; @@ -38,11 +38,11 @@ IDataNode info .SelectMany(c => c.Children) .SelectMany(c => c.Children) .Select(p => new FieldFoothold(Convert.ToInt32(p.Name), p.Cache())) - .ToImmutableList(); + .ToFrozenSet(); var portals = portal.Children .Select(p => new FieldPortal(Convert.ToInt32(p.Name), p.Cache())) - .ToImmutableList(); - + .ToFrozenSet(); + var leftTop = new Point2D( footholds.Min(f => f.MinX), footholds.Min(f => f.MinY) @@ -74,7 +74,7 @@ IDataNode info Life = life.Children .Select(p => new FieldTemplateLife(p.Cache())) - .ToImmutableList(); + .ToFrozenSet(); MobRate = info.ResolveDouble("mobRate") ?? 1.0; diff --git a/src/common/Edelstein.Common.Gameplay.Game/Templates/FieldTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay.Game/Templates/FieldTemplateLoader.cs index 4f2d2fe35..0d3788054 100644 --- a/src/common/Edelstein.Common.Gameplay.Game/Templates/FieldTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay.Game/Templates/FieldTemplateLoader.cs @@ -41,6 +41,7 @@ await _manager.Insert(new TemplateProviderLazy( )); })); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay.Game/packages.lock.json b/src/common/Edelstein.Common.Gameplay.Game/packages.lock.json new file mode 100644 index 000000000..b4f08f156 --- /dev/null +++ b/src/common/Edelstein.Common.Gameplay.Game/packages.lock.json @@ -0,0 +1,175 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Foundatio": { + "type": "Direct", + "requested": "[10.6.1, )", + "resolved": "10.6.1", + "contentHash": "c5LXLzjaCwBlzozpIiumQeuFhalZgE5L38uaGu6IVlB8HMOd2Wnf7WmylRUo15BWySgqi/mpoq2ikVZCUrrpKg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "6.0.0", + "Microsoft.Extensions.DependencyInjection": "6.0.0", + "Microsoft.Extensions.Logging.Abstractions": "6.0.0", + "System.Diagnostics.DiagnosticSource": "6.0.0", + "System.Text.Json": "6.0.0" + } + }, + "Stateless": { + "type": "Direct", + "requested": "[5.13.0, )", + "resolved": "5.13.0", + "contentHash": "M4Rb4b31TUEfhCd4en0WlRfuFgQ2rwva9e1CuXnto5vNGvRsNVimHENnvjegf6nKG9ZH+51McAZ/huqRtTziYg==" + }, + "Duey.Abstractions": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "MathParser.org-mXparser": { + "type": "Transitive", + "resolved": "4.4.3", + "contentHash": "QhHsP4nzyjC3G2kJ+dbT3NFuE0M0rKfa0wQjCcn5UyK0VnXN8OeYMy9KEYGzNKI9ealcwOQJd/4Xcq4PE+Vl7g==" + }, + "Microsoft.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==" + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==" + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.IO.RecyclableMemoryStream": { + "type": "Transitive", + "resolved": "2.3.2", + "contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q==" + }, + "RBush": { + "type": "Transitive", + "resolved": "3.2.0", + "contentHash": "ijGh9N0zZ7JfXk3oQkWCwK8SwSSByexbyh/MjbCjNxOft9eG5ZqKC1vdgiYq78h4IZRFmN4s3JZ/b10Jipud5w==" + }, + "System.Diagnostics.DiagnosticSource": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "Vg8eB5Tawm1IFqj4TVK1czJX89rhFxJo9ELqc/Eiq0eXy13RK00eubyU6TJE6y+GQXjyV5gSfiewDUZjQgSE0w==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "zaJsHfESQvJ11vbXnNlkrR46IaMULk/gHxYsJphzSF+07kTjPHv+Oc14w6QEOfo3Q4hqLJgStUaYB9DBl0TmWg==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encodings.Web": "6.0.0" + } + }, + "edelstein.common.constants": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )" + } + }, + "edelstein.common.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Common.Constants": "[1.0.0, )", + "Edelstein.Common.Utilities": "[1.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "MathParser.org-mXparser": "[4.4.3, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "edelstein.common.utilities": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )", + "Microsoft.IO.RecyclableMemoryStream": "[2.3.2, )", + "RBush": "[3.2.0, )" + } + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.gameplay.game": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Auth": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.scripting": { + "type": "Project" + }, + "edelstein.protocol.services.auth": { + "type": "Project" + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/common/Edelstein.Common.Gameplay.Login/Handling/Plugs/UserOnPacketSelectWorldPlug.cs b/src/common/Edelstein.Common.Gameplay.Login/Handling/Plugs/UserOnPacketSelectWorldPlug.cs index e870872f1..fff4413c4 100644 --- a/src/common/Edelstein.Common.Gameplay.Login/Handling/Plugs/UserOnPacketSelectWorldPlug.cs +++ b/src/common/Edelstein.Common.Gameplay.Login/Handling/Plugs/UserOnPacketSelectWorldPlug.cs @@ -55,7 +55,7 @@ public async Task Handle(IPipelineContext ctx, UserOnPacketSelectWorld message) var characters = (await _characterRepository .RetrieveAllByAccountWorld(accountWorld.ID)) - .ToImmutableList(); + .ToImmutableArray(); using var packet = new PacketWriter(PacketSendOperations.SelectWorldResult); packet.WriteByte((byte)result); @@ -67,7 +67,7 @@ public async Task Handle(IPipelineContext ctx, UserOnPacketSelectWorld message) message.User.SelectedWorldID = (byte)gameStage.Server!.WorldID; message.User.SelectedChannelID = (byte)gameStage.Server!.ChannelID; - packet.WriteByte((byte)characters.Count); + packet.WriteByte((byte)characters.Length); foreach (var character in characters) { diff --git a/src/common/Edelstein.Common.Gameplay.Login/Handling/Plugs/UserOnPacketWorldRequestPlug.cs b/src/common/Edelstein.Common.Gameplay.Login/Handling/Plugs/UserOnPacketWorldRequestPlug.cs index 62c5f7b6d..685539810 100644 --- a/src/common/Edelstein.Common.Gameplay.Login/Handling/Plugs/UserOnPacketWorldRequestPlug.cs +++ b/src/common/Edelstein.Common.Gameplay.Login/Handling/Plugs/UserOnPacketWorldRequestPlug.cs @@ -48,9 +48,9 @@ public async Task Handle(IPipelineContext ctx, UserOnPacketWorldRequest message) var gameStages = (await _serverService.GetGameByWorld(new ServerGetGameByWorldRequest(worldID))).Servers .OrderBy(s => s.ChannelID) - .ToImmutableList(); + .ToImmutableArray(); - packet.WriteByte((byte)gameStages.Count); + packet.WriteByte((byte)gameStages.Length); foreach (var stage in gameStages) { diff --git a/src/common/Edelstein.Common.Gameplay.Login/Templates/WorldTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay.Login/Templates/WorldTemplateLoader.cs index ccf5f55c4..56e2569c1 100644 --- a/src/common/Edelstein.Common.Gameplay.Login/Templates/WorldTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay.Login/Templates/WorldTemplateLoader.cs @@ -31,6 +31,7 @@ await _manager.Insert(new TemplateProviderLazy( )); } + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay.Login/packages.lock.json b/src/common/Edelstein.Common.Gameplay.Login/packages.lock.json new file mode 100644 index 000000000..d806566d7 --- /dev/null +++ b/src/common/Edelstein.Common.Gameplay.Login/packages.lock.json @@ -0,0 +1,109 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "BCrypt.Net-Next": { + "type": "Direct", + "requested": "[4.0.3, )", + "resolved": "4.0.3", + "contentHash": "W+U9WvmZQgi5cX6FS5GDtDoPzUCV4LkBLkywq/kRZhuDwcbavOzcDAr3LXJFqHUi952Yj3LEYoWW0jbEUQChsA==" + }, + "Duey.Abstractions": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "MathParser.org-mXparser": { + "type": "Transitive", + "resolved": "4.4.3", + "contentHash": "QhHsP4nzyjC3G2kJ+dbT3NFuE0M0rKfa0wQjCcn5UyK0VnXN8OeYMy9KEYGzNKI9ealcwOQJd/4Xcq4PE+Vl7g==" + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.IO.RecyclableMemoryStream": { + "type": "Transitive", + "resolved": "2.3.2", + "contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q==" + }, + "RBush": { + "type": "Transitive", + "resolved": "3.2.0", + "contentHash": "ijGh9N0zZ7JfXk3oQkWCwK8SwSSByexbyh/MjbCjNxOft9eG5ZqKC1vdgiYq78h4IZRFmN4s3JZ/b10Jipud5w==" + }, + "edelstein.common.constants": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )" + } + }, + "edelstein.common.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Common.Constants": "[1.0.0, )", + "Edelstein.Common.Utilities": "[1.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "MathParser.org-mXparser": "[4.4.3, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "edelstein.common.utilities": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )", + "Microsoft.IO.RecyclableMemoryStream": "[2.3.2, )", + "RBush": "[3.2.0, )" + } + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.gameplay.login": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Auth": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.auth": { + "type": "Project" + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/CashPackageTemplate.cs b/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/CashPackageTemplate.cs index d56117f62..1996040c5 100644 --- a/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/CashPackageTemplate.cs +++ b/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/CashPackageTemplate.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Frozen; using Duey.Abstractions; using Edelstein.Protocol.Gameplay.Shop.Commodities.Templates; @@ -15,6 +15,6 @@ public CashPackageTemplate(int id, IDataNode node) SN = node .ResolvePath("SN")? .Select(c => c.ResolveInt() ?? 0) - .ToImmutableList() ?? ImmutableList.Empty; + .ToFrozenSet() ?? FrozenSet.Empty; } } diff --git a/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/CashPackageTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/CashPackageTemplateLoader.cs index 3d583451a..77e929f43 100644 --- a/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/CashPackageTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/CashPackageTemplateLoader.cs @@ -28,6 +28,7 @@ await _manager.Insert(new TemplateProviderLazy( )); }) ?? Array.Empty()); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/CommodityTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/CommodityTemplateLoader.cs index f5d8cc56d..25476e7ae 100644 --- a/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/CommodityTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/CommodityTemplateLoader.cs @@ -27,6 +27,7 @@ await _manager.Insert(new TemplateProviderLazy( )); }) ?? Array.Empty()); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/ModifiedCommodityTemplate.cs b/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/ModifiedCommodityTemplate.cs index b2cf8a370..f7041a6de 100644 --- a/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/ModifiedCommodityTemplate.cs +++ b/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/ModifiedCommodityTemplate.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Frozen; using Duey.Abstractions; using Edelstein.Protocol.Gameplay.Shop.Commodities; using Edelstein.Protocol.Utilities.Templates; @@ -39,7 +39,7 @@ public ModifiedCommodityTemplate(int sn, IDataNode node) PackageSN = node .ResolvePath("PackageSN")? .Select(c => c.ResolveInt() ?? 0) - .ToImmutableList() ?? null; + .ToFrozenSet() ?? null; if (ItemID != null) Flags |= CommodityFlags.ItemID; if (Count != null) Flags |= CommodityFlags.Count; diff --git a/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/ModifiedCommodityTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/ModifiedCommodityTemplateLoader.cs index 4fcb31eb9..c1d00c4b9 100644 --- a/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/ModifiedCommodityTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/ModifiedCommodityTemplateLoader.cs @@ -27,6 +27,7 @@ await _manager.Insert(new TemplateProviderEager( )); }) ?? Array.Empty()); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/NotSaleTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/NotSaleTemplateLoader.cs index 792906bfe..ee1cb66d1 100644 --- a/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/NotSaleTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay.Shop/Commodities/Templates/NotSaleTemplateLoader.cs @@ -27,6 +27,7 @@ await _manager.Insert(new TemplateProviderEager( )); }) ?? Array.Empty()); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay.Shop/packages.lock.json b/src/common/Edelstein.Common.Gameplay.Shop/packages.lock.json new file mode 100644 index 000000000..9f927a4fb --- /dev/null +++ b/src/common/Edelstein.Common.Gameplay.Shop/packages.lock.json @@ -0,0 +1,104 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Duey.Abstractions": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "MathParser.org-mXparser": { + "type": "Transitive", + "resolved": "4.4.3", + "contentHash": "QhHsP4nzyjC3G2kJ+dbT3NFuE0M0rKfa0wQjCcn5UyK0VnXN8OeYMy9KEYGzNKI9ealcwOQJd/4Xcq4PE+Vl7g==" + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.IO.RecyclableMemoryStream": { + "type": "Transitive", + "resolved": "2.3.2", + "contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q==" + }, + "RBush": { + "type": "Transitive", + "resolved": "3.2.0", + "contentHash": "ijGh9N0zZ7JfXk3oQkWCwK8SwSSByexbyh/MjbCjNxOft9eG5ZqKC1vdgiYq78h4IZRFmN4s3JZ/b10Jipud5w==" + }, + "edelstein.common.constants": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )" + } + }, + "edelstein.common.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Common.Constants": "[1.0.0, )", + "Edelstein.Common.Utilities": "[1.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "MathParser.org-mXparser": "[4.4.3, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "edelstein.common.utilities": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )", + "Microsoft.IO.RecyclableMemoryStream": "[2.3.2, )", + "RBush": "[3.2.0, )" + } + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.gameplay.shop": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Auth": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.auth": { + "type": "Project" + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/common/Edelstein.Common.Gameplay.Trade/packages.lock.json b/src/common/Edelstein.Common.Gameplay.Trade/packages.lock.json new file mode 100644 index 000000000..640de9a59 --- /dev/null +++ b/src/common/Edelstein.Common.Gameplay.Trade/packages.lock.json @@ -0,0 +1,104 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Duey.Abstractions": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "MathParser.org-mXparser": { + "type": "Transitive", + "resolved": "4.4.3", + "contentHash": "QhHsP4nzyjC3G2kJ+dbT3NFuE0M0rKfa0wQjCcn5UyK0VnXN8OeYMy9KEYGzNKI9ealcwOQJd/4Xcq4PE+Vl7g==" + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.IO.RecyclableMemoryStream": { + "type": "Transitive", + "resolved": "2.3.2", + "contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q==" + }, + "RBush": { + "type": "Transitive", + "resolved": "3.2.0", + "contentHash": "ijGh9N0zZ7JfXk3oQkWCwK8SwSSByexbyh/MjbCjNxOft9eG5ZqKC1vdgiYq78h4IZRFmN4s3JZ/b10Jipud5w==" + }, + "edelstein.common.constants": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )" + } + }, + "edelstein.common.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Common.Constants": "[1.0.0, )", + "Edelstein.Common.Utilities": "[1.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "MathParser.org-mXparser": "[4.4.3, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "edelstein.common.utilities": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )", + "Microsoft.IO.RecyclableMemoryStream": "[2.3.2, )", + "RBush": "[3.2.0, )" + } + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.gameplay.trade": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Auth": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.auth": { + "type": "Project" + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Modify/ModifySkillContext.cs b/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Modify/ModifySkillContext.cs index f2d2432b1..9e19af9d0 100644 --- a/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Modify/ModifySkillContext.cs +++ b/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Modify/ModifySkillContext.cs @@ -1,4 +1,5 @@ -using Edelstein.Common.Constants; +using System.Collections.Immutable; +using Edelstein.Common.Constants; using Edelstein.Common.Utilities.Packets; using Edelstein.Protocol.Gameplay.Models.Characters; using Edelstein.Protocol.Gameplay.Models.Characters.Skills; @@ -59,13 +60,13 @@ public void ResetByJobLevel(int jobLevel) { foreach (var kv in _character.Skills.Records .Where(kv => JobConstants.GetJobLevel(jobLevel) == jobLevel) - .ToList()) + .ToImmutableArray()) Set(kv.Key, 0); } public void ResetAll() { - foreach (var kv in _character.Skills.Records.ToList()) + foreach (var kv in _character.Skills.Records.ToImmutableArray()) Set(kv.Key, 0); } diff --git a/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Templates/SkillStringTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Templates/SkillStringTemplateLoader.cs index 41794ddf2..c30a53555 100644 --- a/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Templates/SkillStringTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Templates/SkillStringTemplateLoader.cs @@ -33,6 +33,7 @@ await _manager.Insert(new TemplateProviderEager( )); }) ?? Array.Empty()); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Templates/SkillTemplate.cs b/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Templates/SkillTemplate.cs index 3c4b3eb21..e0f4602f4 100644 --- a/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Templates/SkillTemplate.cs +++ b/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Templates/SkillTemplate.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Frozen; using Duey.Abstractions; using Edelstein.Protocol.Gameplay.Models.Characters.Skills.Templates; @@ -57,12 +57,12 @@ public SkillTemplate(int id, IDataNode node) PsdSkill = node.ResolvePath("psdSkill")? .Select(c => Convert.ToInt32(c.Name)) - .ToImmutableList() ?? ImmutableList.Empty; + .ToFrozenSet() ?? FrozenSet.Empty; ReqSkill = node.ResolvePath("req")?.Children - .ToImmutableDictionary( + .ToFrozenDictionary( c => Convert.ToInt32(c.Name), c => c.ResolveInt() ?? 0 - ) ?? ImmutableDictionary.Empty; + ) ?? FrozenDictionary.Empty; var common = node.ResolvePath("common"); @@ -78,7 +78,7 @@ public SkillTemplate(int id, IDataNode node) Levels = Enumerable .Range(1, maxLevel + (IsCombatOrders ? 2 : 0)) - .ToImmutableDictionary( + .ToFrozenDictionary( i => i, i => (ISkillTemplateLevel)new SkillTemplateLevelCommon(i, common.Cache()) ); @@ -88,10 +88,10 @@ public SkillTemplate(int id, IDataNode node) { var level = node.ResolvePath("level"); - Levels = level?.Children.ToImmutableDictionary( + Levels = level?.Children.ToFrozenDictionary( c => Convert.ToInt32(c.Name), c => (ISkillTemplateLevel)new SkillTemplateLevel(Convert.ToInt32(c.Name), c.Cache()) - ) ?? ImmutableDictionary.Empty; + ) ?? FrozenDictionary.Empty; MaxLevel = (short)(Levels?.Count ?? 0); } } diff --git a/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Templates/SkillTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Templates/SkillTemplateLoader.cs index e7083a414..3d0f9b597 100644 --- a/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Templates/SkillTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay/Models/Characters/Skills/Templates/SkillTemplateLoader.cs @@ -35,6 +35,7 @@ await _manager.Insert(new TemplateProviderLazy( )); })); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay/Models/Characters/Stats/Modify/ModifyTemporaryStatContext.cs b/src/common/Edelstein.Common.Gameplay/Models/Characters/Stats/Modify/ModifyTemporaryStatContext.cs index 741bacbf6..7da357ac4 100644 --- a/src/common/Edelstein.Common.Gameplay/Models/Characters/Stats/Modify/ModifyTemporaryStatContext.cs +++ b/src/common/Edelstein.Common.Gameplay/Models/Characters/Stats/Modify/ModifyTemporaryStatContext.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Frozen; using Edelstein.Common.Gameplay.Models.Characters.Stats.TwoState; using Edelstein.Protocol.Gameplay.Models.Characters; using Edelstein.Protocol.Gameplay.Models.Characters.Stats; @@ -228,7 +228,7 @@ public void ResetByReason(int reason) foreach (var type in _stats.Records .Where(kv => kv.Value.Reason == reason) .Select(kv => kv.Key) - .ToImmutableList()) + .ToFrozenSet()) ResetByType(type); } diff --git a/src/common/Edelstein.Common.Gameplay/Models/Inventories/InventoryManager.cs b/src/common/Edelstein.Common.Gameplay/Models/Inventories/InventoryManager.cs index 950db6b27..068bc2ecb 100644 --- a/src/common/Edelstein.Common.Gameplay/Models/Inventories/InventoryManager.cs +++ b/src/common/Edelstein.Common.Gameplay/Models/Inventories/InventoryManager.cs @@ -51,7 +51,7 @@ public bool HasSlotFor(ICharacterInventories inventory, int templateID, short co public bool HasSlotFor(ICharacterInventories inventory, ICollection> templates) => templates .GroupBy(t => GetTypeByID(t.Item1)) - .All(g => HasSlotFor(inventory[g.Key], g.ToImmutableList())); + .All(g => HasSlotFor(inventory[g.Key], g.ToImmutableArray())); public bool HasSlotFor(ICharacterInventories inventory, IItemTemplate template) => HasSlotFor(inventory[GetTypeByID(template.ID)], template.ID); @@ -62,7 +62,7 @@ public bool HasSlotFor(ICharacterInventories inventory, IItemTemplate template, public bool HasSlotFor(ICharacterInventories inventory, ICollection> templates) => templates .GroupBy(t => GetTypeByID(t.Item1.ID)) - .All(g => HasSlotFor(inventory[g.Key], g.ToImmutableList())); + .All(g => HasSlotFor(inventory[g.Key], g.ToImmutableArray())); public bool HasSlotFor(ICharacterInventories inventory, IItemSlot item) => HasSlotFor(inventory[GetTypeByID(item.ID)], item); @@ -70,7 +70,7 @@ public bool HasSlotFor(ICharacterInventories inventory, IItemSlot item) public bool HasSlotFor(ICharacterInventories inventory, ICollection items) => items .GroupBy(t => GetTypeByID(t.ID)) - .All(g => HasSlotFor(inventory[g.Key], g.ToImmutableList())); + .All(g => HasSlotFor(inventory[g.Key], g.ToImmutableArray())); public int CountItem(IItemInventory? inventory, int templateID) => inventory?.Items @@ -110,7 +110,7 @@ public bool HasSlotFor(IItemInventory? inventory, int templateID, short count) public bool HasSlotFor(IItemInventory? inventory, ICollection> templates) => HasSlotFor(inventory, templates .Select(t => Tuple.Create(_templates.Retrieve(t.Item1).Result!, t.Item2)) - .ToImmutableList()); + .ToImmutableArray()); public bool HasSlotFor(IItemInventory? inventory, IItemTemplate template) => HasSlotFor(inventory, template, 1); @@ -143,7 +143,7 @@ public bool HasSlotFor(IItemInventory? inventory, ICollection i) - .ToImmutableList()); + .ToImmutableArray()); public bool HasSlotFor(IItemInventory? inventory, IItemSlot item) => HasSlotFor(inventory, ImmutableList.Create(item)); @@ -155,7 +155,7 @@ public bool HasSlotFor(IItemInventory? inventory, ICollection items) var bundles = items .OfType() .Where(b => !ItemConstants.IsRechargeableItem(b.ID)) - .ToImmutableList(); + .ToImmutableArray(); var bundlesMerged = new List(); foreach (var bundle in bundles) diff --git a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/ItemStringTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/ItemStringTemplateLoader.cs index f60be26d1..a81e231ae 100644 --- a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/ItemStringTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/ItemStringTemplateLoader.cs @@ -64,6 +64,7 @@ await _manager.Insert(new TemplateProviderEager( )); }) ?? Array.Empty()); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/ItemTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/ItemTemplateLoader.cs index e347d78b7..e91eacd81 100644 --- a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/ItemTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/ItemTemplateLoader.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Frozen; using Duey.Abstractions; using Edelstein.Common.Utilities.Templates; using Edelstein.Protocol.Gameplay.Models.Inventories.Templates; @@ -62,7 +62,7 @@ await _manager.Insert(new TemplateProviderLazy( () => new ItemEquipTemplate(id, node) )); }) - .ToImmutableList(); + .ToFrozenSet(); var loadBundle = nodesBundle .Where(n => n != null) .SelectMany(n => n!.Children) @@ -77,7 +77,7 @@ await _manager.Insert(new TemplateProviderLazy( () => new ItemBundleTemplate(id, node) )); }) - .ToImmutableList(); + .ToFrozenSet(); var loadPet = nodesPet? .Select(async n => { @@ -89,12 +89,13 @@ await _manager.Insert(new TemplateProviderLazy( () => new ItemPetTemplate(id, node) )); }) - .ToImmutableList(); + .ToFrozenSet(); await Task.WhenAll(loadEquip); await Task.WhenAll(loadBundle); if (loadPet != null) await Task.WhenAll(loadPet); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Options/ItemOptionTemplate.cs b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Options/ItemOptionTemplate.cs index a7e0f462a..284ce13b9 100644 --- a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Options/ItemOptionTemplate.cs +++ b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Options/ItemOptionTemplate.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Frozen; using Duey.Abstractions; using Edelstein.Protocol.Gameplay.Models.Inventories.Templates.Options; @@ -19,10 +19,10 @@ public ItemOptionTemplate(int id, IDataNode node) ReqLevel = info?.ResolveShort("reqLevel") ?? 0; Levels = level?.Children - .ToImmutableDictionary( + .ToFrozenDictionary( l => Convert.ToInt32(l.Name), l => (IItemOptionTemplateLevel)new ItemOptionTemplateLevel(Convert.ToInt32(l.Name), l.Cache()) - ) ?? ImmutableDictionary.Empty; + ) ?? FrozenDictionary.Empty; } public int ID { get; } diff --git a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Options/ItemOptionTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Options/ItemOptionTemplateLoader.cs index 9d7625b89..e4d352cc7 100644 --- a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Options/ItemOptionTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Options/ItemOptionTemplateLoader.cs @@ -31,6 +31,7 @@ await _manager.Insert(new TemplateProviderEager( )); }) ?? Array.Empty()); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Sets/ItemSetTemplate.cs b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Sets/ItemSetTemplate.cs index 1bc5865db..90110920b 100644 --- a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Sets/ItemSetTemplate.cs +++ b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Sets/ItemSetTemplate.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Frozen; using Duey.Abstractions; using Edelstein.Protocol.Gameplay.Models.Inventories.Templates.Sets; @@ -14,12 +14,12 @@ public ItemSetTemplate(int id, IDataNode node) Items = node.ResolvePath("ItemID")?.Children .Select(c => c.ResolveInt() ?? 0) - .ToImmutableList() ?? ImmutableList.Empty; + .ToFrozenSet() ?? FrozenSet.Empty; Effects = node.ResolvePath("Effect")?.Children - .ToImmutableDictionary( + .ToFrozenDictionary( c => Convert.ToInt32(c.Name), c => (IItemSetTemplateEffect)new ItemSetTemplateEffect(Convert.ToInt32(c.Name), c.Cache()) - ) ?? ImmutableDictionary.Empty; + ) ?? FrozenDictionary.Empty; } public int ID { get; } diff --git a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Sets/ItemSetTemplateLoader.cs b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Sets/ItemSetTemplateLoader.cs index 0a25c984c..44b9871ce 100644 --- a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Sets/ItemSetTemplateLoader.cs +++ b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Items/Templates/Sets/ItemSetTemplateLoader.cs @@ -31,6 +31,7 @@ await _manager.Insert(new TemplateProviderEager( )); }) ?? Array.Empty()); + _manager.Freeze(); return _manager.Count; } } diff --git a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Modify/AbstractModifyInventory.cs b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Modify/AbstractModifyInventory.cs index 85bc50e7d..2ab2c2eb7 100644 --- a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Modify/AbstractModifyInventory.cs +++ b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Modify/AbstractModifyInventory.cs @@ -39,9 +39,9 @@ public abstract class AbstractModifyInventory : IModifyInventory public void WriteTo(IPacketWriter writer) { - var operations = Operations.ToImmutableList(); + var operations = Operations.ToImmutableArray(); - writer.WriteByte((byte)operations.Count); + writer.WriteByte((byte)operations.Length); foreach (var operation in operations) writer.Write(operation); } diff --git a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Modify/ModifyInventoryContext.cs b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Modify/ModifyInventoryContext.cs index 0977ea9a3..11ac121fb 100644 --- a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Modify/ModifyInventoryContext.cs +++ b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Modify/ModifyInventoryContext.cs @@ -94,7 +94,7 @@ public override void Remove(int templateID, short count) var match = _inventory.Items .Where(kv => kv.Key > 0) .Where(kv => kv.Value.ID == templateID) - .ToImmutableList(); + .ToImmutableArray(); foreach (var kv in match) { @@ -133,7 +133,7 @@ public override void RemoveAll(int templateID) { var match = _inventory.Items .Where(kv => kv.Value.ID == templateID) - .ToImmutableList(); + .ToImmutableArray(); foreach (var kv in match) RemoveSlot(kv.Key); @@ -147,11 +147,13 @@ public override void Gather() var inventoryCopy = _inventory.Items .Where(kv => kv.Key > 0) .OrderBy(kv => kv.Key) - .ToList(); + .ToImmutableArray(); short position = 1; - inventoryCopy.ForEach(kv => RemoveSlot(kv.Key)); - inventoryCopy.ForEach(kv => SetSlot(position++, kv.Value)); + foreach (var kv in inventoryCopy) + RemoveSlot(kv.Key); + foreach (var kv in inventoryCopy) + SetSlot(position++, kv.Value); } public override void Sort() @@ -160,15 +162,17 @@ public override void Sort() .Where(kv => kv.Key > 0) .OrderBy(kv => kv.Value.ID) .ThenByDescending(kv => kv.Value is IItemSlotBundle bundle ? bundle.Number : 1) - .ToList(); + .ToImmutableArray(); - inventoryCopy.ForEach(kv => RemoveSlot(kv.Key)); - inventoryCopy.ForEach(kv => Add(kv.Value)); + foreach (var kv in inventoryCopy) + RemoveSlot(kv.Key); + foreach (var kv in inventoryCopy) + Add(kv.Value); } public override void Clear() => _inventory.Items .Where(kv => kv.Key > 0) - .ToList() + .ToImmutableList() .ForEach(kv => RemoveSlot(kv.Key)); public override short Add(int templateID) => diff --git a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Modify/ModifyInventoryGroupContext.cs b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Modify/ModifyInventoryGroupContext.cs index 2d853f2f2..b07ed3842 100644 --- a/src/common/Edelstein.Common.Gameplay/Models/Inventories/Modify/ModifyInventoryGroupContext.cs +++ b/src/common/Edelstein.Common.Gameplay/Models/Inventories/Modify/ModifyInventoryGroupContext.cs @@ -1,4 +1,5 @@ -using Edelstein.Protocol.Gameplay.Models.Characters; +using System.Collections.Immutable; +using Edelstein.Protocol.Gameplay.Models.Characters; using Edelstein.Protocol.Gameplay.Models.Inventories; using Edelstein.Protocol.Gameplay.Models.Inventories.Items; using Edelstein.Protocol.Gameplay.Models.Inventories.Modify; @@ -9,7 +10,7 @@ namespace Edelstein.Common.Gameplay.Models.Inventories.Modify; public class ModifyInventoryGroupContext : AbstractModifyInventory, IModifyInventoryGroupContext { - private readonly Dictionary _contexts; + private readonly IDictionary _contexts; public ModifyInventoryGroupContext( ICharacterInventories inventories, @@ -31,7 +32,7 @@ private ModifyInventoryGroupContext( IDictionary inventories, ITemplateManager manager ) => - _contexts = inventories.ToDictionary( + _contexts = inventories.ToImmutableDictionary( kv => kv.Key, kv => new ModifyInventoryContext(kv.Key, kv.Value, manager) ); @@ -40,7 +41,9 @@ ITemplateManager manager _contexts.Values.SelectMany(c => c.Operations); public IModifyInventoryContext? this[ItemInventoryType type] => - _contexts.GetValueOrDefault(type); + _contexts.TryGetValue(type, out var context) + ? context + : null; public override short Add(IItemSlot item) => this[GetTypeByID(item.ID)]?.Add(item) ?? -1; diff --git a/src/common/Edelstein.Common.Gameplay/Social/PartyExtensions.cs b/src/common/Edelstein.Common.Gameplay/Social/PartyExtensions.cs index ec3f5c9b8..cada26faa 100644 --- a/src/common/Edelstein.Common.Gameplay/Social/PartyExtensions.cs +++ b/src/common/Edelstein.Common.Gameplay/Social/PartyExtensions.cs @@ -1,4 +1,5 @@ -using Edelstein.Protocol.Services.Social; +using System.Collections.Immutable; +using Edelstein.Protocol.Services.Social; using Edelstein.Protocol.Utilities.Packets; namespace Edelstein.Common.Gameplay.Social; @@ -7,7 +8,7 @@ public static class PartyExtensions { public static void WritePartyInfo(this IPacketWriter writer, IPartyMembership party) { - var members = party.Members.Values.ToList(); + var members = party.Members.Values.ToImmutableList(); for (var i = 0; i < 6; i++) writer.WriteInt(members.ElementAtOrDefault(i)?.CharacterID ?? 0); diff --git a/src/common/Edelstein.Common.Gameplay/packages.lock.json b/src/common/Edelstein.Common.Gameplay/packages.lock.json new file mode 100644 index 000000000..57a34f50c --- /dev/null +++ b/src/common/Edelstein.Common.Gameplay/packages.lock.json @@ -0,0 +1,81 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Duey.Abstractions": { + "type": "Direct", + "requested": "[2.0.0, )", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "MathParser.org-mXparser": { + "type": "Direct", + "requested": "[4.4.3, )", + "resolved": "4.4.3", + "contentHash": "QhHsP4nzyjC3G2kJ+dbT3NFuE0M0rKfa0wQjCcn5UyK0VnXN8OeYMy9KEYGzNKI9ealcwOQJd/4Xcq4PE+Vl7g==" + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Direct", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.IO.RecyclableMemoryStream": { + "type": "Transitive", + "resolved": "2.3.2", + "contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q==" + }, + "RBush": { + "type": "Transitive", + "resolved": "3.2.0", + "contentHash": "ijGh9N0zZ7JfXk3oQkWCwK8SwSSByexbyh/MjbCjNxOft9eG5ZqKC1vdgiYq78h4IZRFmN4s3JZ/b10Jipud5w==" + }, + "edelstein.common.constants": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )" + } + }, + "edelstein.common.utilities": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )", + "Microsoft.IO.RecyclableMemoryStream": "[2.3.2, )", + "RBush": "[3.2.0, )" + } + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/common/Edelstein.Common.Network.DotNetty/Handlers/NettyTransportAcceptorHandler.cs b/src/common/Edelstein.Common.Network.DotNetty/Handlers/NettyTransportAcceptorHandler.cs index cdee10b83..8573c5c9b 100644 --- a/src/common/Edelstein.Common.Network.DotNetty/Handlers/NettyTransportAcceptorHandler.cs +++ b/src/common/Edelstein.Common.Network.DotNetty/Handlers/NettyTransportAcceptorHandler.cs @@ -1,5 +1,4 @@ -using System.Buffers; -using DotNetty.Transport.Channels; +using DotNetty.Transport.Channels; using Edelstein.Common.Utilities.Packets; using Edelstein.Protocol.Network; using Edelstein.Protocol.Network.Transports; diff --git a/src/common/Edelstein.Common.Network.DotNetty/Handlers/NettyTransportConnectorHandler.cs b/src/common/Edelstein.Common.Network.DotNetty/Handlers/NettyTransportConnectorHandler.cs index b30954382..221df50cb 100644 --- a/src/common/Edelstein.Common.Network.DotNetty/Handlers/NettyTransportConnectorHandler.cs +++ b/src/common/Edelstein.Common.Network.DotNetty/Handlers/NettyTransportConnectorHandler.cs @@ -1,5 +1,4 @@ -using System.Buffers; -using DotNetty.Transport.Channels; +using DotNetty.Transport.Channels; using Edelstein.Common.Utilities.Packets; using Edelstein.Protocol.Network; using Edelstein.Protocol.Network.Transports; diff --git a/src/common/Edelstein.Common.Network.DotNetty/packages.lock.json b/src/common/Edelstein.Common.Network.DotNetty/packages.lock.json new file mode 100644 index 000000000..90bd110ae --- /dev/null +++ b/src/common/Edelstein.Common.Network.DotNetty/packages.lock.json @@ -0,0 +1,145 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "DotNetty.Buffers": { + "type": "Direct", + "requested": "[0.7.5, )", + "resolved": "0.7.5", + "contentHash": "ri4udTfNS856dAZ09VkQ9k6gxmYwFuZh930TAMa71smowEAvhGQEDpRY4mLgA5ADhbKhLYpmO/1vfDXEchDugQ==", + "dependencies": { + "DotNetty.Common": "0.7.5", + "System.Runtime.CompilerServices.Unsafe": "5.0.0" + } + }, + "DotNetty.Codecs": { + "type": "Direct", + "requested": "[0.7.5, )", + "resolved": "0.7.5", + "contentHash": "6FqSnZ2gmc5RalbxVNWeEm6FqZHORdskyDUKGdgm4gDr86D8w8TLv4L1MIS7Mshsq3figHl0TP9yFyOXe6SHdQ==", + "dependencies": { + "DotNetty.Buffers": "0.7.5", + "DotNetty.Common": "0.7.5", + "DotNetty.Transport": "0.7.5", + "System.Collections.Immutable": "1.5.0" + } + }, + "DotNetty.Common": { + "type": "Direct", + "requested": "[0.7.5, )", + "resolved": "0.7.5", + "contentHash": "U9dLNbZhtWhSsWIwLVhIwKC9Ku3+Q/CrY/U5Lahb8DxoEt6uo3GIPPGY3NT1COllfhT422bLALdGlesFOcwXEg==", + "dependencies": { + "Microsoft.Extensions.Logging": "5.0.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0" + } + }, + "DotNetty.Handlers": { + "type": "Direct", + "requested": "[0.7.5, )", + "resolved": "0.7.5", + "contentHash": "1iXurgUEaEqRW33CvPCEndrHoTB6Ql4PBNpMkVixJ6MxSS9kMLPi+nVpcnEQCPyRBkf/9znk+YO02R0bDWA03g==", + "dependencies": { + "DotNetty.Buffers": "0.7.5", + "DotNetty.Codecs": "0.7.5", + "DotNetty.Common": "0.7.5", + "DotNetty.Transport": "0.7.5" + } + }, + "DotNetty.Transport": { + "type": "Direct", + "requested": "[0.7.5, )", + "resolved": "0.7.5", + "contentHash": "Ha1ZDqUOEPgk5/IWpAcP220cUtcekLankgkq/KhkrmvVANNbTxwTvjBS50m2/nAK623HjT+1wcLZBfFzBg3TyQ==", + "dependencies": { + "DotNetty.Buffers": "0.7.5", + "DotNetty.Common": "0.7.5" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "Rc2kb/p3Ze6cP6rhFC3PJRdWGbLvSHZc0ev7YlyeU6FmHciDMLrhoVoTUEzKPhN5ZjFgKF1Cf5fOz8mCMIkvpA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "MgOwK6tPzB6YNH21wssJcw/2MKwee8b2gI7SllYfn6rvTpIrVvVS5HAjSU2vqSku1fwqRvWP0MdIi14qjd93Aw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "5.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0", + "Microsoft.Extensions.Logging.Abstractions": "5.0.0", + "Microsoft.Extensions.Options": "5.0.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "CBvR92TCJ5uBIdd9/HzDSrxYak+0W/3+yxrNg8Qm6Bmrkh5L+nu6m3WeazQehcZ5q1/6dDA7J5YdQjim0165zg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0", + "Microsoft.Extensions.Primitives": "5.0.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" + }, + "Microsoft.IO.RecyclableMemoryStream": { + "type": "Transitive", + "resolved": "2.3.2", + "contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q==" + }, + "RBush": { + "type": "Transitive", + "resolved": "3.2.0", + "contentHash": "ijGh9N0zZ7JfXk3oQkWCwK8SwSSByexbyh/MjbCjNxOft9eG5ZqKC1vdgiYq78h4IZRFmN4s3JZ/b10Jipud5w==" + }, + "System.Collections.Immutable": { + "type": "Transitive", + "resolved": "1.5.0", + "contentHash": "EXKiDFsChZW0RjrZ4FYHu9aW6+P4MCgEDCklsVseRfhoO0F+dXeMSsMRAlVXIo06kGJ/zv+2w1a2uc2+kxxSaQ==" + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "edelstein.common.crypto": { + "type": "Project" + }, + "edelstein.common.utilities": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )", + "Microsoft.IO.RecyclableMemoryStream": "[2.3.2, )", + "RBush": "[3.2.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/common/Edelstein.Common.Plugin/Edelstein.Common.Plugin.csproj b/src/common/Edelstein.Common.Plugin/Edelstein.Common.Plugin.csproj index 9fbaae4fd..990e1f04f 100644 --- a/src/common/Edelstein.Common.Plugin/Edelstein.Common.Plugin.csproj +++ b/src/common/Edelstein.Common.Plugin/Edelstein.Common.Plugin.csproj @@ -9,7 +9,7 @@ - + diff --git a/src/common/Edelstein.Common.Plugin/packages.lock.json b/src/common/Edelstein.Common.Plugin/packages.lock.json new file mode 100644 index 000000000..48e05bb1e --- /dev/null +++ b/src/common/Edelstein.Common.Plugin/packages.lock.json @@ -0,0 +1,162 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "McMaster.NETCore.Plugins": { + "type": "Direct", + "requested": "[1.4.0, )", + "resolved": "1.4.0", + "contentHash": "UKw5Z2/QHhkR7kiAJmqdCwVDMQV0lwsfj10+FG676r8DsJWIpxtachtEjE0qBs9WoK5GUQIqxgyFeYUSwuPszg==", + "dependencies": { + "Microsoft.DotNet.PlatformAbstractions": "3.1.6", + "Microsoft.Extensions.DependencyModel": "5.0.0" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Direct", + "requested": "[8.0.0-rc.1.23419.4, )", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "NoIBM0qnZrl5o3em/5Qx4T3HcDruKdDVvm4PsG/wiuWawtwHRqaqkFjPS66lPnu1Kgzv+D1JJd+r4C5wPxXErw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0-rc.1.23419.4", + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Configuration.Json": { + "type": "Direct", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "LDNYe3uw76W35Jci+be4LDf2lkQZe0A7EEYQVChFbc509CpZ4Iupod8li4PUXPBhEUOFI/rlQNf5xkzJRQGvtA==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "System.Text.Json": "7.0.0" + } + }, + "Microsoft.Extensions.Hosting.Abstractions": { + "type": "Direct", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "43n9Je09z0p/7ViPxfRqs5BUItRLNVh5b6JH40F2Agkh2NBsY/jpNYTtbCcxrHCsA3oRmbR6RJBzUutB4VZvNQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0" + } + }, + "Microsoft.DotNet.PlatformAbstractions": { + "type": "Transitive", + "resolved": "3.1.6", + "contentHash": "jek4XYaQ/PGUwDKKhwR8K47Uh1189PFzMeLqO83mXrXQVIpARZCcfuDedH50YDTepBkfijCZN5U/vZi++erxtg==" + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "tY5wKwXNZ6cBeyHxvxyLy57TxUaA6H82/vW8vTTmikG9bkfRzfyS0EEDloiPzL4ln8P+3aZxeAestjPC6942Kg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Configuration.FileExtensions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "xk2lRJ1RDuqe57BmgvRPyCt6zyePKUmvT6iuXqiHR+/OIIgWVR8Ff5k2p6DwmqY8a17hx/OnrekEhziEIeQP6Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Physical": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "h3j/QfmFN4S0w4C2A6X7arXij/M/OVw3uQHSOFxnND4DyAzO1F9eMX7Eti7lU/OkSthEE0WzRsfT/Dmx86jzCw==" + }, + "Microsoft.Extensions.DependencyModel": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "umBECCoMC+sOUgm083yFr8SxTobUOcPFH4AXigdO2xJiszCHAnmeDl4qPphJt+oaJ/XIfV1wOjIts2nRnki61Q==" + }, + "Microsoft.Extensions.FileProviders.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "NyawiW9ZT/liQb34k9YqBSNPLuuPkrjMgQZ24Y/xXX1RoiBkLUdPMaQTmxhZ5TYu8ZKZ9qayzil75JX95vGQUg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.FileProviders.Physical": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "K8D2MTR+EtzkbZ8z80LrG7Ur64R7ZZdRLt1J5cgpc/pUWl0C6IkAUapPuK28oionHueCPELUqq0oYEvZfalNdg==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.FileSystemGlobbing": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "2jONjKHiF+E92ynz2ZFcr9OvxIw+rTGMPEH+UZGeHTEComVav93jQUWGkso8yWwVBcEJGcNcZAaqY01FFJcj7w==" + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "zyoB4zblhvpylS9VOmKyBuGH+RjKDsfi0cTB2KRPPDD6tFinpP+vGr3dictaNYLhGUg6jaBmq+2H/WZMCnvGDQ==" + }, + "Microsoft.IO.RecyclableMemoryStream": { + "type": "Transitive", + "resolved": "2.3.2", + "contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q==" + }, + "RBush": { + "type": "Transitive", + "resolved": "3.2.0", + "contentHash": "ijGh9N0zZ7JfXk3oQkWCwK8SwSSByexbyh/MjbCjNxOft9eG5ZqKC1vdgiYq78h4IZRFmN4s3JZ/b10Jipud5w==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "OP6umVGxc0Z0MvZQBVigj4/U31Pw72ITihDWP9WiWDm+q5aoe0GaJivsfYGq53o6dxH7DcXWiCTl7+0o2CGdmg==" + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "DaGSsVqKsn/ia6RG8frjwmJonfos0srquhw09TlT8KRw5I43E+4gs+/bZj4K0vShJ5H9imCuXupb4RmS+dBy3w==", + "dependencies": { + "System.Text.Encodings.Web": "7.0.0" + } + }, + "edelstein.common.utilities": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )", + "Microsoft.IO.RecyclableMemoryStream": "[2.3.2, )", + "RBush": "[3.2.0, )" + } + }, + "edelstein.protocol.plugin": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[8.0.0-rc.1.23419.4, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/common/Edelstein.Common.Scripting.Lua/packages.lock.json b/src/common/Edelstein.Common.Scripting.Lua/packages.lock.json new file mode 100644 index 000000000..a16876980 --- /dev/null +++ b/src/common/Edelstein.Common.Scripting.Lua/packages.lock.json @@ -0,0 +1,16 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "MoonSharp": { + "type": "Direct", + "requested": "[2.0.0, )", + "resolved": "2.0.0", + "contentHash": "uiAcRh7d+53k3xW9pFDJfAFVw4RnjHVCJG05M3oPAVEVwPtFavhg1H/IpC6So4X1j9kJlzuLlA3OghhPcIvc5A==" + }, + "edelstein.protocol.scripting": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/common/Edelstein.Common.Services.Auth/Edelstein.Common.Services.Auth.csproj b/src/common/Edelstein.Common.Services.Auth/Edelstein.Common.Services.Auth.csproj index d51536aca..c935a0d60 100644 --- a/src/common/Edelstein.Common.Services.Auth/Edelstein.Common.Services.Auth.csproj +++ b/src/common/Edelstein.Common.Services.Auth/Edelstein.Common.Services.Auth.csproj @@ -14,7 +14,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/src/common/Edelstein.Common.Services.Auth/packages.lock.json b/src/common/Edelstein.Common.Services.Auth/packages.lock.json new file mode 100644 index 000000000..f79de56f9 --- /dev/null +++ b/src/common/Edelstein.Common.Services.Auth/packages.lock.json @@ -0,0 +1,253 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "BCrypt.Net-Next": { + "type": "Direct", + "requested": "[4.0.3, )", + "resolved": "4.0.3", + "contentHash": "W+U9WvmZQgi5cX6FS5GDtDoPzUCV4LkBLkywq/kRZhuDwcbavOzcDAr3LXJFqHUi952Yj3LEYoWW0jbEUQChsA==" + }, + "Microsoft.EntityFrameworkCore": { + "type": "Direct", + "requested": "[7.0.10, )", + "resolved": "7.0.10", + "contentHash": "24NbXJqJ/x8u88/agqeb1pLdAF9+9StDLA36+P/3g5xsJPOaB2GxXn7epR8dWpZTgHsNZ7cvBMxBgfFmF+xZlg==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "7.0.10", + "Microsoft.EntityFrameworkCore.Analyzers": "7.0.10", + "Microsoft.Extensions.Caching.Memory": "7.0.0", + "Microsoft.Extensions.DependencyInjection": "7.0.0", + "Microsoft.Extensions.Logging": "7.0.0" + } + }, + "Microsoft.EntityFrameworkCore.Design": { + "type": "Direct", + "requested": "[7.0.10, )", + "resolved": "7.0.10", + "contentHash": "ZDdJ2aAE529A1zd3sEvszADRCiJmlOKxc0WlhS+NIhSs68NESAApPZL4uHXrIk0vb7SBRnNPYPfOhASWf9dahg==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.EntityFrameworkCore.Relational": "7.0.10", + "Microsoft.Extensions.DependencyModel": "7.0.0", + "Mono.TextTemplating": "2.2.1" + } + }, + "Microsoft.EntityFrameworkCore.Relational": { + "type": "Direct", + "requested": "[7.0.10, )", + "resolved": "7.0.10", + "contentHash": "PO2QB2Du+pW210UHmepYR12bk+ZOZJCiNkA7zEAxWs+vzvrRAMsUPlDlfgX2LXE7NBsnb0uvZp7a1/qqKf3fRQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "7.0.10", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Direct", + "requested": "[8.0.0-rc.1.23419.4, )", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "NoIBM0qnZrl5o3em/5Qx4T3HcDruKdDVvm4PsG/wiuWawtwHRqaqkFjPS66lPnu1Kgzv+D1JJd+r4C5wPxXErw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0-rc.1.23419.4", + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Configuration.Json": { + "type": "Direct", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "LDNYe3uw76W35Jci+be4LDf2lkQZe0A7EEYQVChFbc509CpZ4Iupod8li4PUXPBhEUOFI/rlQNf5xkzJRQGvtA==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "System.Text.Json": "7.0.0" + } + }, + "Npgsql.EntityFrameworkCore.PostgreSQL": { + "type": "Direct", + "requested": "[7.0.4, )", + "resolved": "7.0.4", + "contentHash": "ZYMtyG6pmLtUsFAx0/XaIlVkJM+1gArWEKD55cLLxiVlGScAphjiGj+G7Gk16yg5lhhdWx+bgXWpIUISXuS33g==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[7.0.5, 8.0.0)", + "Microsoft.EntityFrameworkCore.Abstractions": "[7.0.5, 8.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[7.0.5, 8.0.0)", + "Npgsql": "7.0.4" + } + }, + "Humanizer.Core": { + "type": "Transitive", + "resolved": "2.14.1", + "contentHash": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==" + }, + "Microsoft.EntityFrameworkCore.Abstractions": { + "type": "Transitive", + "resolved": "7.0.10", + "contentHash": "Z/lDWmGLiT9uNQrp6UXTKZxofSmAKQCiKOz98FDscTbfAGgBXE3DTTqRsPMc8HFIVVSNANSiFRz3JyLg07HN9Q==" + }, + "Microsoft.EntityFrameworkCore.Analyzers": { + "type": "Transitive", + "resolved": "7.0.10", + "contentHash": "+8NVNpyJTzW6nNh/7RGfldf+mbeboVcn+X1tD8kMBCEJswuy3RqM/qecEEfOfTcWLliZExPMaHwOwtHO6RMpdA==" + }, + "Microsoft.Extensions.Caching.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "IeimUd0TNbhB4ded3AbgBLQv2SnsiVugDyGV1MvspQFVlA07nDC7Zul7kcwH5jWN3JiTcp/ySE83AIJo8yfKjg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "xpidBs2KCE2gw1JrD0quHE72kvCaI3xFql5/Peb2GRtUuZX+dYPoK/NTdVMiM67Svym0M0Df9A3xyU0FbMQhHw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "tY5wKwXNZ6cBeyHxvxyLy57TxUaA6H82/vW8vTTmikG9bkfRzfyS0EEDloiPzL4ln8P+3aZxeAestjPC6942Kg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Configuration.FileExtensions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "xk2lRJ1RDuqe57BmgvRPyCt6zyePKUmvT6iuXqiHR+/OIIgWVR8Ff5k2p6DwmqY8a17hx/OnrekEhziEIeQP6Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Physical": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "elNeOmkeX3eDVG6pYVeV82p29hr+UKDaBhrZyWvWLw/EVZSYEkZlQdkp0V39k/Xehs2Qa0mvoCvkVj3eQxNQ1Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "h3j/QfmFN4S0w4C2A6X7arXij/M/OVw3uQHSOFxnND4DyAzO1F9eMX7Eti7lU/OkSthEE0WzRsfT/Dmx86jzCw==" + }, + "Microsoft.Extensions.DependencyModel": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "oONNYd71J3LzkWc4fUHl3SvMfiQMYUCo/mDHDEu76hYYxdhdrPYv6fvGv9nnKVyhE9P0h20AU8RZB5OOWQcAXg==", + "dependencies": { + "System.Text.Encodings.Web": "7.0.0", + "System.Text.Json": "7.0.0" + } + }, + "Microsoft.Extensions.FileProviders.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "NyawiW9ZT/liQb34k9YqBSNPLuuPkrjMgQZ24Y/xXX1RoiBkLUdPMaQTmxhZ5TYu8ZKZ9qayzil75JX95vGQUg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.FileProviders.Physical": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "K8D2MTR+EtzkbZ8z80LrG7Ur64R7ZZdRLt1J5cgpc/pUWl0C6IkAUapPuK28oionHueCPELUqq0oYEvZfalNdg==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.FileSystemGlobbing": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "2jONjKHiF+E92ynz2ZFcr9OvxIw+rTGMPEH+UZGeHTEComVav93jQUWGkso8yWwVBcEJGcNcZAaqY01FFJcj7w==" + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "Nw2muoNrOG5U5qa2ZekXwudUn2BJcD41e65zwmDHb1fQegTX66UokLWZkJRpqSSHXDOWZ5V0iqhbxOEky91atA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "lP1yBnTTU42cKpMozuafbvNtQ7QcBjr/CcK3bYOGEMH55Fjt+iecXjT6chR7vbgCMqy3PG3aNQSZgo/EuY/9qQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "zyoB4zblhvpylS9VOmKyBuGH+RjKDsfi0cTB2KRPPDD6tFinpP+vGr3dictaNYLhGUg6jaBmq+2H/WZMCnvGDQ==" + }, + "Mono.TextTemplating": { + "type": "Transitive", + "resolved": "2.2.1", + "contentHash": "KZYeKBET/2Z0gY1WlTAK7+RHTl7GSbtvTLDXEZZojUdAPqpQNDL6tHv7VUpqfX5VEOh+uRGKaZXkuD253nEOBQ==", + "dependencies": { + "System.CodeDom": "4.4.0" + } + }, + "Npgsql": { + "type": "Transitive", + "resolved": "7.0.4", + "contentHash": "7UVPYy2RP0ci04PED1tc9ZCaTw/DfSdSkLiGEFCAvwMwsgA/bAluj1liNzP1IpN0MFofnOF0cm1zJfmbEuCehg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "6.0.0" + } + }, + "System.CodeDom": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "2sCCb7doXEwtYAbqzbF/8UAeDRMNmPaQbU2q50Psg1J9KzumyVVCgKQY8s53WIPTufNT0DpSe9QRvVjOzfDWBA==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "OP6umVGxc0Z0MvZQBVigj4/U31Pw72ITihDWP9WiWDm+q5aoe0GaJivsfYGq53o6dxH7DcXWiCTl7+0o2CGdmg==" + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "DaGSsVqKsn/ia6RG8frjwmJonfos0srquhw09TlT8KRw5I43E+4gs+/bZj4K0vShJ5H9imCuXupb4RmS+dBy3w==", + "dependencies": { + "System.Text.Encodings.Web": "7.0.0" + } + }, + "edelstein.protocol.services.auth": { + "type": "Project" + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/common/Edelstein.Common.Services.Server/Edelstein.Common.Services.Server.csproj b/src/common/Edelstein.Common.Services.Server/Edelstein.Common.Services.Server.csproj index c63149c7a..97955f6f5 100644 --- a/src/common/Edelstein.Common.Services.Server/Edelstein.Common.Services.Server.csproj +++ b/src/common/Edelstein.Common.Services.Server/Edelstein.Common.Services.Server.csproj @@ -20,7 +20,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/src/common/Edelstein.Common.Services.Server/ServerService.cs b/src/common/Edelstein.Common.Services.Server/ServerService.cs index 340cd769e..f4e997efb 100644 --- a/src/common/Edelstein.Common.Services.Server/ServerService.cs +++ b/src/common/Edelstein.Common.Services.Server/ServerService.cs @@ -129,7 +129,7 @@ public async Task> GetGameByWorld(ServerGetGam return new ServerGetAllResponse(ServerResult.Success, existing .Where(s => s.DateExpire > now) .Select(s => _mapper.Map(s)) - .ToImmutableList()); + .ToImmutableArray()); } catch (Exception) { @@ -188,7 +188,7 @@ public async Task> GetAll() return new ServerGetAllResponse(ServerResult.Success, existing .Where(s => s.DateExpire > now) .Select(s => _mapper.Map(s)) - .ToImmutableList()); + .ToImmutableArray()); } catch (Exception) { diff --git a/src/common/Edelstein.Common.Services.Server/packages.lock.json b/src/common/Edelstein.Common.Services.Server/packages.lock.json new file mode 100644 index 000000000..4abb4fea4 --- /dev/null +++ b/src/common/Edelstein.Common.Services.Server/packages.lock.json @@ -0,0 +1,340 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "AutoMapper": { + "type": "Direct", + "requested": "[12.0.1, )", + "resolved": "12.0.1", + "contentHash": "hvV62vl6Hp/WfQ24yzo3Co9+OPl8wH8hApwVtgWpiAynVJkUcs7xvehnSftawL8Pe8FrPffBRM3hwzLQqWDNjA==", + "dependencies": { + "Microsoft.CSharp": "4.7.0" + } + }, + "Microsoft.EntityFrameworkCore": { + "type": "Direct", + "requested": "[7.0.10, )", + "resolved": "7.0.10", + "contentHash": "24NbXJqJ/x8u88/agqeb1pLdAF9+9StDLA36+P/3g5xsJPOaB2GxXn7epR8dWpZTgHsNZ7cvBMxBgfFmF+xZlg==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "7.0.10", + "Microsoft.EntityFrameworkCore.Analyzers": "7.0.10", + "Microsoft.Extensions.Caching.Memory": "7.0.0", + "Microsoft.Extensions.DependencyInjection": "7.0.0", + "Microsoft.Extensions.Logging": "7.0.0" + } + }, + "Microsoft.EntityFrameworkCore.Design": { + "type": "Direct", + "requested": "[7.0.10, )", + "resolved": "7.0.10", + "contentHash": "ZDdJ2aAE529A1zd3sEvszADRCiJmlOKxc0WlhS+NIhSs68NESAApPZL4uHXrIk0vb7SBRnNPYPfOhASWf9dahg==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.EntityFrameworkCore.Relational": "7.0.10", + "Microsoft.Extensions.DependencyModel": "7.0.0", + "Mono.TextTemplating": "2.2.1" + } + }, + "Microsoft.EntityFrameworkCore.Relational": { + "type": "Direct", + "requested": "[7.0.10, )", + "resolved": "7.0.10", + "contentHash": "PO2QB2Du+pW210UHmepYR12bk+ZOZJCiNkA7zEAxWs+vzvrRAMsUPlDlfgX2LXE7NBsnb0uvZp7a1/qqKf3fRQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "7.0.10", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Direct", + "requested": "[8.0.0-rc.1.23419.4, )", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "NoIBM0qnZrl5o3em/5Qx4T3HcDruKdDVvm4PsG/wiuWawtwHRqaqkFjPS66lPnu1Kgzv+D1JJd+r4C5wPxXErw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0-rc.1.23419.4", + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Configuration.Json": { + "type": "Direct", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "LDNYe3uw76W35Jci+be4LDf2lkQZe0A7EEYQVChFbc509CpZ4Iupod8li4PUXPBhEUOFI/rlQNf5xkzJRQGvtA==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "System.Text.Json": "7.0.0" + } + }, + "Newtonsoft.Json": { + "type": "Direct", + "requested": "[13.0.3, )", + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" + }, + "Npgsql.EntityFrameworkCore.PostgreSQL": { + "type": "Direct", + "requested": "[7.0.4, )", + "resolved": "7.0.4", + "contentHash": "ZYMtyG6pmLtUsFAx0/XaIlVkJM+1gArWEKD55cLLxiVlGScAphjiGj+G7Gk16yg5lhhdWx+bgXWpIUISXuS33g==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[7.0.5, 8.0.0)", + "Microsoft.EntityFrameworkCore.Abstractions": "[7.0.5, 8.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[7.0.5, 8.0.0)", + "Npgsql": "7.0.4" + } + }, + "Duey.Abstractions": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "Humanizer.Core": { + "type": "Transitive", + "resolved": "2.14.1", + "contentHash": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==" + }, + "MathParser.org-mXparser": { + "type": "Transitive", + "resolved": "4.4.3", + "contentHash": "QhHsP4nzyjC3G2kJ+dbT3NFuE0M0rKfa0wQjCcn5UyK0VnXN8OeYMy9KEYGzNKI9ealcwOQJd/4Xcq4PE+Vl7g==" + }, + "Microsoft.CSharp": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==" + }, + "Microsoft.EntityFrameworkCore.Abstractions": { + "type": "Transitive", + "resolved": "7.0.10", + "contentHash": "Z/lDWmGLiT9uNQrp6UXTKZxofSmAKQCiKOz98FDscTbfAGgBXE3DTTqRsPMc8HFIVVSNANSiFRz3JyLg07HN9Q==" + }, + "Microsoft.EntityFrameworkCore.Analyzers": { + "type": "Transitive", + "resolved": "7.0.10", + "contentHash": "+8NVNpyJTzW6nNh/7RGfldf+mbeboVcn+X1tD8kMBCEJswuy3RqM/qecEEfOfTcWLliZExPMaHwOwtHO6RMpdA==" + }, + "Microsoft.Extensions.Caching.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "IeimUd0TNbhB4ded3AbgBLQv2SnsiVugDyGV1MvspQFVlA07nDC7Zul7kcwH5jWN3JiTcp/ySE83AIJo8yfKjg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "xpidBs2KCE2gw1JrD0quHE72kvCaI3xFql5/Peb2GRtUuZX+dYPoK/NTdVMiM67Svym0M0Df9A3xyU0FbMQhHw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "tY5wKwXNZ6cBeyHxvxyLy57TxUaA6H82/vW8vTTmikG9bkfRzfyS0EEDloiPzL4ln8P+3aZxeAestjPC6942Kg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Configuration.FileExtensions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "xk2lRJ1RDuqe57BmgvRPyCt6zyePKUmvT6iuXqiHR+/OIIgWVR8Ff5k2p6DwmqY8a17hx/OnrekEhziEIeQP6Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Physical": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "elNeOmkeX3eDVG6pYVeV82p29hr+UKDaBhrZyWvWLw/EVZSYEkZlQdkp0V39k/Xehs2Qa0mvoCvkVj3eQxNQ1Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "h3j/QfmFN4S0w4C2A6X7arXij/M/OVw3uQHSOFxnND4DyAzO1F9eMX7Eti7lU/OkSthEE0WzRsfT/Dmx86jzCw==" + }, + "Microsoft.Extensions.DependencyModel": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "oONNYd71J3LzkWc4fUHl3SvMfiQMYUCo/mDHDEu76hYYxdhdrPYv6fvGv9nnKVyhE9P0h20AU8RZB5OOWQcAXg==", + "dependencies": { + "System.Text.Encodings.Web": "7.0.0", + "System.Text.Json": "7.0.0" + } + }, + "Microsoft.Extensions.FileProviders.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "NyawiW9ZT/liQb34k9YqBSNPLuuPkrjMgQZ24Y/xXX1RoiBkLUdPMaQTmxhZ5TYu8ZKZ9qayzil75JX95vGQUg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.FileProviders.Physical": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "K8D2MTR+EtzkbZ8z80LrG7Ur64R7ZZdRLt1J5cgpc/pUWl0C6IkAUapPuK28oionHueCPELUqq0oYEvZfalNdg==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.FileSystemGlobbing": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "2jONjKHiF+E92ynz2ZFcr9OvxIw+rTGMPEH+UZGeHTEComVav93jQUWGkso8yWwVBcEJGcNcZAaqY01FFJcj7w==" + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "Nw2muoNrOG5U5qa2ZekXwudUn2BJcD41e65zwmDHb1fQegTX66UokLWZkJRpqSSHXDOWZ5V0iqhbxOEky91atA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "lP1yBnTTU42cKpMozuafbvNtQ7QcBjr/CcK3bYOGEMH55Fjt+iecXjT6chR7vbgCMqy3PG3aNQSZgo/EuY/9qQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "zyoB4zblhvpylS9VOmKyBuGH+RjKDsfi0cTB2KRPPDD6tFinpP+vGr3dictaNYLhGUg6jaBmq+2H/WZMCnvGDQ==" + }, + "Microsoft.IO.RecyclableMemoryStream": { + "type": "Transitive", + "resolved": "2.3.2", + "contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q==" + }, + "Mono.TextTemplating": { + "type": "Transitive", + "resolved": "2.2.1", + "contentHash": "KZYeKBET/2Z0gY1WlTAK7+RHTl7GSbtvTLDXEZZojUdAPqpQNDL6tHv7VUpqfX5VEOh+uRGKaZXkuD253nEOBQ==", + "dependencies": { + "System.CodeDom": "4.4.0" + } + }, + "Npgsql": { + "type": "Transitive", + "resolved": "7.0.4", + "contentHash": "7UVPYy2RP0ci04PED1tc9ZCaTw/DfSdSkLiGEFCAvwMwsgA/bAluj1liNzP1IpN0MFofnOF0cm1zJfmbEuCehg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "6.0.0" + } + }, + "RBush": { + "type": "Transitive", + "resolved": "3.2.0", + "contentHash": "ijGh9N0zZ7JfXk3oQkWCwK8SwSSByexbyh/MjbCjNxOft9eG5ZqKC1vdgiYq78h4IZRFmN4s3JZ/b10Jipud5w==" + }, + "System.CodeDom": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "2sCCb7doXEwtYAbqzbF/8UAeDRMNmPaQbU2q50Psg1J9KzumyVVCgKQY8s53WIPTufNT0DpSe9QRvVjOzfDWBA==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "OP6umVGxc0Z0MvZQBVigj4/U31Pw72ITihDWP9WiWDm+q5aoe0GaJivsfYGq53o6dxH7DcXWiCTl7+0o2CGdmg==" + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "DaGSsVqKsn/ia6RG8frjwmJonfos0srquhw09TlT8KRw5I43E+4gs+/bZj4K0vShJ5H9imCuXupb4RmS+dBy3w==", + "dependencies": { + "System.Text.Encodings.Web": "7.0.0" + } + }, + "edelstein.common.constants": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )" + } + }, + "edelstein.common.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Common.Constants": "[1.0.0, )", + "Edelstein.Common.Utilities": "[1.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "MathParser.org-mXparser": "[4.4.3, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "edelstein.common.utilities": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )", + "Microsoft.IO.RecyclableMemoryStream": "[2.3.2, )", + "RBush": "[3.2.0, )" + } + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/common/Edelstein.Common.Services.Social/Edelstein.Common.Services.Social.csproj b/src/common/Edelstein.Common.Services.Social/Edelstein.Common.Services.Social.csproj index 5883cd265..49935c5ad 100644 --- a/src/common/Edelstein.Common.Services.Social/Edelstein.Common.Services.Social.csproj +++ b/src/common/Edelstein.Common.Services.Social/Edelstein.Common.Services.Social.csproj @@ -16,7 +16,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/src/common/Edelstein.Common.Services.Social/packages.lock.json b/src/common/Edelstein.Common.Services.Social/packages.lock.json new file mode 100644 index 000000000..4a9986de9 --- /dev/null +++ b/src/common/Edelstein.Common.Services.Social/packages.lock.json @@ -0,0 +1,321 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "AutoMapper": { + "type": "Direct", + "requested": "[12.0.1, )", + "resolved": "12.0.1", + "contentHash": "hvV62vl6Hp/WfQ24yzo3Co9+OPl8wH8hApwVtgWpiAynVJkUcs7xvehnSftawL8Pe8FrPffBRM3hwzLQqWDNjA==", + "dependencies": { + "Microsoft.CSharp": "4.7.0" + } + }, + "Foundatio": { + "type": "Direct", + "requested": "[10.6.1, )", + "resolved": "10.6.1", + "contentHash": "c5LXLzjaCwBlzozpIiumQeuFhalZgE5L38uaGu6IVlB8HMOd2Wnf7WmylRUo15BWySgqi/mpoq2ikVZCUrrpKg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "6.0.0", + "Microsoft.Extensions.DependencyInjection": "6.0.0", + "Microsoft.Extensions.Logging.Abstractions": "6.0.0", + "System.Diagnostics.DiagnosticSource": "6.0.0", + "System.Text.Json": "6.0.0" + } + }, + "Microsoft.EntityFrameworkCore": { + "type": "Direct", + "requested": "[7.0.10, )", + "resolved": "7.0.10", + "contentHash": "24NbXJqJ/x8u88/agqeb1pLdAF9+9StDLA36+P/3g5xsJPOaB2GxXn7epR8dWpZTgHsNZ7cvBMxBgfFmF+xZlg==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "7.0.10", + "Microsoft.EntityFrameworkCore.Analyzers": "7.0.10", + "Microsoft.Extensions.Caching.Memory": "7.0.0", + "Microsoft.Extensions.DependencyInjection": "7.0.0", + "Microsoft.Extensions.Logging": "7.0.0" + } + }, + "Microsoft.EntityFrameworkCore.Design": { + "type": "Direct", + "requested": "[7.0.10, )", + "resolved": "7.0.10", + "contentHash": "ZDdJ2aAE529A1zd3sEvszADRCiJmlOKxc0WlhS+NIhSs68NESAApPZL4uHXrIk0vb7SBRnNPYPfOhASWf9dahg==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.EntityFrameworkCore.Relational": "7.0.10", + "Microsoft.Extensions.DependencyModel": "7.0.0", + "Mono.TextTemplating": "2.2.1" + } + }, + "Microsoft.EntityFrameworkCore.Relational": { + "type": "Direct", + "requested": "[7.0.10, )", + "resolved": "7.0.10", + "contentHash": "PO2QB2Du+pW210UHmepYR12bk+ZOZJCiNkA7zEAxWs+vzvrRAMsUPlDlfgX2LXE7NBsnb0uvZp7a1/qqKf3fRQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "7.0.10", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Direct", + "requested": "[8.0.0-rc.1.23419.4, )", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "NoIBM0qnZrl5o3em/5Qx4T3HcDruKdDVvm4PsG/wiuWawtwHRqaqkFjPS66lPnu1Kgzv+D1JJd+r4C5wPxXErw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0-rc.1.23419.4", + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Configuration.Json": { + "type": "Direct", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "LDNYe3uw76W35Jci+be4LDf2lkQZe0A7EEYQVChFbc509CpZ4Iupod8li4PUXPBhEUOFI/rlQNf5xkzJRQGvtA==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "System.Text.Json": "7.0.0" + } + }, + "Newtonsoft.Json": { + "type": "Direct", + "requested": "[13.0.3, )", + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" + }, + "Npgsql.EntityFrameworkCore.PostgreSQL": { + "type": "Direct", + "requested": "[7.0.4, )", + "resolved": "7.0.4", + "contentHash": "ZYMtyG6pmLtUsFAx0/XaIlVkJM+1gArWEKD55cLLxiVlGScAphjiGj+G7Gk16yg5lhhdWx+bgXWpIUISXuS33g==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[7.0.5, 8.0.0)", + "Microsoft.EntityFrameworkCore.Abstractions": "[7.0.5, 8.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[7.0.5, 8.0.0)", + "Npgsql": "7.0.4" + } + }, + "Duey.Abstractions": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "Humanizer.Core": { + "type": "Transitive", + "resolved": "2.14.1", + "contentHash": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==" + }, + "Microsoft.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==" + }, + "Microsoft.CSharp": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==" + }, + "Microsoft.EntityFrameworkCore.Abstractions": { + "type": "Transitive", + "resolved": "7.0.10", + "contentHash": "Z/lDWmGLiT9uNQrp6UXTKZxofSmAKQCiKOz98FDscTbfAGgBXE3DTTqRsPMc8HFIVVSNANSiFRz3JyLg07HN9Q==" + }, + "Microsoft.EntityFrameworkCore.Analyzers": { + "type": "Transitive", + "resolved": "7.0.10", + "contentHash": "+8NVNpyJTzW6nNh/7RGfldf+mbeboVcn+X1tD8kMBCEJswuy3RqM/qecEEfOfTcWLliZExPMaHwOwtHO6RMpdA==" + }, + "Microsoft.Extensions.Caching.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "IeimUd0TNbhB4ded3AbgBLQv2SnsiVugDyGV1MvspQFVlA07nDC7Zul7kcwH5jWN3JiTcp/ySE83AIJo8yfKjg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "xpidBs2KCE2gw1JrD0quHE72kvCaI3xFql5/Peb2GRtUuZX+dYPoK/NTdVMiM67Svym0M0Df9A3xyU0FbMQhHw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "tY5wKwXNZ6cBeyHxvxyLy57TxUaA6H82/vW8vTTmikG9bkfRzfyS0EEDloiPzL4ln8P+3aZxeAestjPC6942Kg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Configuration.FileExtensions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "xk2lRJ1RDuqe57BmgvRPyCt6zyePKUmvT6iuXqiHR+/OIIgWVR8Ff5k2p6DwmqY8a17hx/OnrekEhziEIeQP6Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "7.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Physical": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "elNeOmkeX3eDVG6pYVeV82p29hr+UKDaBhrZyWvWLw/EVZSYEkZlQdkp0V39k/Xehs2Qa0mvoCvkVj3eQxNQ1Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "h3j/QfmFN4S0w4C2A6X7arXij/M/OVw3uQHSOFxnND4DyAzO1F9eMX7Eti7lU/OkSthEE0WzRsfT/Dmx86jzCw==" + }, + "Microsoft.Extensions.DependencyModel": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "oONNYd71J3LzkWc4fUHl3SvMfiQMYUCo/mDHDEu76hYYxdhdrPYv6fvGv9nnKVyhE9P0h20AU8RZB5OOWQcAXg==", + "dependencies": { + "System.Text.Encodings.Web": "7.0.0", + "System.Text.Json": "7.0.0" + } + }, + "Microsoft.Extensions.FileProviders.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "NyawiW9ZT/liQb34k9YqBSNPLuuPkrjMgQZ24Y/xXX1RoiBkLUdPMaQTmxhZ5TYu8ZKZ9qayzil75JX95vGQUg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.FileProviders.Physical": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "K8D2MTR+EtzkbZ8z80LrG7Ur64R7ZZdRLt1J5cgpc/pUWl0C6IkAUapPuK28oionHueCPELUqq0oYEvZfalNdg==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.FileSystemGlobbing": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "2jONjKHiF+E92ynz2ZFcr9OvxIw+rTGMPEH+UZGeHTEComVav93jQUWGkso8yWwVBcEJGcNcZAaqY01FFJcj7w==" + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "Nw2muoNrOG5U5qa2ZekXwudUn2BJcD41e65zwmDHb1fQegTX66UokLWZkJRpqSSHXDOWZ5V0iqhbxOEky91atA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "lP1yBnTTU42cKpMozuafbvNtQ7QcBjr/CcK3bYOGEMH55Fjt+iecXjT6chR7vbgCMqy3PG3aNQSZgo/EuY/9qQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "zyoB4zblhvpylS9VOmKyBuGH+RjKDsfi0cTB2KRPPDD6tFinpP+vGr3dictaNYLhGUg6jaBmq+2H/WZMCnvGDQ==" + }, + "Mono.TextTemplating": { + "type": "Transitive", + "resolved": "2.2.1", + "contentHash": "KZYeKBET/2Z0gY1WlTAK7+RHTl7GSbtvTLDXEZZojUdAPqpQNDL6tHv7VUpqfX5VEOh+uRGKaZXkuD253nEOBQ==", + "dependencies": { + "System.CodeDom": "4.4.0" + } + }, + "Npgsql": { + "type": "Transitive", + "resolved": "7.0.4", + "contentHash": "7UVPYy2RP0ci04PED1tc9ZCaTw/DfSdSkLiGEFCAvwMwsgA/bAluj1liNzP1IpN0MFofnOF0cm1zJfmbEuCehg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "6.0.0" + } + }, + "System.CodeDom": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "2sCCb7doXEwtYAbqzbF/8UAeDRMNmPaQbU2q50Psg1J9KzumyVVCgKQY8s53WIPTufNT0DpSe9QRvVjOzfDWBA==" + }, + "System.Diagnostics.DiagnosticSource": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "OP6umVGxc0Z0MvZQBVigj4/U31Pw72ITihDWP9WiWDm+q5aoe0GaJivsfYGq53o6dxH7DcXWiCTl7+0o2CGdmg==" + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "DaGSsVqKsn/ia6RG8frjwmJonfos0srquhw09TlT8KRw5I43E+4gs+/bZj4K0vShJ5H9imCuXupb4RmS+dBy3w==", + "dependencies": { + "System.Text.Encodings.Web": "7.0.0" + } + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/common/Edelstein.Common.Utilities/Edelstein.Common.Utilities.csproj b/src/common/Edelstein.Common.Utilities/Edelstein.Common.Utilities.csproj index f4f6b1e68..b0c253e1c 100644 --- a/src/common/Edelstein.Common.Utilities/Edelstein.Common.Utilities.csproj +++ b/src/common/Edelstein.Common.Utilities/Edelstein.Common.Utilities.csproj @@ -8,7 +8,6 @@ - diff --git a/src/common/Edelstein.Common.Utilities/Repositories/Repository.cs b/src/common/Edelstein.Common.Utilities/Repositories/Repository.cs index 3b525efcb..01c794b14 100644 --- a/src/common/Edelstein.Common.Utilities/Repositories/Repository.cs +++ b/src/common/Edelstein.Common.Utilities/Repositories/Repository.cs @@ -7,7 +7,7 @@ public class Repository : IRepository where TKey : notnull where TEntry : IIdentifiable { - private readonly IDictionary _dictionary; + private IDictionary _dictionary; public Repository() => _dictionary = new ConcurrentDictionary(); diff --git a/src/common/Edelstein.Common.Utilities/Templates/TemplateManager.cs b/src/common/Edelstein.Common.Utilities/Templates/TemplateManager.cs index 55f2ae915..1836b8e0f 100644 --- a/src/common/Edelstein.Common.Utilities/Templates/TemplateManager.cs +++ b/src/common/Edelstein.Common.Utilities/Templates/TemplateManager.cs @@ -1,21 +1,29 @@ -using Edelstein.Protocol.Utilities.Templates; +using System.Collections.Frozen; +using Edelstein.Protocol.Utilities.Templates; namespace Edelstein.Common.Utilities.Templates; public class TemplateManager : ITemplateManager where TTemplate : ITemplate { private readonly IDictionary> _providers; + private FrozenDictionary>? _providersFrozen; public TemplateManager() => _providers = new Dictionary>(); - public int Count => _providers.Count; + public int Count => (_providersFrozen ?? _providers).Count; public async Task Retrieve(int key) => - _providers.TryGetValue(key, out var provider) ? await provider.Provide() : default; + (_providersFrozen ?? _providers).TryGetValue(key, out var provider) ? await provider.Provide() : default; public Task> Insert(ITemplateProvider entry) => - Task.FromResult(_providers[entry.ID] = entry); + Task.FromResult((_providersFrozen ?? _providers)[entry.ID] = entry); public async Task> RetrieveAll() => - await Task.WhenAll(_providers.Values.Select(p => p.Provide())); + await Task.WhenAll((_providersFrozen ?? _providers).Values.Select(p => p.Provide())); + + public void Freeze() + { + _providersFrozen = _providers.ToFrozenDictionary(); + _providers.Clear(); + } } diff --git a/src/common/Edelstein.Common.Utilities/Tickers/TickerManager.cs b/src/common/Edelstein.Common.Utilities/Tickers/TickerManager.cs index 16846b151..40d913186 100644 --- a/src/common/Edelstein.Common.Utilities/Tickers/TickerManager.cs +++ b/src/common/Edelstein.Common.Utilities/Tickers/TickerManager.cs @@ -1,5 +1,4 @@ -using System.Collections.Immutable; -using Edelstein.Protocol.Utilities.Tickers; +using Edelstein.Protocol.Utilities.Tickers; using Microsoft.Extensions.Logging; namespace Edelstein.Common.Utilities.Tickers; @@ -18,9 +17,7 @@ public TickerManager(ILogger logger, int refreshRate = 4) public async Task OnTick(DateTime now) { - var tickables = _tickables.ToImmutableList(); - - await Task.WhenAll(tickables.Select(b => + await Task.WhenAll(_tickables.Select(b => Task.Run(async () => { if (!b.IsRequestedCancellation && now >= b.TickNext) @@ -28,7 +25,7 @@ await Task.WhenAll(tickables.Select(b => }) )); - foreach (var b in tickables.Where(b => b.IsRequestedCancellation)) + foreach (var b in _tickables.Where(b => b.IsRequestedCancellation)) _tickables.Remove(b); } diff --git a/src/common/Edelstein.Common.Utilities/packages.lock.json b/src/common/Edelstein.Common.Utilities/packages.lock.json new file mode 100644 index 000000000..b8e0ae293 --- /dev/null +++ b/src/common/Edelstein.Common.Utilities/packages.lock.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Direct", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.IO.RecyclableMemoryStream": { + "type": "Direct", + "requested": "[2.3.2, )", + "resolved": "2.3.2", + "contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q==" + }, + "RBush": { + "type": "Direct", + "requested": "[3.2.0, )", + "resolved": "3.2.0", + "contentHash": "ijGh9N0zZ7JfXk3oQkWCwK8SwSSByexbyh/MjbCjNxOft9eG5ZqKC1vdgiYq78h4IZRFmN4s3JZ/b10Jipud5w==" + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/plugin/Edelstein.Plugin.Rue/Commands/AbstractTemplateCommand.cs b/src/plugin/Edelstein.Plugin.Rue/Commands/AbstractTemplateCommand.cs index dc452883e..ae062449b 100644 --- a/src/plugin/Edelstein.Plugin.Rue/Commands/AbstractTemplateCommand.cs +++ b/src/plugin/Edelstein.Plugin.Rue/Commands/AbstractTemplateCommand.cs @@ -1,4 +1,5 @@ -using System.Diagnostics; +using System.Collections.Immutable; +using System.Diagnostics; using Edelstein.Protocol.Gameplay.Game.Objects.User; using Edelstein.Protocol.Utilities.Templates; using Gma.DataStructures.StringSearch; @@ -72,7 +73,7 @@ protected override async Task Execute(IFieldUser user, TArgs args) var results = _trie .Retrieve(args.Search.ToLower()) .DistinctBy(d => d.ID) - .ToList(); + .ToImmutableArray(); var elapsed = stopwatch.Elapsed; if (args.Search.All(char.IsDigit) && !results.Any()) @@ -90,7 +91,7 @@ protected override async Task Execute(IFieldUser user, TArgs args) { var maxPerPage = 6; var minPage = 1; - var maxPage = (int)Math.Ceiling((double)results.Count / maxPerPage); + var maxPage = (int)Math.Ceiling((double)results.Length / maxPerPage); var currentPage = 1; while (true) @@ -98,7 +99,7 @@ protected override async Task Execute(IFieldUser user, TArgs args) var items = results .Skip(maxPerPage * (currentPage - 1)) .Take(maxPerPage) - .ToList(); + .ToImmutableArray(); var menu = items.ToDictionary( r => r.ID, r => $"{r.DisplayString} ({r.ID})" @@ -107,7 +108,7 @@ protected override async Task Execute(IFieldUser user, TArgs args) if (currentPage < maxPage) menu.Add(-10, "#rNext page#k"); if (currentPage > minPage) menu.Add(-20, "#rPrevious page#k"); - var selection = target.AskMenu($"Found {results.Count} results for '{args.Search}' in {elapsed.TotalMilliseconds:F2}ms (page {currentPage} of {maxPage})", menu); + var selection = target.AskMenu($"Found {results.Length} results for '{args.Search}' in {elapsed.TotalMilliseconds:F2}ms (page {currentPage} of {maxPage})", menu); if (selection == -10) { currentPage++; continue; } if (selection == -20) { currentPage--; continue; } diff --git a/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/EquipCommand.cs b/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/EquipCommand.cs index d0583b7a3..1f878ce63 100644 --- a/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/EquipCommand.cs +++ b/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/EquipCommand.cs @@ -1,4 +1,5 @@ -using Edelstein.Protocol.Gameplay.Game.Objects.User; +using System.Collections.Immutable; +using Edelstein.Protocol.Gameplay.Game.Objects.User; using Edelstein.Protocol.Gameplay.Models.Inventories; using Edelstein.Protocol.Gameplay.Models.Inventories.Items; @@ -11,11 +12,12 @@ public class EquipCommand : AbstractCommand public override async Task Execute(IFieldUser user, string[] args) { - var equipped = user.Character.Inventories[ItemInventoryType.Equip]?.Items.ToList() ?? new List>(); - if (equipped.Count == 0) return; + var equipped = user.Character.Inventories[ItemInventoryType.Equip]?.Items + .ToImmutableArray() ?? ImmutableArray>.Empty; + if (equipped.Length == 0) return; var slot = await user.Prompt(target => target.AskMenu("Which equipment would you like to modify?", equipped - .ToDictionary( + .ToImmutableDictionary( i => (int)i.Key, i => $"{i.Value.ID}" )), -1); diff --git a/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/FieldCommand.cs b/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/FieldCommand.cs index 601928120..037b0cf6d 100644 --- a/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/FieldCommand.cs +++ b/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/FieldCommand.cs @@ -29,7 +29,7 @@ ITemplateManager strings protected override async Task> Indices() { var result = new List(); - var strings = (await _strings.RetrieveAll()).ToList(); + var strings = await _strings.RetrieveAll(); result.AddRange(strings.Select(s => new TemplateCommandIndex(s.ID, s.ID.ToString(), $"{s.StreetName}: {s.MapName}"))); result.AddRange(strings.Select(s => new TemplateCommandIndex(s.ID, s.MapName, $"{s.StreetName}: {s.MapName}"))); diff --git a/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/ItemCommand.cs b/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/ItemCommand.cs index eb5c10555..72bed7e9a 100644 --- a/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/ItemCommand.cs +++ b/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/ItemCommand.cs @@ -24,7 +24,7 @@ ITemplateManager strings protected override async Task> Indices() { var result = new List(); - var strings = (await _strings.RetrieveAll()).ToList(); + var strings = await _strings.RetrieveAll(); result.AddRange(strings.Select(s => new TemplateCommandIndex(s.ID, s.ID.ToString(), s.Name))); result.AddRange(strings.Select(s => new TemplateCommandIndex(s.ID, s.Name, s.Name))); diff --git a/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/MobCommand.cs b/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/MobCommand.cs index d4e0f2be2..4b1792d2d 100644 --- a/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/MobCommand.cs +++ b/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/MobCommand.cs @@ -20,7 +20,7 @@ ITemplateManager strings protected override async Task> Indices() { var result = new List(); - var strings = (await _strings.RetrieveAll()).ToList(); + var strings = await _strings.RetrieveAll(); result.AddRange(strings.Select(s => new TemplateCommandIndex(s.ID, s.ID.ToString(), s.Name))); result.AddRange(strings.Select(s => new TemplateCommandIndex(s.ID, s.Name, s.Name))); diff --git a/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/NPCCommand.cs b/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/NPCCommand.cs index e30b0b325..d4940f088 100644 --- a/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/NPCCommand.cs +++ b/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/NPCCommand.cs @@ -20,7 +20,7 @@ ITemplateManager strings protected override async Task> Indices() { var result = new List(); - var strings = (await _strings.RetrieveAll()).ToList(); + var strings = await _strings.RetrieveAll(); result.AddRange(strings.Select(s => new TemplateCommandIndex(s.ID, s.ID.ToString(), s.Name))); result.AddRange(strings.Select(s => new TemplateCommandIndex(s.ID, s.Name, $"{s.Name}{(!string.IsNullOrWhiteSpace(s.Func) ? $": {s.Func}" : "")}"))); diff --git a/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/QuestCommand.cs b/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/QuestCommand.cs index a892dbd9e..ede09ebb3 100644 --- a/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/QuestCommand.cs +++ b/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/QuestCommand.cs @@ -21,7 +21,7 @@ ITemplateManager templates protected override async Task> Indices() { var result = new List(); - var strings = (await _strings.RetrieveAll()).ToList(); + var strings = await _strings.RetrieveAll(); result.AddRange(strings.Select(s => new TemplateCommandIndex(s.ID, s.ID.ToString(), s.Name))); result.AddRange(strings.Select(s => new TemplateCommandIndex(s.ID, s.Name, s.Name))); diff --git a/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/SkillCommand.cs b/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/SkillCommand.cs index 5a9186ac0..c441f89a0 100644 --- a/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/SkillCommand.cs +++ b/src/plugin/Edelstein.Plugin.Rue/Commands/Admin/SkillCommand.cs @@ -26,7 +26,7 @@ ITemplateManager strings protected override async Task> Indices() { var result = new List(); - var strings = (await _strings.RetrieveAll()).ToList(); + var strings = await _strings.RetrieveAll(); result.AddRange(strings.Select(s => new TemplateCommandIndex(s.ID, s.ID.ToString(), s.Name))); result.AddRange(strings.Select(s => new TemplateCommandIndex(s.ID, s.Name, s.Name))); diff --git a/src/plugin/Edelstein.Plugin.Rue/packages.lock.json b/src/plugin/Edelstein.Plugin.Rue/packages.lock.json new file mode 100644 index 000000000..11f06410a --- /dev/null +++ b/src/plugin/Edelstein.Plugin.Rue/packages.lock.json @@ -0,0 +1,151 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Microsoft.Extensions.Configuration.Binder": { + "type": "Direct", + "requested": "[7.0.4, )", + "resolved": "7.0.4", + "contentHash": "8+XPvJnHZsYgHOQlcMuQe7QNF5KdVKHH1F/wW3nd8/u81Gk/XFAYMDP0Lpz18h7/AM95M662vvqMorcYxCBB4w==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0" + } + }, + "PowerArgs": { + "type": "Direct", + "requested": "[4.0.2, )", + "resolved": "4.0.2", + "contentHash": "OvnFpO5T68RcZ14XTbHPGrPV3iXv8pxitTbP3oPTY87UZmnFyx6DzFWCjNIzrE8ACHm2PaNcTSfpCJD29/cTng==" + }, + "TrieNet": { + "type": "Direct", + "requested": "[1.0.3.26316, )", + "resolved": "1.0.3.26316", + "contentHash": "H9Qo4oF+jVlhFznnDbic/gZ1vlEiXI3XTkfWGWK0tES1yh6lXHtYrRiZGRlhx6FGbkcwCCSCxr0ZvqgKu9usmw==" + }, + "Duey.Abstractions": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "tY5wKwXNZ6cBeyHxvxyLy57TxUaA6H82/vW8vTTmikG9bkfRzfyS0EEDloiPzL4ln8P+3aZxeAestjPC6942Kg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "zyoB4zblhvpylS9VOmKyBuGH+RjKDsfi0cTB2KRPPDD6tFinpP+vGr3dictaNYLhGUg6jaBmq+2H/WZMCnvGDQ==" + }, + "Microsoft.IO.RecyclableMemoryStream": { + "type": "Transitive", + "resolved": "2.3.2", + "contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q==" + }, + "RBush": { + "type": "Transitive", + "resolved": "3.2.0", + "contentHash": "ijGh9N0zZ7JfXk3oQkWCwK8SwSSByexbyh/MjbCjNxOft9eG5ZqKC1vdgiYq78h4IZRFmN4s3JZ/b10Jipud5w==" + }, + "edelstein.common.constants": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )" + } + }, + "edelstein.common.utilities": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )", + "Microsoft.IO.RecyclableMemoryStream": "[2.3.2, )", + "RBush": "[3.2.0, )" + } + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.gameplay.game": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Auth": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )" + } + }, + "edelstein.protocol.gameplay.login": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Auth": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.plugin": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[8.0.0-rc.1.23419.4, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "edelstein.protocol.plugin.game": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay.Game": "[1.0.0, )", + "Edelstein.Protocol.Plugin": "[1.0.0, )" + } + }, + "edelstein.protocol.plugin.login": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay.Login": "[1.0.0, )", + "Edelstein.Protocol.Plugin": "[1.0.0, )" + } + }, + "edelstein.protocol.services.auth": { + "type": "Project" + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Gameplay.Game/packages.lock.json b/src/protocol/Edelstein.Protocol.Gameplay.Game/packages.lock.json new file mode 100644 index 000000000..7c19465bd --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Gameplay.Game/packages.lock.json @@ -0,0 +1,47 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Duey.Abstractions": { + "type": "Direct", + "requested": "[2.0.0, )", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.auth": { + "type": "Project" + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Gameplay.Login/packages.lock.json b/src/protocol/Edelstein.Protocol.Gameplay.Login/packages.lock.json new file mode 100644 index 000000000..7c19465bd --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Gameplay.Login/packages.lock.json @@ -0,0 +1,47 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Duey.Abstractions": { + "type": "Direct", + "requested": "[2.0.0, )", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.auth": { + "type": "Project" + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Gameplay.Shop/packages.lock.json b/src/protocol/Edelstein.Protocol.Gameplay.Shop/packages.lock.json new file mode 100644 index 000000000..7c19465bd --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Gameplay.Shop/packages.lock.json @@ -0,0 +1,47 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Duey.Abstractions": { + "type": "Direct", + "requested": "[2.0.0, )", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.auth": { + "type": "Project" + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Gameplay.Trade/packages.lock.json b/src/protocol/Edelstein.Protocol.Gameplay.Trade/packages.lock.json new file mode 100644 index 000000000..7c19465bd --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Gameplay.Trade/packages.lock.json @@ -0,0 +1,47 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Duey.Abstractions": { + "type": "Direct", + "requested": "[2.0.0, )", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.auth": { + "type": "Project" + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Gameplay/packages.lock.json b/src/protocol/Edelstein.Protocol.Gameplay/packages.lock.json new file mode 100644 index 000000000..296eddbe7 --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Gameplay/packages.lock.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Duey.Abstractions": { + "type": "Direct", + "requested": "[2.0.0, )", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Network/packages.lock.json b/src/protocol/Edelstein.Protocol.Network/packages.lock.json new file mode 100644 index 000000000..f1cf99cd6 --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Network/packages.lock.json @@ -0,0 +1,10 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Plugin.Game/packages.lock.json b/src/protocol/Edelstein.Protocol.Plugin.Game/packages.lock.json new file mode 100644 index 000000000..54541c49a --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Plugin.Game/packages.lock.json @@ -0,0 +1,82 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Duey.Abstractions": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "tY5wKwXNZ6cBeyHxvxyLy57TxUaA6H82/vW8vTTmikG9bkfRzfyS0EEDloiPzL4ln8P+3aZxeAestjPC6942Kg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "zyoB4zblhvpylS9VOmKyBuGH+RjKDsfi0cTB2KRPPDD6tFinpP+vGr3dictaNYLhGUg6jaBmq+2H/WZMCnvGDQ==" + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.gameplay.game": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Auth": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.plugin": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[8.0.0-rc.1.23419.4, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "edelstein.protocol.services.auth": { + "type": "Project" + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Plugin.Login/packages.lock.json b/src/protocol/Edelstein.Protocol.Plugin.Login/packages.lock.json new file mode 100644 index 000000000..7094a389b --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Plugin.Login/packages.lock.json @@ -0,0 +1,81 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Duey.Abstractions": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "tY5wKwXNZ6cBeyHxvxyLy57TxUaA6H82/vW8vTTmikG9bkfRzfyS0EEDloiPzL4ln8P+3aZxeAestjPC6942Kg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "zyoB4zblhvpylS9VOmKyBuGH+RjKDsfi0cTB2KRPPDD6tFinpP+vGr3dictaNYLhGUg6jaBmq+2H/WZMCnvGDQ==" + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.gameplay.login": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Auth": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.plugin": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[8.0.0-rc.1.23419.4, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "edelstein.protocol.services.auth": { + "type": "Project" + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Plugin.Shop/packages.lock.json b/src/protocol/Edelstein.Protocol.Plugin.Shop/packages.lock.json new file mode 100644 index 000000000..9712f719a --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Plugin.Shop/packages.lock.json @@ -0,0 +1,82 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Duey.Abstractions": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "tY5wKwXNZ6cBeyHxvxyLy57TxUaA6H82/vW8vTTmikG9bkfRzfyS0EEDloiPzL4ln8P+3aZxeAestjPC6942Kg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "zyoB4zblhvpylS9VOmKyBuGH+RjKDsfi0cTB2KRPPDD6tFinpP+vGr3dictaNYLhGUg6jaBmq+2H/WZMCnvGDQ==" + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.gameplay.shop": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Auth": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.plugin": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[8.0.0-rc.1.23419.4, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "edelstein.protocol.services.auth": { + "type": "Project" + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Plugin.Trade/packages.lock.json b/src/protocol/Edelstein.Protocol.Plugin.Trade/packages.lock.json new file mode 100644 index 000000000..591f1e4dd --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Plugin.Trade/packages.lock.json @@ -0,0 +1,82 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Duey.Abstractions": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "tY5wKwXNZ6cBeyHxvxyLy57TxUaA6H82/vW8vTTmikG9bkfRzfyS0EEDloiPzL4ln8P+3aZxeAestjPC6942Kg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "zyoB4zblhvpylS9VOmKyBuGH+RjKDsfi0cTB2KRPPDD6tFinpP+vGr3dictaNYLhGUg6jaBmq+2H/WZMCnvGDQ==" + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.gameplay.trade": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Services.Auth": "[1.0.0, )", + "Edelstein.Protocol.Services.Server": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.plugin": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[8.0.0-rc.1.23419.4, )", + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "edelstein.protocol.services.auth": { + "type": "Project" + }, + "edelstein.protocol.services.server": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Gameplay": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Plugin/Edelstein.Protocol.Plugin.csproj b/src/protocol/Edelstein.Protocol.Plugin/Edelstein.Protocol.Plugin.csproj index 651399f48..f137b5568 100644 --- a/src/protocol/Edelstein.Protocol.Plugin/Edelstein.Protocol.Plugin.csproj +++ b/src/protocol/Edelstein.Protocol.Plugin/Edelstein.Protocol.Plugin.csproj @@ -7,7 +7,7 @@ - + diff --git a/src/protocol/Edelstein.Protocol.Plugin/packages.lock.json b/src/protocol/Edelstein.Protocol.Plugin/packages.lock.json new file mode 100644 index 000000000..37f227e62 --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Plugin/packages.lock.json @@ -0,0 +1,30 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Direct", + "requested": "[8.0.0-rc.1.23419.4, )", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "tY5wKwXNZ6cBeyHxvxyLy57TxUaA6H82/vW8vTTmikG9bkfRzfyS0EEDloiPzL4ln8P+3aZxeAestjPC6942Kg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0-rc.1.23419.4" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Direct", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "8.0.0-rc.1.23419.4", + "contentHash": "zyoB4zblhvpylS9VOmKyBuGH+RjKDsfi0cTB2KRPPDD6tFinpP+vGr3dictaNYLhGUg6jaBmq+2H/WZMCnvGDQ==" + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Scripting/packages.lock.json b/src/protocol/Edelstein.Protocol.Scripting/packages.lock.json new file mode 100644 index 000000000..807ab822b --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Scripting/packages.lock.json @@ -0,0 +1,6 @@ +{ + "version": 1, + "dependencies": { + "net8.0": {} + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Services.Auth/packages.lock.json b/src/protocol/Edelstein.Protocol.Services.Auth/packages.lock.json new file mode 100644 index 000000000..807ab822b --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Services.Auth/packages.lock.json @@ -0,0 +1,6 @@ +{ + "version": 1, + "dependencies": { + "net8.0": {} + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Services.Server/packages.lock.json b/src/protocol/Edelstein.Protocol.Services.Server/packages.lock.json new file mode 100644 index 000000000..bb28e8006 --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Services.Server/packages.lock.json @@ -0,0 +1,36 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Duey.Abstractions": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "KP3l7yZoT1uMk8B+rAjZ3VL+2/XfXZxKTx31wDz7JNfcPnUmllJpgoqnDYQcVEJ5e4WLWToBQHZ3OIgOm6T/kg==" + }, + "edelstein.protocol.gameplay": { + "type": "Project", + "dependencies": { + "Duey.Abstractions": "[2.0.0, )", + "Edelstein.Protocol.Network": "[1.0.0, )", + "Edelstein.Protocol.Services.Social": "[1.0.0, )", + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.network": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.services.social": { + "type": "Project", + "dependencies": { + "Edelstein.Protocol.Utilities": "[1.0.0, )" + } + }, + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Services.Social/packages.lock.json b/src/protocol/Edelstein.Protocol.Services.Social/packages.lock.json new file mode 100644 index 000000000..f1cf99cd6 --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Services.Social/packages.lock.json @@ -0,0 +1,10 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "edelstein.protocol.utilities": { + "type": "Project" + } + } + } +} \ No newline at end of file diff --git a/src/protocol/Edelstein.Protocol.Utilities/Repositories/Methods/IRepositoryMethodFreeze.cs b/src/protocol/Edelstein.Protocol.Utilities/Repositories/Methods/IRepositoryMethodFreeze.cs new file mode 100644 index 000000000..9acb44fd3 --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Utilities/Repositories/Methods/IRepositoryMethodFreeze.cs @@ -0,0 +1,6 @@ +namespace Edelstein.Protocol.Utilities.Repositories.Methods; + +public interface IRepositoryMethodFreeze +{ + void Freeze(); +} diff --git a/src/protocol/Edelstein.Protocol.Utilities/Templates/ITemplateManager.cs b/src/protocol/Edelstein.Protocol.Utilities/Templates/ITemplateManager.cs index 8b0f26b7e..a7d439dc0 100644 --- a/src/protocol/Edelstein.Protocol.Utilities/Templates/ITemplateManager.cs +++ b/src/protocol/Edelstein.Protocol.Utilities/Templates/ITemplateManager.cs @@ -5,7 +5,8 @@ namespace Edelstein.Protocol.Utilities.Templates; public interface ITemplateManager : IRepositoryMethodRetrieve, IRepositoryMethodRetrieveAll, - IRepositoryMethodInsert> + IRepositoryMethodInsert>, + IRepositoryMethodFreeze where TTemplate : ITemplate { int Count { get; } diff --git a/src/protocol/Edelstein.Protocol.Utilities/packages.lock.json b/src/protocol/Edelstein.Protocol.Utilities/packages.lock.json new file mode 100644 index 000000000..807ab822b --- /dev/null +++ b/src/protocol/Edelstein.Protocol.Utilities/packages.lock.json @@ -0,0 +1,6 @@ +{ + "version": 1, + "dependencies": { + "net8.0": {} + } +} \ No newline at end of file