From 44234cf6ad86f9be242fdc939af09924bcf65022 Mon Sep 17 00:00:00 2001 From: CWX Date: Sun, 12 Jan 2025 15:31:22 +0000 Subject: [PATCH 01/12] callbacks --- Core/Callbacks/BotCallbacks.cs | 2 +- Core/Callbacks/BundleCallbacks.cs | 7 ++++--- Core/Callbacks/CustomizationCallbacks.cs | 2 +- Core/Callbacks/DataCallbacks.cs | 2 +- Core/Callbacks/GameCallbacks.cs | 3 ++- Core/Callbacks/MatchCallbacks.cs | 4 ++-- Core/Callbacks/NotifierCallbacks.cs | 2 +- Core/Callbacks/TraderCallbacks.cs | 1 + 8 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Core/Callbacks/BotCallbacks.cs b/Core/Callbacks/BotCallbacks.cs index e6112219..c99a47fd 100644 --- a/Core/Callbacks/BotCallbacks.cs +++ b/Core/Callbacks/BotCallbacks.cs @@ -10,7 +10,7 @@ using Core.Utils; namespace Core.Callbacks; -[Injectable] +[Injectable(InjectableTypeOverride = typeof(BotCallbacks))] public class BotCallbacks { protected BotController _botController; diff --git a/Core/Callbacks/BundleCallbacks.cs b/Core/Callbacks/BundleCallbacks.cs index 10b6c964..bb1ef5e0 100644 --- a/Core/Callbacks/BundleCallbacks.cs +++ b/Core/Callbacks/BundleCallbacks.cs @@ -1,4 +1,5 @@ using Core.Annotations; +using Core.Models.Eft.Common; using Core.Models.Enums; using Core.Models.Spt.Config; using Core.Servers; @@ -6,7 +7,7 @@ using Core.Utils; namespace Core.Callbacks; -[Injectable] +[Injectable(InjectableTypeOverride = typeof(BundleCallbacks))] public class BundleCallbacks { protected HttpResponseUtil _httpResponseUtil; @@ -34,10 +35,10 @@ public class BundleCallbacks /// /// /// - public string GetBundles(string url, object info, string sessionID) + public string GetBundles(string url, EmptyRequestData info, string sessionID) { // return _httpResponseUtil.NoBody(_bundleLoader.GetBundles()); - throw new NotImplementedException(); + return _httpResponseUtil.NoBody(new List()); } public string GetBundle(string url, object info, string sessionID) diff --git a/Core/Callbacks/CustomizationCallbacks.cs b/Core/Callbacks/CustomizationCallbacks.cs index 411e77af..251d21bc 100644 --- a/Core/Callbacks/CustomizationCallbacks.cs +++ b/Core/Callbacks/CustomizationCallbacks.cs @@ -82,7 +82,7 @@ public class CustomizationCallbacks /// /// /// - public string GetHideoutCustomisation(PmcData pmcData, EmptyRequestData info, string sessionID) + public string GetHideoutCustomisation(string url, EmptyRequestData info, string sessionID) { return _httpResponseUtil.GetBody(_customizationController.GetHideoutCustomisation(sessionID, info)); } diff --git a/Core/Callbacks/DataCallbacks.cs b/Core/Callbacks/DataCallbacks.cs index ecb32aca..d641c0cb 100644 --- a/Core/Callbacks/DataCallbacks.cs +++ b/Core/Callbacks/DataCallbacks.cs @@ -12,7 +12,7 @@ using Core.Utils; namespace Core.Callbacks; -[Injectable] +[Injectable(InjectableTypeOverride = typeof(DataCallbacks))] public class DataCallbacks { protected HttpResponseUtil _httpResponseUtil; diff --git a/Core/Callbacks/GameCallbacks.cs b/Core/Callbacks/GameCallbacks.cs index 2a7aaf3c..c5a5a8e6 100644 --- a/Core/Callbacks/GameCallbacks.cs +++ b/Core/Callbacks/GameCallbacks.cs @@ -11,6 +11,7 @@ using Core.Utils; namespace Core.Callbacks; [Injectable(InjectableTypeOverride = typeof(OnLoad), TypePriority = OnLoadOrder.GameCallbacks)] +[Injectable(InjectableTypeOverride = typeof(GameCallbacks))] public class GameCallbacks : OnLoad { protected HttpResponseUtil _httpResponseUtil; @@ -214,7 +215,7 @@ public class GameCallbacks : OnLoad /// /// /// - public string GetSurveyView(string url, object info, string sessionID) + public string GetSurveyView(string url, SendSurveyOpinionRequest info, string sessionID) { return _httpResponseUtil.NullResponse(); } diff --git a/Core/Callbacks/MatchCallbacks.cs b/Core/Callbacks/MatchCallbacks.cs index 03c7ebf6..d056aa1f 100644 --- a/Core/Callbacks/MatchCallbacks.cs +++ b/Core/Callbacks/MatchCallbacks.cs @@ -38,7 +38,7 @@ public class MatchCallbacks /// /// /// - public string UpdatePing(string url, EmptyRequestData info, string sessionID) + public string UpdatePing(string url, UpdatePingRequestData info, string sessionID) { return _httpResponseUtil.NullResponse(); } @@ -230,7 +230,7 @@ public class MatchCallbacks /// /// /// - public string GetMetrics(string url, object info, string sessionID) + public string GetMetrics(string url, EmptyRequestData info, string sessionID) { return _httpResponseUtil.GetBody(_databaseService.GetMatch().Metrics); } diff --git a/Core/Callbacks/NotifierCallbacks.cs b/Core/Callbacks/NotifierCallbacks.cs index b70ffc3d..907cdd66 100644 --- a/Core/Callbacks/NotifierCallbacks.cs +++ b/Core/Callbacks/NotifierCallbacks.cs @@ -9,7 +9,7 @@ using Core.Utils; namespace Core.Callbacks; -[Injectable] +[Injectable(InjectableTypeOverride = typeof(NotifierCallbacks))] public class NotifierCallbacks { protected HttpResponseUtil _httpResponseUtil; diff --git a/Core/Callbacks/TraderCallbacks.cs b/Core/Callbacks/TraderCallbacks.cs index bedf48e4..11f443db 100644 --- a/Core/Callbacks/TraderCallbacks.cs +++ b/Core/Callbacks/TraderCallbacks.cs @@ -13,6 +13,7 @@ namespace Core.Callbacks; [Injectable(InjectableTypeOverride = typeof(OnLoad), TypePriority = OnLoadOrder.TraderCallbacks)] [Injectable(InjectableTypeOverride = typeof(OnUpdate), TypePriority = OnUpdateOrder.TraderCallbacks)] +[Injectable(InjectableTypeOverride = typeof(TraderCallbacks))] public class TraderCallbacks : OnLoad, OnUpdate { protected HttpResponseUtil _httpResponseUtil; From a46ac0b5104071491a8c794f2111de2a56c7c9db Mon Sep 17 00:00:00 2001 From: CWX Date: Sun, 12 Jan 2025 15:31:29 +0000 Subject: [PATCH 02/12] controllers --- Core/Controllers/GameController.cs | 15 ++++++++++++++- Core/Controllers/InRaidController.cs | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Core/Controllers/GameController.cs b/Core/Controllers/GameController.cs index 59d81ebc..dcea81eb 100644 --- a/Core/Controllers/GameController.cs +++ b/Core/Controllers/GameController.cs @@ -2,12 +2,21 @@ using Core.Annotations; using Core.Models.Eft.Common; using Core.Models.Eft.Game; using Core.Models.Eft.Profile; +using ILogger = Core.Models.Utils.ILogger; namespace Core.Controllers; [Injectable] public class GameController { + protected ILogger _logger; + + + public GameController() + { + + } + /// /// Handle client/game/start /// @@ -54,7 +63,11 @@ public class GameController string sessionId, GameModeRequestData requestData) { - throw new NotImplementedException(); + return new() + { + GameMode = "pve", + BackendUrl = "127.0.0.1:6969" + }; } /// diff --git a/Core/Controllers/InRaidController.cs b/Core/Controllers/InRaidController.cs index 5c811274..758679b9 100644 --- a/Core/Controllers/InRaidController.cs +++ b/Core/Controllers/InRaidController.cs @@ -100,6 +100,6 @@ public class InRaidController string url, string sessionId) { - throw new NotImplementedException(); + return _botConfig.AssaultToBossConversion.BossesToConvertToWeights.Keys.ToList(); } } From e4baba50d177f5c62014da95a961a2718f6db253 Mon Sep 17 00:00:00 2001 From: CWX Date: Sun, 12 Jan 2025 15:31:37 +0000 Subject: [PATCH 03/12] Router override --- Core/DI/Router.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/DI/Router.cs b/Core/DI/Router.cs index 1865fdf8..3608fd4b 100644 --- a/Core/DI/Router.cs +++ b/Core/DI/Router.cs @@ -11,7 +11,7 @@ public abstract class Router { protected List handledRoutes = []; - public string GetTopLevelRoute() + public virtual string GetTopLevelRoute() { return "spt"; } From 4f5f2b40f1bffaab5ed739218cdcf6184cafe8a4 Mon Sep 17 00:00:00 2001 From: CWX Date: Sun, 12 Jan 2025 15:32:12 +0000 Subject: [PATCH 04/12] make requests use interface --- Core/Models/Eft/Bot/GenerateBotsRequestData.cs | 5 +++-- Core/Models/Eft/Builds/SetMagazineRequest.cs | 5 +++-- Core/Models/Eft/Common/Request/UIDRequestData.cs | 5 +++-- Core/Models/Eft/Dialog/AcceptFriendRequestData.cs | 5 +++-- Core/Models/Eft/Dialog/AddUserGroupMailRequest.cs | 5 +++-- Core/Models/Eft/Dialog/ChangeGroupMailOwnerRequest.cs | 5 +++-- Core/Models/Eft/Dialog/ClearMailMessageRequest.cs | 5 +++-- Core/Models/Eft/Dialog/CreateGroupMailRequest.cs | 5 +++-- Core/Models/Eft/Dialog/DeleteFriendRequest.cs | 5 +++-- Core/Models/Eft/Dialog/FriendRequestData.cs | 5 +++-- Core/Models/Eft/Dialog/GetAllAttachmentsRequestData.cs | 3 ++- Core/Models/Eft/Dialog/GetChatServerListRequestData.cs | 5 +++-- Core/Models/Eft/Dialog/GetMailDialogInfoRequestData.cs | 5 +++-- Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs | 5 +++-- Core/Models/Eft/Dialog/GetMailDialogViewRequestData.cs | 5 +++-- Core/Models/Eft/Dialog/PinDialogRequestData.cs | 5 +++-- Core/Models/Eft/Dialog/RemoveDialogRequestData.cs | 5 +++-- Core/Models/Eft/Dialog/RemoveMailMessageRequest.cs | 5 +++-- Core/Models/Eft/Dialog/RemoveUserGroupMailRequest.cs | 5 +++-- Core/Models/Eft/Dialog/SendMessageRequest.cs | 5 +++-- Core/Models/Eft/Dialog/SetDialogReadRequestData.cs | 3 ++- Core/Models/Eft/Game/GameEmptyCrcRequestData.cs | 5 +++-- Core/Models/Eft/Game/GameModeRequestData.cs | 5 +++-- Core/Models/Eft/Game/GameModeResponse.cs | 4 ++-- Core/Models/Eft/Game/GetRaidTimeRequest.cs | 5 +++-- Core/Models/Eft/Game/SendSurveyOpinionRequest.cs | 5 +++-- Core/Models/Eft/Game/VersionValidateRequestData.cs | 5 +++-- Core/Models/Eft/InRaid/RegisterPlayerRequestData.cs | 5 +++-- Core/Models/Eft/InRaid/ScavSaveRequestData.cs | 5 +++-- Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs | 5 +++-- Core/Models/Eft/Location/GetAirdropLootRequest.cs | 5 +++-- Core/Models/Eft/Match/EndLocalRaidRequestData.cs | 5 +++-- Core/Models/Eft/Match/GetRaidConfigurationRequestData.cs | 5 +++-- Core/Models/Eft/Match/MatchGroupInviteSendRequest.cs | 5 +++-- Core/Models/Eft/Match/MatchGroupPlayerRemoveRequest.cs | 5 +++-- Core/Models/Eft/Match/MatchGroupStartGameRequest.cs | 5 +++-- Core/Models/Eft/Match/MatchGroupStatusRequest.cs | 5 +++-- Core/Models/Eft/Match/MatchGroupTransferRequest.cs | 5 +++-- Core/Models/Eft/Match/PutMetricsRequestData.cs | 5 +++-- Core/Models/Eft/Match/RequestIdRequest.cs | 5 +++-- Core/Models/Eft/Match/StartLocalRaidRequestData.cs | 5 +++-- Core/Models/Eft/Match/UpdatePingRequestData.cs | 3 ++- Core/Models/Eft/PresetBuild/PresetBuildActionRequestData.cs | 5 +++-- Core/Models/Eft/PresetBuild/RemoveBuildRequestData.cs | 5 +++-- Core/Models/Spt/Logging/ClientLogRequest.cs | 5 +++-- 45 files changed, 131 insertions(+), 87 deletions(-) diff --git a/Core/Models/Eft/Bot/GenerateBotsRequestData.cs b/Core/Models/Eft/Bot/GenerateBotsRequestData.cs index a27facff..ab5946a9 100644 --- a/Core/Models/Eft/Bot/GenerateBotsRequestData.cs +++ b/Core/Models/Eft/Bot/GenerateBotsRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Bot; -public class GenerateBotsRequestData +public class GenerateBotsRequestData : IRequestData { [JsonPropertyName("conditions")] public List? Conditions { get; set; } @@ -21,4 +22,4 @@ public class Condition [JsonPropertyName("Difficulty")] public string? Difficulty { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Builds/SetMagazineRequest.cs b/Core/Models/Eft/Builds/SetMagazineRequest.cs index 491d62b7..0c3c836a 100644 --- a/Core/Models/Eft/Builds/SetMagazineRequest.cs +++ b/Core/Models/Eft/Builds/SetMagazineRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; using Core.Models.Eft.Profile; +using Core.Models.Utils; namespace Core.Models.Eft.Builds; -public class SetMagazineRequest +public class SetMagazineRequest : IRequestData { [JsonPropertyName("Id")] public string? Id { get; set; } @@ -22,4 +23,4 @@ public class SetMagazineRequest [JsonPropertyName("BottomCount")] public int? BottomCount { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Common/Request/UIDRequestData.cs b/Core/Models/Eft/Common/Request/UIDRequestData.cs index a3acd166..6d4030a7 100644 --- a/Core/Models/Eft/Common/Request/UIDRequestData.cs +++ b/Core/Models/Eft/Common/Request/UIDRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Common.Request; -public class UIDRequestData +public class UIDRequestData : IRequestData { [JsonPropertyName("uid")] public string? Uid { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/AcceptFriendRequestData.cs b/Core/Models/Eft/Dialog/AcceptFriendRequestData.cs index 5cd4b141..5fe145cf 100644 --- a/Core/Models/Eft/Dialog/AcceptFriendRequestData.cs +++ b/Core/Models/Eft/Dialog/AcceptFriendRequestData.cs @@ -1,4 +1,5 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; @@ -14,8 +15,8 @@ public class DeclineFriendRequestData : BaseFriendRequest { } -public class BaseFriendRequest +public class BaseFriendRequest : IRequestData { [JsonPropertyName("profileId")] public string? ProfileId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/AddUserGroupMailRequest.cs b/Core/Models/Eft/Dialog/AddUserGroupMailRequest.cs index 4b9d1b8a..1f58f93f 100644 --- a/Core/Models/Eft/Dialog/AddUserGroupMailRequest.cs +++ b/Core/Models/Eft/Dialog/AddUserGroupMailRequest.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class AddUserGroupMailRequest +public class AddUserGroupMailRequest : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } [JsonPropertyName("uid")] public string? Uid { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/ChangeGroupMailOwnerRequest.cs b/Core/Models/Eft/Dialog/ChangeGroupMailOwnerRequest.cs index 281b7281..a6625404 100644 --- a/Core/Models/Eft/Dialog/ChangeGroupMailOwnerRequest.cs +++ b/Core/Models/Eft/Dialog/ChangeGroupMailOwnerRequest.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class ChangeGroupMailOwnerRequest +public class ChangeGroupMailOwnerRequest : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } [JsonPropertyName("uid")] public string? Uid { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/ClearMailMessageRequest.cs b/Core/Models/Eft/Dialog/ClearMailMessageRequest.cs index 69c84414..e1fee7c1 100644 --- a/Core/Models/Eft/Dialog/ClearMailMessageRequest.cs +++ b/Core/Models/Eft/Dialog/ClearMailMessageRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class ClearMailMessageRequest +public class ClearMailMessageRequest : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/CreateGroupMailRequest.cs b/Core/Models/Eft/Dialog/CreateGroupMailRequest.cs index c012819b..ad4b8cf5 100644 --- a/Core/Models/Eft/Dialog/CreateGroupMailRequest.cs +++ b/Core/Models/Eft/Dialog/CreateGroupMailRequest.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class CreateGroupMailRequest +public class CreateGroupMailRequest : IRequestData { [JsonPropertyName("Name")] public string? Name { get; set; } [JsonPropertyName("Users")] public List? Users { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/DeleteFriendRequest.cs b/Core/Models/Eft/Dialog/DeleteFriendRequest.cs index 73628f79..841d006e 100644 --- a/Core/Models/Eft/Dialog/DeleteFriendRequest.cs +++ b/Core/Models/Eft/Dialog/DeleteFriendRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class DeleteFriendRequest +public class DeleteFriendRequest : IRequestData { [JsonPropertyName("friend_id")] public string? FriendId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/FriendRequestData.cs b/Core/Models/Eft/Dialog/FriendRequestData.cs index 8690f0f5..fea8ad4e 100644 --- a/Core/Models/Eft/Dialog/FriendRequestData.cs +++ b/Core/Models/Eft/Dialog/FriendRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class FriendRequestData +public class FriendRequestData : IRequestData { [JsonPropertyName("status")] public int? Status { get; set; } @@ -12,4 +13,4 @@ public class FriendRequestData [JsonPropertyName("retryAfter")] public int? RetryAfter { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/GetAllAttachmentsRequestData.cs b/Core/Models/Eft/Dialog/GetAllAttachmentsRequestData.cs index 49db448c..3ba62fdf 100644 --- a/Core/Models/Eft/Dialog/GetAllAttachmentsRequestData.cs +++ b/Core/Models/Eft/Dialog/GetAllAttachmentsRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class GetAllAttachmentsRequestData +public class GetAllAttachmentsRequestData : IRequestData { [JsonPropertyName("dialogId")] public string DialogId { get; set; } diff --git a/Core/Models/Eft/Dialog/GetChatServerListRequestData.cs b/Core/Models/Eft/Dialog/GetChatServerListRequestData.cs index 5664a516..1e8ac4ed 100644 --- a/Core/Models/Eft/Dialog/GetChatServerListRequestData.cs +++ b/Core/Models/Eft/Dialog/GetChatServerListRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class GetChatServerListRequestData +public class GetChatServerListRequestData : IRequestData { [JsonPropertyName("VersionId")] public string? VersionId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/GetMailDialogInfoRequestData.cs b/Core/Models/Eft/Dialog/GetMailDialogInfoRequestData.cs index 8aca17e2..92f275d3 100644 --- a/Core/Models/Eft/Dialog/GetMailDialogInfoRequestData.cs +++ b/Core/Models/Eft/Dialog/GetMailDialogInfoRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class GetMailDialogInfoRequestData +public class GetMailDialogInfoRequestData : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs b/Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs index 19fcd49b..94309af8 100644 --- a/Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs +++ b/Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class GetMailDialogListRequestData +public class GetMailDialogListRequestData : IRequestData { [JsonPropertyName("limit")] public int? Limit { get; set; } [JsonPropertyName("offset")] public int? Offset { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/GetMailDialogViewRequestData.cs b/Core/Models/Eft/Dialog/GetMailDialogViewRequestData.cs index 8de5c422..4d265587 100644 --- a/Core/Models/Eft/Dialog/GetMailDialogViewRequestData.cs +++ b/Core/Models/Eft/Dialog/GetMailDialogViewRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; using Core.Models.Enums; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class GetMailDialogViewRequestData +public class GetMailDialogViewRequestData : IRequestData { [JsonPropertyName("type")] public MessageType? Type { get; set; } @@ -16,4 +17,4 @@ public class GetMailDialogViewRequestData [JsonPropertyName("time")] public decimal? Time { get; set; } // decimal -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/PinDialogRequestData.cs b/Core/Models/Eft/Dialog/PinDialogRequestData.cs index d98657da..49a1c81b 100644 --- a/Core/Models/Eft/Dialog/PinDialogRequestData.cs +++ b/Core/Models/Eft/Dialog/PinDialogRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class PinDialogRequestData +public class PinDialogRequestData : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/RemoveDialogRequestData.cs b/Core/Models/Eft/Dialog/RemoveDialogRequestData.cs index 08c05ec2..b7ccccb4 100644 --- a/Core/Models/Eft/Dialog/RemoveDialogRequestData.cs +++ b/Core/Models/Eft/Dialog/RemoveDialogRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class RemoveDialogRequestData +public class RemoveDialogRequestData : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/RemoveMailMessageRequest.cs b/Core/Models/Eft/Dialog/RemoveMailMessageRequest.cs index 54d96164..87ac9fd8 100644 --- a/Core/Models/Eft/Dialog/RemoveMailMessageRequest.cs +++ b/Core/Models/Eft/Dialog/RemoveMailMessageRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class RemoveMailMessageRequest +public class RemoveMailMessageRequest : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/RemoveUserGroupMailRequest.cs b/Core/Models/Eft/Dialog/RemoveUserGroupMailRequest.cs index f70adf30..9ce86e8b 100644 --- a/Core/Models/Eft/Dialog/RemoveUserGroupMailRequest.cs +++ b/Core/Models/Eft/Dialog/RemoveUserGroupMailRequest.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class RemoveUserGroupMailRequest +public class RemoveUserGroupMailRequest : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } [JsonPropertyName("uid")] public string? Uid { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/SendMessageRequest.cs b/Core/Models/Eft/Dialog/SendMessageRequest.cs index ff445400..a07ebdf8 100644 --- a/Core/Models/Eft/Dialog/SendMessageRequest.cs +++ b/Core/Models/Eft/Dialog/SendMessageRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; using Core.Models.Enums; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class SendMessageRequest +public class SendMessageRequest : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } @@ -16,4 +17,4 @@ public class SendMessageRequest [JsonPropertyName("replyTo")] public string? ReplyTo { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/SetDialogReadRequestData.cs b/Core/Models/Eft/Dialog/SetDialogReadRequestData.cs index 1498158b..cad2c868 100644 --- a/Core/Models/Eft/Dialog/SetDialogReadRequestData.cs +++ b/Core/Models/Eft/Dialog/SetDialogReadRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class SetDialogReadRequestData +public class SetDialogReadRequestData : IRequestData { [JsonPropertyName("dialogId")] public List? Dialogs { get; set; } diff --git a/Core/Models/Eft/Game/GameEmptyCrcRequestData.cs b/Core/Models/Eft/Game/GameEmptyCrcRequestData.cs index 0b16bdcd..91b1f5df 100644 --- a/Core/Models/Eft/Game/GameEmptyCrcRequestData.cs +++ b/Core/Models/Eft/Game/GameEmptyCrcRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Game; -public class GameEmptyCrcRequestData +public class GameEmptyCrcRequestData : IRequestData { [JsonPropertyName("crc")] public int? Crc { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Game/GameModeRequestData.cs b/Core/Models/Eft/Game/GameModeRequestData.cs index 37c9b125..62f0e98a 100644 --- a/Core/Models/Eft/Game/GameModeRequestData.cs +++ b/Core/Models/Eft/Game/GameModeRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Game; -public class GameModeRequestData +public class GameModeRequestData : IRequestData { [JsonPropertyName("sessionMode")] public string? SessionMode { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Game/GameModeResponse.cs b/Core/Models/Eft/Game/GameModeResponse.cs index 281913f9..cd3c21aa 100644 --- a/Core/Models/Eft/Game/GameModeResponse.cs +++ b/Core/Models/Eft/Game/GameModeResponse.cs @@ -11,8 +11,8 @@ public enum SessionMode public class GameModeResponse { [JsonPropertyName("gameMode")] - public SessionMode? GameMode { get; set; } + public string? GameMode { get; set; } [JsonPropertyName("backendUrl")] public string? BackendUrl { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Game/GetRaidTimeRequest.cs b/Core/Models/Eft/Game/GetRaidTimeRequest.cs index 20dfe67a..dcc62534 100644 --- a/Core/Models/Eft/Game/GetRaidTimeRequest.cs +++ b/Core/Models/Eft/Game/GetRaidTimeRequest.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Game; -public class GetRaidTimeRequest +public class GetRaidTimeRequest : IRequestData { [JsonPropertyName("Side")] public string? Side { get; set; } [JsonPropertyName("Location")] public string? Location { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Game/SendSurveyOpinionRequest.cs b/Core/Models/Eft/Game/SendSurveyOpinionRequest.cs index 2684302a..154a624a 100644 --- a/Core/Models/Eft/Game/SendSurveyOpinionRequest.cs +++ b/Core/Models/Eft/Game/SendSurveyOpinionRequest.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Game; -public class SendSurveyOpinionRequest +public class SendSurveyOpinionRequest : IRequestData { [JsonPropertyName("surveyId")] public int? SurveyId { get; set; } @@ -21,4 +22,4 @@ public class SurveyOpinionAnswer [JsonPropertyName("answers")] public object? Answers { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Game/VersionValidateRequestData.cs b/Core/Models/Eft/Game/VersionValidateRequestData.cs index 81aba684..64926054 100644 --- a/Core/Models/Eft/Game/VersionValidateRequestData.cs +++ b/Core/Models/Eft/Game/VersionValidateRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Game; -public class VersionValidateRequestData +public class VersionValidateRequestData : IRequestData { [JsonPropertyName("version")] public Version? Version { get; set; } @@ -27,4 +28,4 @@ public class Version [JsonPropertyName("taxonomy")] public string? Taxonomy { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/InRaid/RegisterPlayerRequestData.cs b/Core/Models/Eft/InRaid/RegisterPlayerRequestData.cs index 19134729..90b9dcda 100644 --- a/Core/Models/Eft/InRaid/RegisterPlayerRequestData.cs +++ b/Core/Models/Eft/InRaid/RegisterPlayerRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.InRaid; -public class RegisterPlayerRequestData +public class RegisterPlayerRequestData : IRequestData { [JsonPropertyName("crc")] public int? Crc { get; set; } @@ -12,4 +13,4 @@ public class RegisterPlayerRequestData [JsonPropertyName("variantId")] public int? VariantId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/InRaid/ScavSaveRequestData.cs b/Core/Models/Eft/InRaid/ScavSaveRequestData.cs index db873462..8a23c517 100644 --- a/Core/Models/Eft/InRaid/ScavSaveRequestData.cs +++ b/Core/Models/Eft/InRaid/ScavSaveRequestData.cs @@ -1,7 +1,8 @@ using Core.Models.Eft.Common; +using Core.Models.Utils; namespace Core.Models.Eft.InRaid; -public class ScavSaveRequestData : PostRaidPmcData +public class ScavSaveRequestData : PostRaidPmcData, IRequestData { -} \ No newline at end of file +} diff --git a/Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs b/Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs index ad4a91c5..214e0d66 100644 --- a/Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs +++ b/Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.ItemEvent; -public class ItemEventRouterRequest +public class ItemEventRouterRequest : IRequestData { [JsonPropertyName("data")] public List? Data { get; set; } @@ -51,4 +52,4 @@ public class Location [JsonPropertyName("isSearched")] public bool? IsSearched { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Location/GetAirdropLootRequest.cs b/Core/Models/Eft/Location/GetAirdropLootRequest.cs index ce809319..db8d8373 100644 --- a/Core/Models/Eft/Location/GetAirdropLootRequest.cs +++ b/Core/Models/Eft/Location/GetAirdropLootRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Location; -public class GetAirdropLootRequest +public class GetAirdropLootRequest : IRequestData { [JsonPropertyName("containerId")] public string? ContainerId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/EndLocalRaidRequestData.cs b/Core/Models/Eft/Match/EndLocalRaidRequestData.cs index a9f128c6..13ae2ed6 100644 --- a/Core/Models/Eft/Match/EndLocalRaidRequestData.cs +++ b/Core/Models/Eft/Match/EndLocalRaidRequestData.cs @@ -2,10 +2,11 @@ using Core.Models.Eft.Common; using Core.Models.Eft.Common.Tables; using Core.Models.Enums; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class EndLocalRaidRequestData +public class EndLocalRaidRequestData : IRequestData { /// /// ID of server player just left @@ -119,4 +120,4 @@ public class TransitProfile [JsonPropertyName("isSolo")] public bool? IsSolo { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/GetRaidConfigurationRequestData.cs b/Core/Models/Eft/Match/GetRaidConfigurationRequestData.cs index 59b7ed41..81d29ddb 100644 --- a/Core/Models/Eft/Match/GetRaidConfigurationRequestData.cs +++ b/Core/Models/Eft/Match/GetRaidConfigurationRequestData.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class GetRaidConfigurationRequestData : RaidSettings +public class GetRaidConfigurationRequestData : RaidSettings, IRequestData { [JsonPropertyName("keyId")] public string? KeyId { get; set; } [JsonPropertyName("MaxGroupCount")] public int? MaxGroupCount { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/MatchGroupInviteSendRequest.cs b/Core/Models/Eft/Match/MatchGroupInviteSendRequest.cs index 3f140263..89f55428 100644 --- a/Core/Models/Eft/Match/MatchGroupInviteSendRequest.cs +++ b/Core/Models/Eft/Match/MatchGroupInviteSendRequest.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class MatchGroupInviteSendRequest +public class MatchGroupInviteSendRequest : IRequestData { [JsonPropertyName("to")] public string? To { get; set; } [JsonPropertyName("inLobby")] public bool? InLobby { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/MatchGroupPlayerRemoveRequest.cs b/Core/Models/Eft/Match/MatchGroupPlayerRemoveRequest.cs index 4bc1eaba..769e04f0 100644 --- a/Core/Models/Eft/Match/MatchGroupPlayerRemoveRequest.cs +++ b/Core/Models/Eft/Match/MatchGroupPlayerRemoveRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class MatchGroupPlayerRemoveRequest +public class MatchGroupPlayerRemoveRequest : IRequestData { [JsonPropertyName("aidToKick")] public string? AidToKick { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/MatchGroupStartGameRequest.cs b/Core/Models/Eft/Match/MatchGroupStartGameRequest.cs index 29d36073..35f2a71b 100644 --- a/Core/Models/Eft/Match/MatchGroupStartGameRequest.cs +++ b/Core/Models/Eft/Match/MatchGroupStartGameRequest.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class MatchGroupStartGameRequest +public class MatchGroupStartGameRequest : IRequestData { [JsonPropertyName("groupId")] public string? GroupId { get; set; } [JsonPropertyName("servers")] public List? Servers { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/MatchGroupStatusRequest.cs b/Core/Models/Eft/Match/MatchGroupStatusRequest.cs index 24432ac0..674c731b 100644 --- a/Core/Models/Eft/Match/MatchGroupStatusRequest.cs +++ b/Core/Models/Eft/Match/MatchGroupStatusRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; using Core.Models.Enums; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class MatchGroupStatusRequest +public class MatchGroupStatusRequest : IRequestData { [JsonPropertyName("location")] public string? Location { get; set; } @@ -22,4 +23,4 @@ public class MatchGroupStatusRequest [JsonPropertyName("spawnPlace")] public string? SpawnPlace { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/MatchGroupTransferRequest.cs b/Core/Models/Eft/Match/MatchGroupTransferRequest.cs index e4656cd0..10c0dd13 100644 --- a/Core/Models/Eft/Match/MatchGroupTransferRequest.cs +++ b/Core/Models/Eft/Match/MatchGroupTransferRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class MatchGroupTransferRequest +public class MatchGroupTransferRequest : IRequestData { [JsonPropertyName("aidToChange")] public string? AidToChange { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/PutMetricsRequestData.cs b/Core/Models/Eft/Match/PutMetricsRequestData.cs index ed0ffc95..4f8f9b0a 100644 --- a/Core/Models/Eft/Match/PutMetricsRequestData.cs +++ b/Core/Models/Eft/Match/PutMetricsRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class PutMetricsRequestData +public class PutMetricsRequestData : IRequestData { [JsonPropertyName("sid")] public string? SessionId { get; set; } @@ -159,4 +160,4 @@ public class ClientEvents [JsonPropertyName("GameStartedReal")] public double? GameStartedReal { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/RequestIdRequest.cs b/Core/Models/Eft/Match/RequestIdRequest.cs index 705870bd..d844e274 100644 --- a/Core/Models/Eft/Match/RequestIdRequest.cs +++ b/Core/Models/Eft/Match/RequestIdRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class RequestIdRequest +public class RequestIdRequest : IRequestData { [JsonPropertyName("requestId")] public string? RequestId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/StartLocalRaidRequestData.cs b/Core/Models/Eft/Match/StartLocalRaidRequestData.cs index b1e7f539..c9b1c3c2 100644 --- a/Core/Models/Eft/Match/StartLocalRaidRequestData.cs +++ b/Core/Models/Eft/Match/StartLocalRaidRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; using Core.Models.Enums; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class StartLocalRaidRequestData +public class StartLocalRaidRequestData : IRequestData { [JsonPropertyName("serverId")] public string? ServerId { get; set; } @@ -29,4 +30,4 @@ public class StartLocalRaidRequestData /** Should loot generation be skipped, default false */ [JsonPropertyName("sptSkipLootGeneration")] public bool? ShouldSkipLootGeneration { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/UpdatePingRequestData.cs b/Core/Models/Eft/Match/UpdatePingRequestData.cs index 26256f83..4504afe5 100644 --- a/Core/Models/Eft/Match/UpdatePingRequestData.cs +++ b/Core/Models/Eft/Match/UpdatePingRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class UpdatePingRequestData +public class UpdatePingRequestData : IRequestData { [JsonPropertyName("servers")] public List? servers { get; set; } diff --git a/Core/Models/Eft/PresetBuild/PresetBuildActionRequestData.cs b/Core/Models/Eft/PresetBuild/PresetBuildActionRequestData.cs index fd6ab042..18dc7720 100644 --- a/Core/Models/Eft/PresetBuild/PresetBuildActionRequestData.cs +++ b/Core/Models/Eft/PresetBuild/PresetBuildActionRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; using Core.Models.Eft.Common.Tables; +using Core.Models.Utils; namespace Core.Models.Eft.PresetBuild; -public class PresetBuildActionRequestData +public class PresetBuildActionRequestData : IRequestData { [JsonPropertyName("Action")] public string? Action { get; set; } @@ -20,4 +21,4 @@ public class PresetBuildActionRequestData [JsonPropertyName("Items")] public List? Items { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/PresetBuild/RemoveBuildRequestData.cs b/Core/Models/Eft/PresetBuild/RemoveBuildRequestData.cs index 58413a85..4d0c7542 100644 --- a/Core/Models/Eft/PresetBuild/RemoveBuildRequestData.cs +++ b/Core/Models/Eft/PresetBuild/RemoveBuildRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.PresetBuild; -public class RemoveBuildRequestData +public class RemoveBuildRequestData : IRequestData { [JsonPropertyName("id")] public string? Id { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Spt/Logging/ClientLogRequest.cs b/Core/Models/Spt/Logging/ClientLogRequest.cs index 4f8fdb65..0d54edc3 100644 --- a/Core/Models/Spt/Logging/ClientLogRequest.cs +++ b/Core/Models/Spt/Logging/ClientLogRequest.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Spt.Logging; -public class ClientLogRequest +public class ClientLogRequest : IRequestData { [JsonPropertyName("Source")] public string? Source { get; set; } @@ -18,4 +19,4 @@ public class ClientLogRequest [JsonPropertyName("BackgroundColor")] public string? BackgroundColor { get; set; } -} \ No newline at end of file +} From a5aa93da03e93ea59bf8ddf8d09c9952ab946f80 Mon Sep 17 00:00:00 2001 From: CWX Date: Sun, 12 Jan 2025 15:32:26 +0000 Subject: [PATCH 05/12] create Routers --- Core/Routers/Dynamic/BotDynamicRouter.cs | 65 +++++ Core/Routers/Dynamic/BundleDynamicRouter.cs | 33 +++ .../Dynamic/CustomizationDynamicRouter.cs | 33 +++ Core/Routers/Dynamic/DataDynamicRouter.cs | 49 ++++ Core/Routers/Dynamic/InraidDynamicRouter.cs | 39 +++ Core/Routers/Dynamic/LocationDynamicRouter.cs | 25 ++ Core/Routers/Dynamic/NotifierDynamicRouter.cs | 56 ++++ Core/Routers/Dynamic/TraderDynamicRouter.cs | 41 +++ .../Routers/Static/AchievementStaticRouter.cs | 41 +++ Core/Routers/Static/BotStaticRouter.cs | 34 +++ Core/Routers/Static/BuildStaticRouter.cs | 70 +++++ Core/Routers/Static/BundleStaticRouter.cs | 33 +++ Core/Routers/Static/ClientLogStaticRouter.cs | 50 ++++ .../Static/CustomizationStaticRouter.cs | 49 ++++ Core/Routers/Static/DataStaticRouter.cs | 112 ++++++++ Core/Routers/Static/DialogStaticRouter.cs | 266 ++++++++++++++++++ Core/Routers/Static/GameStaticRouter.cs | 168 +++++++++++ Core/Routers/Static/HealthStaticRouter.cs | 34 +++ Core/Routers/Static/InraidStaticRouter.cs | 53 ++++ Core/Routers/Static/InsuranceStaticRouter.cs | 34 +++ Core/Routers/Static/ItemEventStaticRouter.cs | 34 +++ Core/Routers/Static/LocationStaticRouter.cs | 43 +++ Core/Routers/Static/MatchStaticRouter.cs | 266 ++++++++++++++++++ Core/Routers/Static/NotifierStaticRouter.cs | 43 +++ Core/Routers/Static/PrestigeStaticRouter.cs | 41 +++ Core/Routers/Static/QuestStaticRouter.cs | 40 +++ Core/Routers/Static/TraderStaticRouter.cs | 42 +++ Core/Utils/App.cs | 17 +- 28 files changed, 1796 insertions(+), 15 deletions(-) create mode 100644 Core/Routers/Dynamic/BotDynamicRouter.cs create mode 100644 Core/Routers/Dynamic/BundleDynamicRouter.cs create mode 100644 Core/Routers/Dynamic/CustomizationDynamicRouter.cs create mode 100644 Core/Routers/Dynamic/DataDynamicRouter.cs create mode 100644 Core/Routers/Dynamic/InraidDynamicRouter.cs create mode 100644 Core/Routers/Dynamic/LocationDynamicRouter.cs create mode 100644 Core/Routers/Dynamic/NotifierDynamicRouter.cs create mode 100644 Core/Routers/Dynamic/TraderDynamicRouter.cs create mode 100644 Core/Routers/Static/AchievementStaticRouter.cs create mode 100644 Core/Routers/Static/BotStaticRouter.cs create mode 100644 Core/Routers/Static/BuildStaticRouter.cs create mode 100644 Core/Routers/Static/BundleStaticRouter.cs create mode 100644 Core/Routers/Static/ClientLogStaticRouter.cs create mode 100644 Core/Routers/Static/CustomizationStaticRouter.cs create mode 100644 Core/Routers/Static/DataStaticRouter.cs create mode 100644 Core/Routers/Static/DialogStaticRouter.cs create mode 100644 Core/Routers/Static/GameStaticRouter.cs create mode 100644 Core/Routers/Static/HealthStaticRouter.cs create mode 100644 Core/Routers/Static/InraidStaticRouter.cs create mode 100644 Core/Routers/Static/InsuranceStaticRouter.cs create mode 100644 Core/Routers/Static/ItemEventStaticRouter.cs create mode 100644 Core/Routers/Static/LocationStaticRouter.cs create mode 100644 Core/Routers/Static/MatchStaticRouter.cs create mode 100644 Core/Routers/Static/NotifierStaticRouter.cs create mode 100644 Core/Routers/Static/PrestigeStaticRouter.cs create mode 100644 Core/Routers/Static/QuestStaticRouter.cs create mode 100644 Core/Routers/Static/TraderStaticRouter.cs diff --git a/Core/Routers/Dynamic/BotDynamicRouter.cs b/Core/Routers/Dynamic/BotDynamicRouter.cs new file mode 100644 index 00000000..4e4f9650 --- /dev/null +++ b/Core/Routers/Dynamic/BotDynamicRouter.cs @@ -0,0 +1,65 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class BotDynamicRouter : DynamicRouter +{ + protected static BotCallbacks _botCallbacks; + + public BotDynamicRouter( + JsonUtil jsonUtil, + BotCallbacks botCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/singleplayer/settings/bot/limit/", + ( + url, + info, + sessionID, + output + ) => _botCallbacks.GetBotLimit(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/singleplayer/settings/bot/difficulty/", + ( + url, + info, + sessionID, + output + ) => _botCallbacks.GetBotDifficulty(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/singleplayer/settings/bot/difficulties", + ( + url, + info, + sessionID, + output + ) => _botCallbacks.GetAllBotDifficulties(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/singleplayer/settings/bot/maxCap", + ( + url, + info, + sessionID, + output + ) => _botCallbacks.GetBotCap(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/singleplayer/settings/bot/getBotBehaviours/", + ( + url, + info, + sessionID, + output + ) => _botCallbacks.GetBotBehaviours()) + ] + ) + { + _botCallbacks = botCallbacks; + } +} diff --git a/Core/Routers/Dynamic/BundleDynamicRouter.cs b/Core/Routers/Dynamic/BundleDynamicRouter.cs new file mode 100644 index 00000000..ae8a6ebe --- /dev/null +++ b/Core/Routers/Dynamic/BundleDynamicRouter.cs @@ -0,0 +1,33 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class BundleDynamicRouter : DynamicRouter +{ + protected static BundleCallbacks _bundleCallbacks; + + public BundleDynamicRouter( + JsonUtil jsonUtil, + BundleCallbacks bundleCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/files/bundle", + ( + url, + info, + sessionID, + output + ) => _bundleCallbacks.GetBundle(url, info as EmptyRequestData, sessionID)) + ] + ) + { + _bundleCallbacks = bundleCallbacks; + } +} diff --git a/Core/Routers/Dynamic/CustomizationDynamicRouter.cs b/Core/Routers/Dynamic/CustomizationDynamicRouter.cs new file mode 100644 index 00000000..cd91d78b --- /dev/null +++ b/Core/Routers/Dynamic/CustomizationDynamicRouter.cs @@ -0,0 +1,33 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class CustomizationDynamicRouter : DynamicRouter +{ + protected static CustomizationCallbacks _customizationCallbacks; + + public CustomizationDynamicRouter( + JsonUtil jsonUtil, + CustomizationCallbacks customizationCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "", + ( + url, + info, + sessionID, + output + ) => _customizationCallbacks.GetTraderSuits(url, info as EmptyRequestData, sessionID)) + ] + ) + { + _customizationCallbacks = customizationCallbacks; + } +} diff --git a/Core/Routers/Dynamic/DataDynamicRouter.cs b/Core/Routers/Dynamic/DataDynamicRouter.cs new file mode 100644 index 00000000..9e10f619 --- /dev/null +++ b/Core/Routers/Dynamic/DataDynamicRouter.cs @@ -0,0 +1,49 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class DataDynamicRouter : DynamicRouter +{ + protected static DataCallbacks _dataCallbacks; + + public DataDynamicRouter( + JsonUtil jsonUtil, + DataCallbacks dataCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/menu/locale/", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetLocalesMenu(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/locale/", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetLocalesGlobal(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/items/prices/", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetItemPrices(url, info as EmptyRequestData, sessionID)), + ] + ) + { + _dataCallbacks = dataCallbacks; + } +} diff --git a/Core/Routers/Dynamic/InraidDynamicRouter.cs b/Core/Routers/Dynamic/InraidDynamicRouter.cs new file mode 100644 index 00000000..a8957640 --- /dev/null +++ b/Core/Routers/Dynamic/InraidDynamicRouter.cs @@ -0,0 +1,39 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.InRaid; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class InraidDynamicRouter : DynamicRouter +{ + protected static InraidCallbacks _inraidCallbacks; + + public InraidDynamicRouter( + JsonUtil jsonUtil, + InraidCallbacks inraidCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/location/getLocalloot", + ( + url, + info, + sessionID, + output + ) => _inraidCallbacks.RegisterPlayer(url, info as RegisterPlayerRequestData, sessionID), + typeof(RegisterPlayerRequestData)) + ] + ) + { + _inraidCallbacks = inraidCallbacks; + } + + public override string GetTopLevelRoute() + { + return "spt-name"; + } +} diff --git a/Core/Routers/Dynamic/LocationDynamicRouter.cs b/Core/Routers/Dynamic/LocationDynamicRouter.cs new file mode 100644 index 00000000..6459343e --- /dev/null +++ b/Core/Routers/Dynamic/LocationDynamicRouter.cs @@ -0,0 +1,25 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class LocationDynamicRouter : DynamicRouter +{ + + public LocationDynamicRouter( + JsonUtil jsonUtil + ) : base( + jsonUtil, + [] + ) + { + } + + public override string GetTopLevelRoute() + { + return "spt-loot"; + } +} diff --git a/Core/Routers/Dynamic/NotifierDynamicRouter.cs b/Core/Routers/Dynamic/NotifierDynamicRouter.cs new file mode 100644 index 00000000..8a2d66ea --- /dev/null +++ b/Core/Routers/Dynamic/NotifierDynamicRouter.cs @@ -0,0 +1,56 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class NotifierDynamicRouter : DynamicRouter +{ + protected static NotifierCallbacks _notifierCallbacks; + + public NotifierDynamicRouter( + JsonUtil jsonUtil, + NotifierCallbacks notifierCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/?last_id", + ( + url, + info, + sessionID, + output + ) => _notifierCallbacks.Notify(url, info, sessionID)), + new RouteAction( + "/notifierServer", + ( + url, + info, + sessionID, + output + ) => _notifierCallbacks.Notify(url, info, sessionID)), + new RouteAction( + "/push/notifier/get/", + ( + url, + info, + sessionID, + output + ) => _notifierCallbacks.GetNotifier(url, info, sessionID)), + new RouteAction( + "/push/notifier/getwebsocket/", + ( + url, + info, + sessionID, + output + ) => _notifierCallbacks.GetNotifier(url, info, sessionID)), + ] + ) + { + _notifierCallbacks = notifierCallbacks; + } +} diff --git a/Core/Routers/Dynamic/TraderDynamicRouter.cs b/Core/Routers/Dynamic/TraderDynamicRouter.cs new file mode 100644 index 00000000..b2fe30f1 --- /dev/null +++ b/Core/Routers/Dynamic/TraderDynamicRouter.cs @@ -0,0 +1,41 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class TraderDynamicRouter : DynamicRouter +{ + protected static TraderCallbacks _traderCallbacks; + + public TraderDynamicRouter( + JsonUtil jsonUtil, + TraderCallbacks traderCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/trading/api/getTrader/", + ( + url, + info, + sessionID, + output + ) => _traderCallbacks.GetTrader(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/trading/api/getTraderAssort/", + ( + url, + info, + sessionID, + output + ) => _traderCallbacks.GetAssort(url, info as EmptyRequestData, sessionID)), + ] + ) + { + _traderCallbacks = traderCallbacks; + } +} diff --git a/Core/Routers/Static/AchievementStaticRouter.cs b/Core/Routers/Static/AchievementStaticRouter.cs new file mode 100644 index 00000000..2f883537 --- /dev/null +++ b/Core/Routers/Static/AchievementStaticRouter.cs @@ -0,0 +1,41 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class AchievementStaticRouter : StaticRouter +{ + protected static AchievementCallbacks _achievementCallbacks; + + public AchievementStaticRouter( + JsonUtil jsonUtil, + AchievementCallbacks achievementCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/achievement/list", + ( + url, + info, + sessionID, + output + ) => _achievementCallbacks.GetAchievements(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/achievement/statistic", + ( + url, + info, + sessionID, + output + ) => _achievementCallbacks.Statistic(url, info as EmptyRequestData, sessionID)), + ] + ) + { + _achievementCallbacks = achievementCallbacks; + } +} diff --git a/Core/Routers/Static/BotStaticRouter.cs b/Core/Routers/Static/BotStaticRouter.cs new file mode 100644 index 00000000..89c681c2 --- /dev/null +++ b/Core/Routers/Static/BotStaticRouter.cs @@ -0,0 +1,34 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Bot; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class BotStaticRouter : StaticRouter +{ + protected static BotCallbacks _botCallbacks; + + public BotStaticRouter( + JsonUtil jsonUtil, + BotCallbacks botCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "", + ( + url, + info, + sessionID, + outout + ) => _botCallbacks.GenerateBots(url, info as GenerateBotsRequestData, sessionID), + typeof(GenerateBotsRequestData)) + ] + ) + { + _botCallbacks = botCallbacks; + } +} diff --git a/Core/Routers/Static/BuildStaticRouter.cs b/Core/Routers/Static/BuildStaticRouter.cs new file mode 100644 index 00000000..250c16a2 --- /dev/null +++ b/Core/Routers/Static/BuildStaticRouter.cs @@ -0,0 +1,70 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Builds; +using Core.Models.Eft.Common; +using Core.Models.Eft.PresetBuild; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class BuildStaticRouter : StaticRouter +{ + protected static BuildsCallbacks _buildsCallbacks; + public BuildStaticRouter( + JsonUtil jsonUtil, + BuildsCallbacks buildsCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/builds/list", + ( + url, + info, + sessionID, + output + ) => _buildsCallbacks.GetBuilds(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/builds/magazine/save", + ( + url, + info, + sessionID, + output + ) => _buildsCallbacks.CreateMagazineTemplate(url, info as SetMagazineRequest, sessionID), + typeof(SetMagazineRequest)), + new RouteAction( + "/client/builds/weapon/save", + ( + url, + info, + sessionID, + output + ) => _buildsCallbacks.SetWeapon(url, info as PresetBuildActionRequestData, sessionID), + typeof(PresetBuildActionRequestData)), + new RouteAction( + "/client/builds/equipment/save", + ( + url, + info, + sessionID, + output + ) => _buildsCallbacks.SetEquipment(url, info as PresetBuildActionRequestData, sessionID), + typeof(PresetBuildActionRequestData)), + new RouteAction( + "/client/builds/delete", + ( + url, + info, + sessionID, + output + ) => _buildsCallbacks.DeleteBuild(url, info as RemoveBuildRequestData, sessionID), + typeof(RemoveBuildRequestData)), + ] + ) + { + _buildsCallbacks = buildsCallbacks; + } +} diff --git a/Core/Routers/Static/BundleStaticRouter.cs b/Core/Routers/Static/BundleStaticRouter.cs new file mode 100644 index 00000000..525ff3b8 --- /dev/null +++ b/Core/Routers/Static/BundleStaticRouter.cs @@ -0,0 +1,33 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class BundleStaticRouter : StaticRouter +{ + protected static BundleCallbacks _bundleCallbacks; + + public BundleStaticRouter( + JsonUtil jsonUtil, + BundleCallbacks bundleCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/singleplayer/bundles", + ( + url, + info, + sessionID, + output + ) => _bundleCallbacks.GetBundles(url, info as EmptyRequestData, sessionID)) + ] + ) + { + _bundleCallbacks = bundleCallbacks; + } +} diff --git a/Core/Routers/Static/ClientLogStaticRouter.cs b/Core/Routers/Static/ClientLogStaticRouter.cs new file mode 100644 index 00000000..9796772b --- /dev/null +++ b/Core/Routers/Static/ClientLogStaticRouter.cs @@ -0,0 +1,50 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Spt.Logging; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class ClientLogStaticRouter : StaticRouter +{ + protected static ClientLogCallbacks _clientLogCallbacks; + + public ClientLogStaticRouter( + JsonUtil jsonUtil, + ClientLogCallbacks clientLogCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/singleplayer/log", + ( + url, + info, + sessionID, + output + ) => _clientLogCallbacks.ClientLog(url, info as ClientLogRequest, sessionID), + typeof(ClientLogRequest)), + new RouteAction( + "/singleplayer/release", + ( + url, + info, + sessionID, + output + ) => _clientLogCallbacks.ReleaseNotes()), + new RouteAction( + "/singleplayer/enableBSGlogging", + ( + url, + info, + sessionID, + output + ) => _clientLogCallbacks.BsgLogging()) + ] + ) + { + _clientLogCallbacks = clientLogCallbacks; + } +} diff --git a/Core/Routers/Static/CustomizationStaticRouter.cs b/Core/Routers/Static/CustomizationStaticRouter.cs new file mode 100644 index 00000000..41163802 --- /dev/null +++ b/Core/Routers/Static/CustomizationStaticRouter.cs @@ -0,0 +1,49 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class CustomizationStaticRouter : StaticRouter +{ + protected static CustomizationCallbacks _customizationCallbacks; + + public CustomizationStaticRouter( + JsonUtil jsonUtil, + CustomizationCallbacks customizationCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/trading/customization/storage", + ( + url, + info, + sessionID, + output + ) => _customizationCallbacks.GetSuits(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/hideout/customization/offer/list", + ( + url, + info, + sessionID, + output + ) => _customizationCallbacks.GetHideoutCustomisation(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/customization/storage", + ( + url, + info, + sessionID, + output + ) => _customizationCallbacks.GetStorage(url, info as EmptyRequestData, sessionID)), + ] + ) + { + _customizationCallbacks = customizationCallbacks; + } +} diff --git a/Core/Routers/Static/DataStaticRouter.cs b/Core/Routers/Static/DataStaticRouter.cs new file mode 100644 index 00000000..c277d5be --- /dev/null +++ b/Core/Routers/Static/DataStaticRouter.cs @@ -0,0 +1,112 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class DataStaticRouter : StaticRouter +{ + protected static DataCallbacks _dataCallbacks; + + public DataStaticRouter( + JsonUtil jsonUtil, + DataCallbacks dataCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/settings", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetSettings(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/globals", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetGlobals(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/items", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetTemplateItems(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/handbook/templates", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetTemplateHandbook(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/customization", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetTemplateSuits(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/account/customization", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetTemplateCharacter(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/hideout/production/recipes", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetHideoutProduction(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/hideout/settings", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetHideoutSettings(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/hideout/areas", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetHideoutAreas(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/languages", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetLocalesLanguages(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/hideout/qte/list", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetQteList(url, info as EmptyRequestData, sessionID)),] + ) + { + _dataCallbacks = dataCallbacks; + } +} diff --git a/Core/Routers/Static/DialogStaticRouter.cs b/Core/Routers/Static/DialogStaticRouter.cs new file mode 100644 index 00000000..b58493ef --- /dev/null +++ b/Core/Routers/Static/DialogStaticRouter.cs @@ -0,0 +1,266 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Common.Request; +using Core.Models.Eft.Dialog; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class DialogStaticRouter : StaticRouter +{ + protected static DialogueCallbacks _dialogueCallbacks; + + public DialogStaticRouter( + JsonUtil jsonUtil, + DialogueCallbacks dialogueCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/chatServer/list", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.GetChatServerList(url, info as GetChatServerListRequestData, sessionID), + typeof(GetChatServerListRequestData)), + new RouteAction( + "/client/mail/dialog/list", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.GetMailDialogList(url, info as GetMailDialogListRequestData, sessionID), + typeof(GetMailDialogListRequestData)), + new RouteAction( + "/client/mail/dialog/view", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.GetMailDialogView(url, info as GetMailDialogViewRequestData, sessionID), + typeof(GetMailDialogViewRequestData)), + new RouteAction( + "/client/mail/dialog/info", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.GetMailDialogInfo(url, info as GetMailDialogInfoRequestData, sessionID), + typeof(GetMailDialogInfoRequestData)), + new RouteAction( + "/client/mail/dialog/remove", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.RemoveDialog(url, info as RemoveDialogRequestData, sessionID), + typeof(RemoveDialogRequestData)), + new RouteAction( + "/client/mail/dialog/pin", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.PinDialog(url, info as PinDialogRequestData, sessionID), + typeof(PinDialogRequestData)), + new RouteAction( + "/client/mail/dialog/unpin", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.UnpinDialog(url, info as PinDialogRequestData, sessionID), + typeof(PinDialogRequestData)), + new RouteAction( + "/client/mail/dialog/read", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.SetRead(url, info as SetDialogReadRequestData, sessionID), + typeof(SetDialogReadRequestData)), + new RouteAction( + "/client/mail/dialog/remove", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.RemoveMail(url, info as RemoveMailMessageRequest, sessionID), + typeof(RemoveMailMessageRequest)), + new RouteAction( + "/client/mail/dialog/getAllAttachments", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.GetAllAttachments(url, info as GetAllAttachmentsRequestData, sessionID), + typeof(GetAllAttachmentsRequestData)), + new RouteAction( + "/client/mail/msg/send", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.SendMessage(url, info as SendMessageRequest, sessionID), + typeof(SendMessageRequest)), + new RouteAction( + "client/mail/dialog/clear", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.ClearMail(url, info as ClearMailMessageRequest, sessionID), + typeof(ClearMailMessageRequest)), + new RouteAction( + "/client/mail/dialog/group/create", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.CreateGroupMail(url, info as CreateGroupMailRequest, sessionID), + typeof(CreateGroupMailRequest)), + new RouteAction( + "/client/mail/dialog/group/owner/change", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.ChangeMailGroupOwner(url, info as ChangeGroupMailOwnerRequest, sessionID), + typeof(ChangeGroupMailOwnerRequest)), + new RouteAction( + "/client/mail/dialog/group/users/add", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.AddUserToMail(url, info as AddUserGroupMailRequest, sessionID), + typeof(AddUserGroupMailRequest)), + new RouteAction( + "/client/mail/dialog/group/users/remove", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.RemoveUserFromMail(url, info as RemoveUserGroupMailRequest, sessionID), + typeof(RemoveUserGroupMailRequest)), + new RouteAction( + "/client/friend/list", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.GetFriendList(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/friend/request/list/outbox", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.ListOutbox(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/friend/request/list/inbox", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.ListInbox(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/friend/request/send", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.SendFriendRequest(url, info as FriendRequestData, sessionID), + typeof(FriendRequestData)), + new RouteAction( + "/client/friend/request/accept-all", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.AcceptAllFriendRequests(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/friend/request/accept", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.AcceptFriendRequest(url, info as AcceptFriendRequestData, sessionID), + typeof(AcceptFriendRequestData)), + new RouteAction( + "/client/friend/request/decline", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.DeclineFriendRequest(url, info as DeclineFriendRequestData, sessionID), + typeof(DeclineFriendRequestData)), + new RouteAction( + "/client/friend/request/cancel", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.CancelFriendRequest(url, info as CancelFriendRequestData, sessionID), + typeof(CancelFriendRequestData)), + new RouteAction( + "/client/friend/delete", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.DeleteFriend(url, info as DeleteFriendRequest, sessionID), + typeof(DeleteFriendRequest)), + new RouteAction( + "/client/friend/ignore/set", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.IgnoreFriend(url, info as UIDRequestData, sessionID), + typeof(UIDRequestData)), + new RouteAction( + "", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.UnIgnoreFriend(url, info as UIDRequestData, sessionID), + typeof(UIDRequestData)), + ] + ) + { + _dialogueCallbacks = dialogueCallbacks; + } +} diff --git a/Core/Routers/Static/GameStaticRouter.cs b/Core/Routers/Static/GameStaticRouter.cs new file mode 100644 index 00000000..95f2fb6b --- /dev/null +++ b/Core/Routers/Static/GameStaticRouter.cs @@ -0,0 +1,168 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.Controllers; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Common.Request; +using Core.Models.Eft.Common.Tables; +using Core.Models.Eft.Game; +using Core.Servers; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class GameStaticRouter : StaticRouter +{ + protected static GameCallbacks _gameCallbacks; + + public GameStaticRouter( + JsonUtil jsonUtil, + GameCallbacks gameCallbacks + ) : base + ( + jsonUtil, + [ + new RouteAction( + "/client/game/config", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetGameConfig(url, info as GameEmptyCrcRequestData, sessionID), + typeof(GameEmptyCrcRequestData)), + new RouteAction( + "/client/game/mode", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetGameMode(url, info as GameModeRequestData, sessionID), + typeof(GameModeRequestData)), + new RouteAction( + "/client/server/list", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetServer(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/current", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetCurrentGroup(url, info as EmptyRequestData, sessionID), + typeof(GameModeRequestData)), + new RouteAction( + "/client/game/version/validate", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.VersionValidate(url, info as VersionValidateRequestData, sessionID), + typeof(VersionValidateRequestData)), + new RouteAction( + "/client/game/start", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GameStart(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/game/logout", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GameLogout(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/checkVersion", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.ValidateGameVersion(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/game/keepalive", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GameKeepalive(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/singleplayer/settings/version", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetVersion(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/reports/lobby/send", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.ReportNickname(url, info as UIDRequestData, sessionID), + typeof(UIDRequestData)), + new RouteAction( + "/client/report/send", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.ReportNickname(url, info as UIDRequestData, sessionID), + typeof(GameModeRequestData)), + new RouteAction( + "/singleplayer/settings/getRaidTime", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetRaidTime(url, info as GetRaidTimeRequest, sessionID), + typeof(GetRaidTimeRequest)), + new RouteAction( + "/client/survey", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetSurvey(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/survey/view", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetSurveyView(url, info as SendSurveyOpinionRequest, sessionID), + typeof(SendSurveyOpinionRequest)), + new RouteAction( + "/client/survey/opinion", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.SendSurveyOpinion(url, info as SendSurveyOpinionRequest, sessionID), + typeof(SendSurveyOpinionRequest)), + ] + ) + { + _gameCallbacks = gameCallbacks; + } +} diff --git a/Core/Routers/Static/HealthStaticRouter.cs b/Core/Routers/Static/HealthStaticRouter.cs new file mode 100644 index 00000000..a48eac3b --- /dev/null +++ b/Core/Routers/Static/HealthStaticRouter.cs @@ -0,0 +1,34 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Health; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class HealthStaticRouter : StaticRouter +{ + protected static HealthCallbacks _healthCallbacks; + + public HealthStaticRouter( + JsonUtil jsonUtil, + HealthCallbacks healthCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/hideout/workout", + ( + url, + info, + sessionID, + output + ) => _healthCallbacks.handleWorkoutEffects(url, info as WorkoutData, sessionID), + typeof(WorkoutData)), + ] + ) + { + _healthCallbacks = healthCallbacks; + } +} diff --git a/Core/Routers/Static/InraidStaticRouter.cs b/Core/Routers/Static/InraidStaticRouter.cs new file mode 100644 index 00000000..a8bce39f --- /dev/null +++ b/Core/Routers/Static/InraidStaticRouter.cs @@ -0,0 +1,53 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.InRaid; +using Core.Utils; +using Microsoft.AspNetCore.Components.Web; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class InraidStaticRouter : StaticRouter +{ + public InraidStaticRouter(InraidCallbacks inraidCallbacks, JsonUtil jsonUtil) : base( + jsonUtil, + [ + new RouteAction( + "/raid/profile/scavsave", + ( + url, + info, + sessionID, + output + ) => inraidCallbacks.SaveProgress(url, info as ScavSaveRequestData, sessionID), + typeof(ScavSaveRequestData)), + new RouteAction( + "/singleplayer/settings/raid/menu", + ( + url, + info, + sessionID, + output + ) => inraidCallbacks.GetRaidMenuSettings()), + new RouteAction( + "/singleplayer/scav/traitorscavhostile", + ( + url, + info, + sessionID, + output + ) => inraidCallbacks.GetTraitorScavHostileChance(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/singleplayer/bossconvert", + ( + url, + info, + sessionID, + output + ) => inraidCallbacks.GetBossConvertSettings(url, info as EmptyRequestData, sessionID)), + ]) + { + } +} diff --git a/Core/Routers/Static/InsuranceStaticRouter.cs b/Core/Routers/Static/InsuranceStaticRouter.cs new file mode 100644 index 00000000..0d97f0fa --- /dev/null +++ b/Core/Routers/Static/InsuranceStaticRouter.cs @@ -0,0 +1,34 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Insurance; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class InsuranceStaticRouter : StaticRouter +{ + protected static InsuranceCallbacks _insuranceCallbacks; + + public InsuranceStaticRouter( + JsonUtil jsonUtil, + InsuranceCallbacks insuranceCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/insurance/items/list/cost", + ( + url, + info, + sessionID, + output + ) => _insuranceCallbacks.GetInsuranceCost(url, info as GetInsuranceCostRequestData, sessionID), + typeof(GetInsuranceCostRequestData)) + ] + ) + { + _insuranceCallbacks = insuranceCallbacks; + } +} diff --git a/Core/Routers/Static/ItemEventStaticRouter.cs b/Core/Routers/Static/ItemEventStaticRouter.cs new file mode 100644 index 00000000..213d5b37 --- /dev/null +++ b/Core/Routers/Static/ItemEventStaticRouter.cs @@ -0,0 +1,34 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.ItemEvent; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class ItemEventStaticRouter : StaticRouter +{ + protected static ItemEventCallbacks _itemEventCallbacks; + + public ItemEventStaticRouter( + JsonUtil jsonUtil, + ItemEventCallbacks itemEventCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/game/profile/items/moving", + ( + url, + info, + sessionID, + output + ) => _itemEventCallbacks.HandleEvents(url, info as ItemEventRouterRequest, sessionID), + typeof(ItemEventRouterRequest)) + ] + ) + { + _itemEventCallbacks = itemEventCallbacks; + } +} diff --git a/Core/Routers/Static/LocationStaticRouter.cs b/Core/Routers/Static/LocationStaticRouter.cs new file mode 100644 index 00000000..424f3b86 --- /dev/null +++ b/Core/Routers/Static/LocationStaticRouter.cs @@ -0,0 +1,43 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Location; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class LocationStaticRouter : StaticRouter +{ + protected static LocationCallbacks _locationCallbacks; + + public LocationStaticRouter( + JsonUtil jsonUtil, + LocationCallbacks locationCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/locations", + ( + url, + info, + sessionID, + output + ) => _locationCallbacks.GetLocationData(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/airdrop/loot", + ( + url, + info, + sessionID, + output + ) => _locationCallbacks.GetAirdropLoot(url, info as GetAirdropLootRequest, sessionID), + typeof(GetAirdropLootRequest)) + ] + ) + { + _locationCallbacks = locationCallbacks; + } +} diff --git a/Core/Routers/Static/MatchStaticRouter.cs b/Core/Routers/Static/MatchStaticRouter.cs new file mode 100644 index 00000000..eed1b082 --- /dev/null +++ b/Core/Routers/Static/MatchStaticRouter.cs @@ -0,0 +1,266 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Match; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class MatchStaticRouter : StaticRouter +{ + protected static MatchCallbacks _matchCallbacks; + + public MatchStaticRouter( + JsonUtil jsonUtil, + MatchCallbacks matchCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/match/available", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.ServerAvailable(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/updatePing", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.UpdatePing(url, info as UpdatePingRequestData, sessionID), + typeof(UpdatePingRequestData)), + new RouteAction( + "/client/match/join", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.JoinMatch(url, info as MatchGroupStartGameRequest, sessionID), + typeof(MatchGroupStartGameRequest)), + new RouteAction( + "/client/match/exit", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.ExitMatch(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/delete", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.DeleteGroup(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/leave", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.LeaveGroup(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/status", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.GetGroupStatus(url, info as MatchGroupStatusRequest, sessionID), + typeof(MatchGroupStatusRequest)), + new RouteAction( + "/client/match/group/start_game", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.JoinMatch(url, info as MatchGroupStartGameRequest, sessionID), + typeof(MatchGroupStartGameRequest)), + new RouteAction( + "/client/match/group/exit_from_menu", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.ExitFromMenu(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/current", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.GroupCurrent(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/looking/start", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.StartGroupSearch(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/looking/stop", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.StopGroupSearch(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/invite/send", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.SendGroupInvite(url, info as MatchGroupInviteSendRequest, sessionID), + typeof(MatchGroupInviteSendRequest)), + new RouteAction( + "/client/match/group/invite/accept", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.AcceptGroupInvite(url, info as RequestIdRequest, sessionID), + typeof(RequestIdRequest)), + new RouteAction( + "/client/match/group/invite/decline", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.DeclineGroupInvite(url, info as RequestIdRequest, sessionID), + typeof(RequestIdRequest)), + new RouteAction( + "/client/match/group/invite/cancel", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.CancelGroupInvite(url, info as RequestIdRequest, sessionID), + typeof(RequestIdRequest)), + new RouteAction( + "/client/match/group/invite/cancel-all", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.CancelAllGroupInvite(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/transfer", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.TransferGroup(url, info as MatchGroupTransferRequest, sessionID), + typeof(MatchGroupTransferRequest)), + new RouteAction( + "/client/match/group/raid/ready", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.RaidReady(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/raid/not-ready", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.NotRaidReady(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/putMetrics", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.PutMetrics(url, info as PutMetricsRequestData, sessionID), + typeof(PutMetricsRequestData)), + new RouteAction( + "/client/analytics/event-disconnect", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.EventDisconnect(url, info as PutMetricsRequestData, sessionID), + typeof(PutMetricsRequestData)), + new RouteAction( + "/client/getMetricsConfig", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.GetMetrics(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/raid/configuration", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.GetRaidConfiguration(url, info as GetRaidConfigurationRequestData, sessionID), + typeof(GetRaidConfigurationRequestData)), + new RouteAction( + "/client/raid/configuration-by-profile", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.GetConfigurationByProfile(url, info as GetRaidConfigurationRequestData, sessionID), + typeof(GetRaidConfigurationRequestData)), + new RouteAction( + "/client/match/group/player/remove", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.RemovePlayerFromGroup(url, info as MatchGroupPlayerRemoveRequest, sessionID), + typeof(MatchGroupPlayerRemoveRequest)), + new RouteAction( + "/client/match/local/start", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.StartLocalRaid(url, info as StartLocalRaidRequestData, sessionID), + typeof(StartLocalRaidRequestData)), + new RouteAction( + "/client/match/local/end", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.EndLocalRaid(url, info as EndLocalRaidRequestData, sessionID), + typeof(EndLocalRaidRequestData)) + ] + ) + { + _matchCallbacks = matchCallbacks; + } +} diff --git a/Core/Routers/Static/NotifierStaticRouter.cs b/Core/Routers/Static/NotifierStaticRouter.cs new file mode 100644 index 00000000..a560cc3c --- /dev/null +++ b/Core/Routers/Static/NotifierStaticRouter.cs @@ -0,0 +1,43 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Common.Request; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class NotifierStaticRouter : StaticRouter +{ + protected static NotifierCallbacks _notifierCallbacks; + + public NotifierStaticRouter( + JsonUtil jsonUtil, + NotifierCallbacks notifierCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/notifier/channel/create", + ( + url, + info, + sessionID, + output + ) => _notifierCallbacks.CreateNotifierChannel(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/game/profile/select", + ( + url, + info, + sessionID, + output + ) => _notifierCallbacks.SelectProfile(url, info as UIDRequestData, sessionID), + typeof(UIDRequestData)), + ] + ) + { + _notifierCallbacks = notifierCallbacks; + } +} diff --git a/Core/Routers/Static/PrestigeStaticRouter.cs b/Core/Routers/Static/PrestigeStaticRouter.cs new file mode 100644 index 00000000..796eb39f --- /dev/null +++ b/Core/Routers/Static/PrestigeStaticRouter.cs @@ -0,0 +1,41 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class PrestigeStaticRouter : StaticRouter +{ + protected static PrestigeCallbacks _presetCallbacks; + + public PrestigeStaticRouter( + JsonUtil jsonUtil, + PrestigeCallbacks prestigeCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/prestige/list", + ( + url, + info, + sessionID, + output + ) => _presetCallbacks.GetPrestige(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/prestige/obtain", + ( + url, + info, + sessionID, + output + ) => _presetCallbacks.ObtainPrestige(url, info as EmptyRequestData, sessionID)) + ] + ) + { + _presetCallbacks = prestigeCallbacks; + } +} diff --git a/Core/Routers/Static/QuestStaticRouter.cs b/Core/Routers/Static/QuestStaticRouter.cs new file mode 100644 index 00000000..37240fdf --- /dev/null +++ b/Core/Routers/Static/QuestStaticRouter.cs @@ -0,0 +1,40 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class QuestStaticRouter : StaticRouter +{ + protected static QuestCallbacks _questCallbacks; + + public QuestStaticRouter( + JsonUtil jsonUtil, + QuestCallbacks questCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "", + ( + url, + info, + sessionID, + output + ) => _questCallbacks.ListQuests(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "", + ( + url, + info, + sessionID, + output + ) => _questCallbacks.GetBuilds(url, info as EmptyRequestData, sessionID)),] + ) + { + _questCallbacks = questCallbacks; + } +} diff --git a/Core/Routers/Static/TraderStaticRouter.cs b/Core/Routers/Static/TraderStaticRouter.cs new file mode 100644 index 00000000..b7ce7201 --- /dev/null +++ b/Core/Routers/Static/TraderStaticRouter.cs @@ -0,0 +1,42 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class TraderStaticRouter : StaticRouter +{ + protected static TraderCallbacks _traderCallbacks; + + public TraderStaticRouter( + JsonUtil jsonUtil, + TraderCallbacks traderCallbacks + ) : base + ( + jsonUtil, + [ + new RouteAction( + "/client/trading/api/traderSettings", + ( + url, + info, + sessionID, + output + ) => _traderCallbacks.GetTraderSettings(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/singleplayer/moddedTraders", + ( + url, + info, + sessionID, + output + ) => _traderCallbacks.GetModdedTraderData(url, info as EmptyRequestData, sessionID)) + ] + ) + { + _traderCallbacks = traderCallbacks; + } +} diff --git a/Core/Utils/App.cs b/Core/Utils/App.cs index 6c7a3421..5ef4b347 100644 --- a/Core/Utils/App.cs +++ b/Core/Utils/App.cs @@ -80,23 +80,10 @@ public class App _logger.Debug("Commit: ${ProgramStatics.COMMIT}"); } */ - foreach (var onLoad in _onLoad) - { - Console.WriteLine($"Start Onload: {onLoad.GetRoute()}"); + foreach (var onLoad in _onLoad) await onLoad.OnLoad(); - Console.WriteLine($"finish Onload: {onLoad.GetRoute()}"); - } - new Timer(_ => - { - Console.WriteLine($"Start OnUpdate"); - Update(_onUpdate); - Console.WriteLine($"Finish OnUpdate"); - - }, - null, - TimeSpan.Zero, - TimeSpan.FromMilliseconds(5000)); + new Timer(_ => Update(_onUpdate), null, TimeSpan.Zero, TimeSpan.FromMilliseconds(5000)); } protected async Task Update(IEnumerable onUpdateComponents) From a0870bd88e7a113edee8c882ae9ded16bc96463a Mon Sep 17 00:00:00 2001 From: CWX Date: Sun, 12 Jan 2025 15:33:59 +0000 Subject: [PATCH 06/12] extra parts --- Core/Models/Eft/Quests/ListQuestsRequestData.cs | 5 +++-- Core/Routers/Static/QuestStaticRouter.cs | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Core/Models/Eft/Quests/ListQuestsRequestData.cs b/Core/Models/Eft/Quests/ListQuestsRequestData.cs index 3f846c32..ebec6042 100644 --- a/Core/Models/Eft/Quests/ListQuestsRequestData.cs +++ b/Core/Models/Eft/Quests/ListQuestsRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Quests; -public class ListQuestsRequestData +public class ListQuestsRequestData : IRequestData { [JsonPropertyName("completed")] public bool? Completed { get; set; } -} \ No newline at end of file +} diff --git a/Core/Routers/Static/QuestStaticRouter.cs b/Core/Routers/Static/QuestStaticRouter.cs index 37240fdf..dcbbfc25 100644 --- a/Core/Routers/Static/QuestStaticRouter.cs +++ b/Core/Routers/Static/QuestStaticRouter.cs @@ -2,6 +2,7 @@ using Core.Callbacks; using Core.DI; using Core.Models.Eft.Common; +using Core.Models.Eft.Quests; using Core.Utils; namespace Core.Routers.Static; @@ -24,7 +25,8 @@ public class QuestStaticRouter : StaticRouter info, sessionID, output - ) => _questCallbacks.ListQuests(url, info as EmptyRequestData, sessionID)), + ) => _questCallbacks.ListQuests(url, info as ListQuestsRequestData, sessionID), + typeof(ListQuestsRequestData)), new RouteAction( "", ( @@ -32,7 +34,7 @@ public class QuestStaticRouter : StaticRouter info, sessionID, output - ) => _questCallbacks.GetBuilds(url, info as EmptyRequestData, sessionID)),] + ) => _questCallbacks.ActivityPeriods(url, info as EmptyRequestData, sessionID)),] ) { _questCallbacks = questCallbacks; From 8b75732cc451f26a5deb5cd149b7225dc258043a Mon Sep 17 00:00:00 2001 From: CWX Date: Sun, 12 Jan 2025 16:38:47 +0000 Subject: [PATCH 07/12] fix method sig on callbacks --- Core/Callbacks/InventoryCallbacks.cs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Core/Callbacks/InventoryCallbacks.cs b/Core/Callbacks/InventoryCallbacks.cs index 2ebe275b..8239571b 100644 --- a/Core/Callbacks/InventoryCallbacks.cs +++ b/Core/Callbacks/InventoryCallbacks.cs @@ -45,7 +45,7 @@ public class InventoryCallbacks /// /// /// - public ItemEventRouterResponse RemoveItem(PmcData pmcData, InventoryRemoveRequestData info, string sessionID) + public ItemEventRouterResponse RemoveItem(PmcData pmcData, InventoryRemoveRequestData info, string sessionID, ItemEventRouterResponse output) { // _inventoryController.RemoveItem(pmcData, info, sessionID, output); // TODO: InventoryController is not implemented rn @@ -60,7 +60,7 @@ public class InventoryCallbacks /// /// /// - public ItemEventRouterResponse SplitItem(PmcData pmcData, InventorySplitRequestData info, string sessionID) + public ItemEventRouterResponse SplitItem(PmcData pmcData, InventorySplitRequestData info, string sessionID, ItemEventRouterResponse output) { // _inventoryController.SplitItem(pmcData, info, sessionID, output); // TODO: InventoryController is not implemented rn @@ -75,7 +75,7 @@ public class InventoryCallbacks /// /// /// - public ItemEventRouterResponse MergeItem(PmcData pmcData, InventoryMergeRequestData info, string sessionID) + public ItemEventRouterResponse MergeItem(PmcData pmcData, InventoryMergeRequestData info, string sessionID, ItemEventRouterResponse output) { // _inventoryController.MergeItem(pmcData, info, sessionID, output); // TODO: InventoryController is not implemented rn @@ -90,7 +90,7 @@ public class InventoryCallbacks /// /// /// - public ItemEventRouterResponse TransferItem(PmcData pmcData, InventoryTransferRequestData info, string sessionID) + public ItemEventRouterResponse TransferItem(PmcData pmcData, InventoryTransferRequestData info, string sessionID, ItemEventRouterResponse output) { // _inventoryController.TransferItem(pmcData, info, sessionID, output); // TODO: InventoryController is not implemented rn @@ -165,7 +165,7 @@ public class InventoryCallbacks /// /// /// - public ItemEventRouterResponse BindItem(PmcData pmcData, InventoryBindRequestData info, string sessionID) + public ItemEventRouterResponse BindItem(PmcData pmcData, InventoryBindRequestData info, string sessionID, ItemEventRouterResponse output) { // _inventoryController.BindItem(pmcData, info, sessionID, output); // TODO: InventoryController is not implemented rn @@ -180,7 +180,7 @@ public class InventoryCallbacks /// /// /// - public ItemEventRouterResponse UnBindItem(PmcData pmcData, InventoryBindRequestData info, string sessionID) + public ItemEventRouterResponse UnBindItem(PmcData pmcData, InventoryBindRequestData info, string sessionID, ItemEventRouterResponse output) { // _inventoryController.UnBindItem(pmcData, info, sessionID, output); // TODO: InventoryController is not implemented rn @@ -195,7 +195,7 @@ public class InventoryCallbacks /// /// /// - public ItemEventRouterResponse ExamineItem(PmcData pmcData, InventoryExamineRequestData info, string sessionID) + public ItemEventRouterResponse ExamineItem(PmcData pmcData, InventoryExamineRequestData info, string sessionID, ItemEventRouterResponse output) { // _inventoryController.ExamineItem(pmcData, info, sessionID, output); // TODO: InventoryController is not implemented rn @@ -225,7 +225,7 @@ public class InventoryCallbacks /// /// /// - public ItemEventRouterResponse SortInventory(PmcData pmcData, InventorySortRequestData info, string sessionID) + public ItemEventRouterResponse SortInventory(PmcData pmcData, InventorySortRequestData info, string sessionID, ItemEventRouterResponse output) { // _inventoryController.SortInventory(pmcData, info, sessionID, output); // TODO: InventoryController is not implemented rn @@ -240,7 +240,7 @@ public class InventoryCallbacks /// /// /// - public ItemEventRouterResponse CreateMapMarker(PmcData pmcData, InventoryCreateMarkerRequestData info, string sessionID) + public ItemEventRouterResponse CreateMapMarker(PmcData pmcData, InventoryCreateMarkerRequestData info, string sessionID, ItemEventRouterResponse output) { // _inventoryController.CreateMapMarker(pmcData, info, sessionID, output); // TODO: InventoryController is not implemented rn @@ -255,7 +255,7 @@ public class InventoryCallbacks /// /// /// - public ItemEventRouterResponse DeleteMapMarker(PmcData pmcData, InventoryDeleteMarkerRequestData info, string sessionID) + public ItemEventRouterResponse DeleteMapMarker(PmcData pmcData, InventoryDeleteMarkerRequestData info, string sessionID, ItemEventRouterResponse output) { // _inventoryController.DeleteMapMarker(pmcData, info, sessionID, output); // TODO: InventoryController is not implemented rn @@ -270,7 +270,7 @@ public class InventoryCallbacks /// /// /// - public ItemEventRouterResponse EditMapMarker(PmcData pmcData, InventoryEditMarkerRequestData info, string sessionID) + public ItemEventRouterResponse EditMapMarker(PmcData pmcData, InventoryEditMarkerRequestData info, string sessionID, ItemEventRouterResponse output) { // _inventoryController.EditMapMarker(pmcData, info, sessionID, output); // TODO: InventoryController is not implemented rn From de7a78aa1220b8a73b02b777436c28dad9aaf062 Mon Sep 17 00:00:00 2001 From: CWX Date: Sun, 12 Jan 2025 16:39:01 +0000 Subject: [PATCH 08/12] add two missing enums as static classes --- Core/Models/Enums/HideoutEventActions.cs | 20 ++++++++++++++ Core/Models/Enums/ItemEventActions.cs | 33 ++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 Core/Models/Enums/HideoutEventActions.cs create mode 100644 Core/Models/Enums/ItemEventActions.cs diff --git a/Core/Models/Enums/HideoutEventActions.cs b/Core/Models/Enums/HideoutEventActions.cs new file mode 100644 index 00000000..d7d0662e --- /dev/null +++ b/Core/Models/Enums/HideoutEventActions.cs @@ -0,0 +1,20 @@ +namespace Core.Models.Enums; + +public class HideoutEventActions +{ + public const string HIDEOUT_UPGRADE = "HideoutUpgrade"; + public const string HIDEOUT_UPGRADE_COMPLETE = "HideoutUpgradeComplete"; + public const string HIDEOUT_PUT_ITEMS_IN_AREA_SLOTS = "HideoutPutItemsInAreaSlots"; + public const string HIDEOUT_TAKE_ITEMS_FROM_AREA_SLOTS = "HideoutTakeItemsFromAreaSlots"; + public const string HIDEOUT_TOGGLE_AREA = "HideoutToggleArea"; + public const string HIDEOUT_SINGLE_PRODUCTION_START = "HideoutSingleProductionStart"; + public const string HIDEOUT_SCAV_CASE_PRODUCTION_START = "HideoutScavCaseProductionStart"; + public const string HIDEOUT_CONTINUOUS_PRODUCTION_START = "HideoutContinuousProductionStart"; + public const string HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction"; + public const string HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints"; + public const string HIDEOUT_IMPROVE_AREA = "HideoutImproveArea"; + public const string HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand"; + public const string HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart"; + public const string HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand"; + public const string HIDEOUT_CUSTOMIZATION_APPLY_COMMAND = "HideoutCustomizationApply"; +} diff --git a/Core/Models/Enums/ItemEventActions.cs b/Core/Models/Enums/ItemEventActions.cs new file mode 100644 index 00000000..e65ceb6d --- /dev/null +++ b/Core/Models/Enums/ItemEventActions.cs @@ -0,0 +1,33 @@ +namespace Core.Models.Enums; + +public class ItemEventActions +{ + public const string MOVE = "Move"; + public const string REMOVE = "Remove"; + public const string SPLIT = "Split"; + public const string MERGE = "Merge"; + public const string TRANSFER = "Transfer"; + public const string SWAP = "Swap"; + public const string FOLD = "Fold"; + public const string TOGGLE = "Toggle"; + public const string TAG = "Tag"; + public const string BIND = "Bind"; + public const string UNBIND = "Unbind"; + public const string EXAMINE = "Examine"; + public const string READ_ENCYCLOPEDIA = "ReadEncyclopedia"; + public const string APPLY_INVENTORY_CHANGES = "ApplyInventoryChanges"; + public const string CREATE_MAP_MARKER = "CreateMapMarker"; + public const string DELETE_MAP_MARKER = "DeleteMapMarker"; + public const string EDIT_MAP_MARKER = "EditMapMarker"; + public const string OPEN_RANDOM_LOOT_CONTAINER = "OpenRandomLootContainer"; + public const string HIDEOUT_QTE_EVENT = "HideoutQuickTimeEvent"; + public const string SAVE_WEAPON_BUILD = "SaveWeaponBuild"; + public const string REMOVE_WEAPON_BUILD = "RemoveWeaponBuild"; + public const string REMOVE_BUILD = "RemoveBuild"; + public const string SAVE_EQUIPMENT_BUILD = "SaveEquipmentBuild"; + public const string REMOVE_EQUIPMENT_BUILD = "RemoveEquipmentBuild"; + public const string REDEEM_PROFILE_REWARD = "RedeemProfileReward"; + public const string SET_FAVORITE_ITEMS = "SetFavoriteItems"; + public const string QUEST_FAIL = "QuestFail"; + public const string PIN_LOCK = "PinLock"; +} From ee790fedab0a9a187f8f12568301759c1856ee52 Mon Sep 17 00:00:00 2001 From: CWX Date: Sun, 12 Jan 2025 16:39:17 +0000 Subject: [PATCH 09/12] add missing serializers (not complete) --- Core/Routers/Serializers/BundleSerializer.cs | 6 ++++++ Core/Routers/Serializers/NotifySerializer.cs | 6 ++++++ 2 files changed, 12 insertions(+) create mode 100644 Core/Routers/Serializers/BundleSerializer.cs create mode 100644 Core/Routers/Serializers/NotifySerializer.cs diff --git a/Core/Routers/Serializers/BundleSerializer.cs b/Core/Routers/Serializers/BundleSerializer.cs new file mode 100644 index 00000000..36e24e61 --- /dev/null +++ b/Core/Routers/Serializers/BundleSerializer.cs @@ -0,0 +1,6 @@ +namespace Core.Routers.Serializers; + +public class BundleSerializer +{ + +} diff --git a/Core/Routers/Serializers/NotifySerializer.cs b/Core/Routers/Serializers/NotifySerializer.cs new file mode 100644 index 00000000..b8b565da --- /dev/null +++ b/Core/Routers/Serializers/NotifySerializer.cs @@ -0,0 +1,6 @@ +namespace Core.Routers.Serializers; + +public class NotifySerializer +{ + +} From 8136ff244cfe2fb0325466fca51e3af28eb6251b Mon Sep 17 00:00:00 2001 From: CWX Date: Sun, 12 Jan 2025 16:39:29 +0000 Subject: [PATCH 10/12] complete ItemEventRouters --- .../CustomizationItemEventRouter.cs | 44 +++++++ .../ItemEvents/HealthItemEventRouter.cs | 47 ++++++++ .../ItemEvents/HideoutItemEventRouter.cs | 82 +++++++++++++ .../ItemEvents/InsuranceItemEventRouter.cs | 41 +++++++ .../ItemEvents/InventoryItemEventRouter.cs | 112 ++++++++++++++++++ .../Routers/ItemEvents/NoteItemEventRouter.cs | 47 ++++++++ .../ItemEvents/QuestItemEventRouter.cs | 50 ++++++++ .../ItemEvents/RagfairItemEventRouter.cs | 46 +++++++ .../ItemEvents/RepairItemEventRouter.cs | 43 +++++++ .../ItemEvents/TradeItemEventRouter.cs | 46 +++++++ .../ItemEvents/WishlistItemEventRouter.cs | 47 ++++++++ Core/Routers/Static/RagfairStaticRouter.cs | 88 ++++++++++++++ Core/Routers/Static/WeatherStaticRouter.cs | 41 +++++++ 13 files changed, 734 insertions(+) create mode 100644 Core/Routers/ItemEvents/CustomizationItemEventRouter.cs create mode 100644 Core/Routers/ItemEvents/HealthItemEventRouter.cs create mode 100644 Core/Routers/ItemEvents/HideoutItemEventRouter.cs create mode 100644 Core/Routers/ItemEvents/InsuranceItemEventRouter.cs create mode 100644 Core/Routers/ItemEvents/InventoryItemEventRouter.cs create mode 100644 Core/Routers/ItemEvents/NoteItemEventRouter.cs create mode 100644 Core/Routers/ItemEvents/QuestItemEventRouter.cs create mode 100644 Core/Routers/ItemEvents/RagfairItemEventRouter.cs create mode 100644 Core/Routers/ItemEvents/RepairItemEventRouter.cs create mode 100644 Core/Routers/ItemEvents/TradeItemEventRouter.cs create mode 100644 Core/Routers/ItemEvents/WishlistItemEventRouter.cs create mode 100644 Core/Routers/Static/RagfairStaticRouter.cs create mode 100644 Core/Routers/Static/WeatherStaticRouter.cs diff --git a/Core/Routers/ItemEvents/CustomizationItemEventRouter.cs b/Core/Routers/ItemEvents/CustomizationItemEventRouter.cs new file mode 100644 index 00000000..fc34cac3 --- /dev/null +++ b/Core/Routers/ItemEvents/CustomizationItemEventRouter.cs @@ -0,0 +1,44 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Customization; +using Core.Models.Eft.ItemEvent; + +namespace Core.Routers.ItemEvents; + +[Injectable(InjectableTypeOverride = typeof(ItemEventRouterDefinition))] +public class CustomizationItemEventRouter : ItemEventRouterDefinition +{ + protected CustomizationCallbacks _customizationCallbacks; + + public CustomizationItemEventRouter + ( + CustomizationCallbacks customizationCallbacks + ) + { + _customizationCallbacks = customizationCallbacks; + } + + protected override List GetHandledRoutes() + { + return new() + { + new HandledRoute("CustomizationBuy", false), + new HandledRoute("CustomizationSet", false) + }; + } + + public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + { + switch (url) + { + case "CustomizationBuy": + return _customizationCallbacks.BuyClothing(pmcData, body as BuyClothingRequestData, sessionID); + case "CustomizationSet": + return _customizationCallbacks.SetClothing(pmcData, body as CustomizationSetRequest, sessionID); + default: + throw new Exception($"CustomizationItemEventRouter being used when it cant handle route {url}"); + } + } +} diff --git a/Core/Routers/ItemEvents/HealthItemEventRouter.cs b/Core/Routers/ItemEvents/HealthItemEventRouter.cs new file mode 100644 index 00000000..1b850eb1 --- /dev/null +++ b/Core/Routers/ItemEvents/HealthItemEventRouter.cs @@ -0,0 +1,47 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Health; +using Core.Models.Eft.ItemEvent; + +namespace Core.Routers.ItemEvents; + +[Injectable(InjectableTypeOverride = typeof(ItemEventRouterDefinition))] +public class HealthItemEventRouter : ItemEventRouterDefinition +{ + protected HealthCallbacks _healthCallbacks; + + public HealthItemEventRouter + ( + HealthCallbacks healthCallbacks + ) + { + _healthCallbacks = healthCallbacks; + } + + protected override List GetHandledRoutes() + { + return new() + { + new HandledRoute("Eat", false), + new HandledRoute("Heal", false), + new HandledRoute("RestoreHealth", false) + }; + } + + public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + { + switch (url) + { + case "Eat": + return _healthCallbacks.OffraidEat(pmcData, body as OffraidEatRequestData, sessionID); + case "Heal": + return _healthCallbacks.OffraidHeal(pmcData, body as OffraidHealRequestData, sessionID); + case "RestoreHealth": + return _healthCallbacks.HealthTreatment(pmcData, body as HealthTreatmentRequestData, sessionID); + default: + throw new Exception($"HealthItemEventRouter being used when it cant handle route {url}"); + } + } +} diff --git a/Core/Routers/ItemEvents/HideoutItemEventRouter.cs b/Core/Routers/ItemEvents/HideoutItemEventRouter.cs new file mode 100644 index 00000000..43f50174 --- /dev/null +++ b/Core/Routers/ItemEvents/HideoutItemEventRouter.cs @@ -0,0 +1,82 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Hideout; +using Core.Models.Eft.ItemEvent; +using Core.Models.Enums; + +namespace Core.Routers.ItemEvents; + +[Injectable(InjectableTypeOverride = typeof(ItemEventRouterDefinition))] +public class HideoutItemEventRouter : ItemEventRouterDefinition +{ + protected HideoutCallbacks _hideoutCallbacks; + + public HideoutItemEventRouter + ( + HideoutCallbacks hideoutCallbacks) + { + _hideoutCallbacks = hideoutCallbacks; + } + + protected override List GetHandledRoutes() + { + return new() + { + new HandledRoute(HideoutEventActions.HIDEOUT_UPGRADE, false), + new HandledRoute(HideoutEventActions.HIDEOUT_UPGRADE_COMPLETE, false), + new HandledRoute(HideoutEventActions.HIDEOUT_PUT_ITEMS_IN_AREA_SLOTS, false), + new HandledRoute(HideoutEventActions.HIDEOUT_TAKE_ITEMS_FROM_AREA_SLOTS, false), + new HandledRoute(HideoutEventActions.HIDEOUT_TOGGLE_AREA, false), + new HandledRoute(HideoutEventActions.HIDEOUT_SINGLE_PRODUCTION_START, false), + new HandledRoute(HideoutEventActions.HIDEOUT_SCAV_CASE_PRODUCTION_START, false), + new HandledRoute(HideoutEventActions.HIDEOUT_CONTINUOUS_PRODUCTION_START, false), + new HandledRoute(HideoutEventActions.HIDEOUT_TAKE_PRODUCTION, false), + new HandledRoute(HideoutEventActions.HIDEOUT_RECORD_SHOOTING_RANGE_POINTS, false), + new HandledRoute(HideoutEventActions.HIDEOUT_IMPROVE_AREA, false), + new HandledRoute(HideoutEventActions.HIDEOUT_CANCEL_PRODUCTION_COMMAND, false), + new HandledRoute(HideoutEventActions.HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START, false), + new HandledRoute(HideoutEventActions.HIDEOUT_DELETE_PRODUCTION_COMMAND, false), + new HandledRoute(HideoutEventActions.HIDEOUT_CUSTOMIZATION_APPLY_COMMAND, false) + }; + } + + public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + { + switch (url) { + case HideoutEventActions.HIDEOUT_UPGRADE: + return _hideoutCallbacks.Upgrade(pmcData, body as HideoutUpgradeRequestData, sessionID, output); + case HideoutEventActions.HIDEOUT_UPGRADE_COMPLETE: + return _hideoutCallbacks.UpgradeComplete(pmcData, body as HideoutUpgradeCompleteRequestData, sessionID, output); + case HideoutEventActions.HIDEOUT_PUT_ITEMS_IN_AREA_SLOTS: + return _hideoutCallbacks.PutItemsInAreaSlots(pmcData, body as HideoutPutItemInRequestData, sessionID); + case HideoutEventActions.HIDEOUT_TAKE_ITEMS_FROM_AREA_SLOTS: + return _hideoutCallbacks.TakeItemsFromAreaSlots(pmcData, body as HideoutTakeItemOutRequestData, sessionID); + case HideoutEventActions.HIDEOUT_TOGGLE_AREA: + return _hideoutCallbacks.ToggleArea(pmcData, body as HideoutToggleAreaRequestData, sessionID); + case HideoutEventActions.HIDEOUT_SINGLE_PRODUCTION_START: + return _hideoutCallbacks.SingleProductionStart(pmcData, body as HideoutSingleProductionStartRequestData, sessionID); + case HideoutEventActions.HIDEOUT_SCAV_CASE_PRODUCTION_START: + return _hideoutCallbacks.ScavCaseProductionStart(pmcData, body as HideoutScavCaseStartRequestData, sessionID); + case HideoutEventActions.HIDEOUT_CONTINUOUS_PRODUCTION_START: + return _hideoutCallbacks.ContinuousProductionStart(pmcData, body as HideoutContinuousProductionStartRequestData, sessionID); + case HideoutEventActions.HIDEOUT_TAKE_PRODUCTION: + return _hideoutCallbacks.TakeProduction(pmcData, body as HideoutTakeProductionRequestData, sessionID); + case HideoutEventActions.HIDEOUT_RECORD_SHOOTING_RANGE_POINTS: + return _hideoutCallbacks.RecordShootingRangePoints(pmcData, body as RecordShootingRangePoints, sessionID, output); + case HideoutEventActions.HIDEOUT_IMPROVE_AREA: + return _hideoutCallbacks.ImproveArea(pmcData, body as HideoutImproveAreaRequestData, sessionID); + case HideoutEventActions.HIDEOUT_CANCEL_PRODUCTION_COMMAND: + return _hideoutCallbacks.CancelProduction(pmcData, body as HideoutImproveAreaRequestData, sessionID); + case HideoutEventActions.HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START: + return _hideoutCallbacks.CicleOfCultistProductionStart(pmcData, body as HideoutCircleOfCultistProductionStartRequestData, sessionID); + case HideoutEventActions.HIDEOUT_DELETE_PRODUCTION_COMMAND: + return _hideoutCallbacks.HideoutDeleteProductionCommand(pmcData, body as HideoutDeleteProductionRequestData, sessionID); + case HideoutEventActions.HIDEOUT_CUSTOMIZATION_APPLY_COMMAND: + return _hideoutCallbacks.HideoutCustomizationApplyCommand(pmcData, body as HideoutCustomizationApplyRequestData, sessionID); + default: + throw new Exception($"HideoutItemEventRouter being used when it cant handle route {url}"); + } + } +} diff --git a/Core/Routers/ItemEvents/InsuranceItemEventRouter.cs b/Core/Routers/ItemEvents/InsuranceItemEventRouter.cs new file mode 100644 index 00000000..bde9c88f --- /dev/null +++ b/Core/Routers/ItemEvents/InsuranceItemEventRouter.cs @@ -0,0 +1,41 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Insurance; +using Core.Models.Eft.ItemEvent; + +namespace Core.Routers.ItemEvents; + +[Injectable(InjectableTypeOverride = typeof(ItemEventRouterDefinition))] +public class InsuranceItemEventRouter : ItemEventRouterDefinition +{ + protected InsuranceCallbacks _insuranceCallbacks; + + public InsuranceItemEventRouter + ( + InsuranceCallbacks insuranceCallbacks + ) + { + _insuranceCallbacks = insuranceCallbacks; + } + + protected override List GetHandledRoutes() + { + return new() + { + new HandledRoute("Insure", false) + }; + } + + public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + { + switch (url) + { + case "Insure": + return _insuranceCallbacks.Insure(pmcData, body as InsureRequestData, sessionID); + default: + throw new Exception($"InsuranceItemEventRouter being used when it cant handle route {url}"); + } + } +} diff --git a/Core/Routers/ItemEvents/InventoryItemEventRouter.cs b/Core/Routers/ItemEvents/InventoryItemEventRouter.cs new file mode 100644 index 00000000..6ddde132 --- /dev/null +++ b/Core/Routers/ItemEvents/InventoryItemEventRouter.cs @@ -0,0 +1,112 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Hideout; +using Core.Models.Eft.Inventory; +using Core.Models.Eft.ItemEvent; +using Core.Models.Eft.Quests; +using Core.Models.Enums; + +namespace Core.Routers.ItemEvents; + +[Injectable(InjectableTypeOverride = typeof(ItemEventRouterDefinition))] +public class InventoryItemEventRouter : ItemEventRouterDefinition +{ + protected InventoryCallbacks _inventoryCallbacks; + protected HideoutCallbacks _hideoutCallbacks; + + public InventoryItemEventRouter + ( + InventoryCallbacks inventoryCallbacks, + HideoutCallbacks hideoutCallbacks + ) + { + _inventoryCallbacks = inventoryCallbacks; + _hideoutCallbacks = hideoutCallbacks; + } + + protected override List GetHandledRoutes() + { + return new() + { + new HandledRoute(ItemEventActions.MOVE, false), + new HandledRoute(ItemEventActions.REMOVE, false), + new HandledRoute(ItemEventActions.SPLIT, false), + new HandledRoute(ItemEventActions.MERGE, false), + new HandledRoute(ItemEventActions.TRANSFER, false), + new HandledRoute(ItemEventActions.SWAP, false), + new HandledRoute(ItemEventActions.FOLD, false), + new HandledRoute(ItemEventActions.TOGGLE, false), + new HandledRoute(ItemEventActions.TAG, false), + new HandledRoute(ItemEventActions.BIND, false), + new HandledRoute(ItemEventActions.UNBIND, false), + new HandledRoute(ItemEventActions.EXAMINE, false), + new HandledRoute(ItemEventActions.READ_ENCYCLOPEDIA, false), + new HandledRoute(ItemEventActions.APPLY_INVENTORY_CHANGES, false), + new HandledRoute(ItemEventActions.CREATE_MAP_MARKER, false), + new HandledRoute(ItemEventActions.DELETE_MAP_MARKER, false), + new HandledRoute(ItemEventActions.EDIT_MAP_MARKER, false), + new HandledRoute(ItemEventActions.OPEN_RANDOM_LOOT_CONTAINER, false), + new HandledRoute(ItemEventActions.HIDEOUT_QTE_EVENT, false), + new HandledRoute(ItemEventActions.REDEEM_PROFILE_REWARD, false), + new HandledRoute(ItemEventActions.SET_FAVORITE_ITEMS, false), + new HandledRoute(ItemEventActions.QUEST_FAIL, false), + new HandledRoute(ItemEventActions.PIN_LOCK, false) + }; + } + + public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + { + switch (url) { + case ItemEventActions.MOVE: + return _inventoryCallbacks.MoveItem(pmcData, body as InventoryMoveRequestData, sessionID, output); + case ItemEventActions.REMOVE: + return _inventoryCallbacks.RemoveItem(pmcData, body as InventoryRemoveRequestData, sessionID, output); + case ItemEventActions.SPLIT: + return _inventoryCallbacks.SplitItem(pmcData, body as InventorySplitRequestData, sessionID, output); + case ItemEventActions.MERGE: + return _inventoryCallbacks.MergeItem(pmcData, body as InventoryMergeRequestData, sessionID, output); + case ItemEventActions.TRANSFER: + return _inventoryCallbacks.TransferItem(pmcData, body as InventoryTransferRequestData, sessionID, output); + case ItemEventActions.SWAP: + return _inventoryCallbacks.SwapItem(pmcData, body as InventorySwapRequestData, sessionID); + case ItemEventActions.FOLD: + return _inventoryCallbacks.FoldItem(pmcData, body as InventoryFoldRequestData, sessionID); + case ItemEventActions.TOGGLE: + return _inventoryCallbacks.ToggleItem(pmcData, body as InventoryToggleRequestData, sessionID); + case ItemEventActions.TAG: + return _inventoryCallbacks.TagItem(pmcData, body as InventoryTagRequestData, sessionID); + case ItemEventActions.BIND: + return _inventoryCallbacks.BindItem(pmcData, body as InventoryBindRequestData, sessionID, output); + case ItemEventActions.UNBIND: + return _inventoryCallbacks.UnBindItem(pmcData, body as InventoryBindRequestData, sessionID, output); + case ItemEventActions.EXAMINE: + return _inventoryCallbacks.ExamineItem(pmcData, body as InventoryExamineRequestData, sessionID, output); + case ItemEventActions.READ_ENCYCLOPEDIA: + return _inventoryCallbacks.ReadEncyclopedia(pmcData, body as InventoryReadEncyclopediaRequestData, sessionID); + case ItemEventActions.APPLY_INVENTORY_CHANGES: + return _inventoryCallbacks.SortInventory(pmcData, body as InventorySortRequestData, sessionID, output); + case ItemEventActions.CREATE_MAP_MARKER: + return _inventoryCallbacks.CreateMapMarker(pmcData, body as InventoryCreateMarkerRequestData, sessionID, output); + case ItemEventActions.DELETE_MAP_MARKER: + return _inventoryCallbacks.DeleteMapMarker(pmcData, body as InventoryDeleteMarkerRequestData, sessionID, output); + case ItemEventActions.EDIT_MAP_MARKER: + return _inventoryCallbacks.EditMapMarker(pmcData, body as InventoryEditMarkerRequestData, sessionID, output); + case ItemEventActions.OPEN_RANDOM_LOOT_CONTAINER: + return _inventoryCallbacks.OpenRandomLootContainer(pmcData, body as OpenRandomLootContainerRequestData, sessionID, output); + case ItemEventActions.HIDEOUT_QTE_EVENT: + return _hideoutCallbacks.HandleQTEEvent(pmcData, body as HandleQTEEventRequestData, sessionID, output); + case ItemEventActions.REDEEM_PROFILE_REWARD: + return _inventoryCallbacks.RedeemProfileReward(pmcData, body as RedeemProfileRequestData, sessionID, output); + case ItemEventActions.SET_FAVORITE_ITEMS: + return _inventoryCallbacks.SetFavoriteItem(pmcData, body as SetFavoriteItems, sessionID, output); + case ItemEventActions.QUEST_FAIL: + return _inventoryCallbacks.FailQuest(pmcData, body as FailQuestRequestData, sessionID, output); + case ItemEventActions.PIN_LOCK: + return _inventoryCallbacks.PinOrLock(pmcData, body as PinOrLockItemRequest, sessionID, output); + default: + throw new Exception($"InventoryItemEventRouter being used when it cant handle route {url}"); + } + } +} diff --git a/Core/Routers/ItemEvents/NoteItemEventRouter.cs b/Core/Routers/ItemEvents/NoteItemEventRouter.cs new file mode 100644 index 00000000..c56a09c9 --- /dev/null +++ b/Core/Routers/ItemEvents/NoteItemEventRouter.cs @@ -0,0 +1,47 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.ItemEvent; +using Core.Models.Eft.Notes; + +namespace Core.Routers.ItemEvents; + +[Injectable(InjectableTypeOverride = typeof(ItemEventRouterDefinition))] +public class NoteItemEventRouter : ItemEventRouterDefinition +{ + protected NoteCallbacks _noteCallbacks; + + public NoteItemEventRouter + ( + NoteCallbacks noteCallbacks + ) + { + _noteCallbacks = noteCallbacks; + } + + protected override List GetHandledRoutes() + { + return new() + { + new HandledRoute("AddNote", false), + new HandledRoute("EditNote", false), + new HandledRoute("DeleteNote", false) + }; + } + + public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + { + switch (url) + { + case "AddNote": + return _noteCallbacks.AddNote(pmcData, body as NoteActionData, sessionID); + case "EditNote": + return _noteCallbacks.EditNote(pmcData, body as NoteActionData, sessionID); + case "DeleteNote": + return _noteCallbacks.DeleteNote(pmcData, body as NoteActionData, sessionID); + default: + throw new Exception($"NoteItemEventRouter being used when it cant handle route {url}"); + } + } +} diff --git a/Core/Routers/ItemEvents/QuestItemEventRouter.cs b/Core/Routers/ItemEvents/QuestItemEventRouter.cs new file mode 100644 index 00000000..7d6171ec --- /dev/null +++ b/Core/Routers/ItemEvents/QuestItemEventRouter.cs @@ -0,0 +1,50 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.ItemEvent; +using Core.Models.Eft.Quests; +using ILogger = Core.Models.Utils.ILogger; + +namespace Core.Routers.ItemEvents; + +[Injectable(InjectableTypeOverride = typeof(ItemEventRouterDefinition))] +public class QuestItemEventRouter : ItemEventRouterDefinition +{ + protected QuestCallbacks _questCallbacks; + + public QuestItemEventRouter + ( + QuestCallbacks questCallbacks + ) + { + _questCallbacks = questCallbacks; + } + + protected override List GetHandledRoutes() + { + return new() + { + new HandledRoute("QuestAccept", false), + new HandledRoute("QuestComplete", false), + new HandledRoute("QuestHandover", false), + new HandledRoute("RepeatableQuestChange", false) + }; + } + + public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + { + switch (url) { + case "QuestAccept": + return _questCallbacks.AcceptQuest(pmcData, body as AcceptQuestRequestData, sessionID); + case "QuestComplete": + return _questCallbacks.CompleteQuest(pmcData, body as CompleteQuestRequestData, sessionID); + case "QuestHandover": + return _questCallbacks.HandoverQuest(pmcData, body as HandoverQuestRequestData, sessionID); + case "RepeatableQuestChange": + return _questCallbacks.ChangeRepeatableQuest(pmcData, body as RepeatableQuestChangeRequest, sessionID); + default: + throw new Exception($"QuestItemEventRouter being used when it cant handle route {url}"); + } + } +} diff --git a/Core/Routers/ItemEvents/RagfairItemEventRouter.cs b/Core/Routers/ItemEvents/RagfairItemEventRouter.cs new file mode 100644 index 00000000..08734564 --- /dev/null +++ b/Core/Routers/ItemEvents/RagfairItemEventRouter.cs @@ -0,0 +1,46 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.ItemEvent; +using Core.Models.Eft.Ragfair; + +namespace Core.Routers.ItemEvents; + +[Injectable(InjectableTypeOverride = typeof(ItemEventRouterDefinition))] +public class RagfairItemEventRouter : ItemEventRouterDefinition +{ + protected RagfairCallbacks _ragfairCallbacks; + + public RagfairItemEventRouter + ( + RagfairCallbacks ragfairCallbacks + ) + { + _ragfairCallbacks = ragfairCallbacks; + } + + protected override List GetHandledRoutes() + { + return new() + { + new HandledRoute("RagFairAddOffer", false), + new HandledRoute("RagFairRemoveOffer", false), + new HandledRoute("RagFairRenewOffer", false), + }; + } + + public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + { + switch (url) { + case "RagFairAddOffer": + return _ragfairCallbacks.AddOffer(pmcData, body as AddOfferRequestData, sessionID); + case "RagFairRemoveOffer": + return _ragfairCallbacks.RemoveOffer(pmcData, body as RemoveOfferRequestData, sessionID); + case "RagFairRenewOffer": + return _ragfairCallbacks.ExtendOffer(pmcData, body as ExtendOfferRequestData, sessionID); + default: + throw new Exception($"CustomizationItemEventRouter being used when it cant handle route {url}"); + } + } +} diff --git a/Core/Routers/ItemEvents/RepairItemEventRouter.cs b/Core/Routers/ItemEvents/RepairItemEventRouter.cs new file mode 100644 index 00000000..c30e0fc8 --- /dev/null +++ b/Core/Routers/ItemEvents/RepairItemEventRouter.cs @@ -0,0 +1,43 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.ItemEvent; +using Core.Models.Eft.Repair; + +namespace Core.Routers.ItemEvents; + +[Injectable(InjectableTypeOverride = typeof(ItemEventRouterDefinition))] +public class RepairItemEventRouter : ItemEventRouterDefinition +{ + protected RepairCallbacks _repairCallbacks; + + public RepairItemEventRouter + ( + RepairCallbacks repairCallbacks + ) + { + _repairCallbacks = repairCallbacks; + } + + protected override List GetHandledRoutes() + { + return new() + { + new HandledRoute("Repair", false), + new HandledRoute("TraderRepair", false) + }; + } + + public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + { + switch (url) { + case "Repair": + return _repairCallbacks.Repair(pmcData, body as RepairActionDataRequest, sessionID); + case "TraderRepair": + return _repairCallbacks.TraderRepair(pmcData, body as TraderRepairActionDataRequest, sessionID); + default: + throw new Exception($"RepairItemEventRouter being used when it cant handle route {url}"); + } + } +} diff --git a/Core/Routers/ItemEvents/TradeItemEventRouter.cs b/Core/Routers/ItemEvents/TradeItemEventRouter.cs new file mode 100644 index 00000000..67bd8f0a --- /dev/null +++ b/Core/Routers/ItemEvents/TradeItemEventRouter.cs @@ -0,0 +1,46 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.ItemEvent; +using Core.Models.Eft.Trade; + +namespace Core.Routers.ItemEvents; + +[Injectable(InjectableTypeOverride = typeof(ItemEventRouterDefinition))] +public class TradeItemEventRouter : ItemEventRouterDefinition +{ + protected TradeCallbacks _tradeCallbacks; + + public TradeItemEventRouter + ( + TradeCallbacks tradeCallbacks + ) + { + _tradeCallbacks = tradeCallbacks; + } + + protected override List GetHandledRoutes() + { + return new() + { + new HandledRoute("TradingConfirm", false), + new HandledRoute("RagFairBuyOffer", false), + new HandledRoute("SellAllFromSavage", false) + }; + } + + public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + { + switch (url) { + case "TradingConfirm": + return _tradeCallbacks.ProcessTrade(pmcData, body as ProcessBaseTradeRequestData, sessionID); + case "RagFairBuyOffer": + return _tradeCallbacks.ProcessRagfairTrade(pmcData, body as ProcessRagfairTradeRequestData, sessionID); + case "SellAllFromSavage": + return _tradeCallbacks.SellAllFromSavage(pmcData, body as SellScavItemsToFenceRequestData, sessionID); + default: + throw new Exception($"TradeItemEventRouter being used when it cant handle route {url}"); + } + } +} diff --git a/Core/Routers/ItemEvents/WishlistItemEventRouter.cs b/Core/Routers/ItemEvents/WishlistItemEventRouter.cs new file mode 100644 index 00000000..d86af900 --- /dev/null +++ b/Core/Routers/ItemEvents/WishlistItemEventRouter.cs @@ -0,0 +1,47 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.ItemEvent; +using Core.Models.Eft.Wishlist; + +namespace Core.Routers.ItemEvents; + +[Injectable(InjectableTypeOverride = typeof(ItemEventRouterDefinition))] +public class WishlistItemEventRouter : ItemEventRouterDefinition +{ + protected WishlistCallbacks _wishlistCallbacks; + + public WishlistItemEventRouter + ( + WishlistCallbacks wishlistCallbacks + ) + { + _wishlistCallbacks = wishlistCallbacks; + } + + protected override List GetHandledRoutes() + { + return new() + { + new HandledRoute("AddToWishList", false), + new HandledRoute("RemoveFromWishList", false), + new HandledRoute("ChangeWishlistItemCategory", false) + }; + } + + public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + { + switch (url) + { + case "AddToWishList": + return _wishlistCallbacks.AddToWishlist(pmcData, body as AddToWishlistRequest, sessionID); + case "RemoveFromWishList": + return _wishlistCallbacks.RemoveFromWishlist(pmcData, body as RemoveFromWishlistRequest, sessionID); + case "ChangeWishlistItemCategory": + return _wishlistCallbacks.ChangeWishlistItemCategory(pmcData, body as ChangeWishlistItemCategoryRequest, sessionID); + default: + throw new Exception($"CustomizationItemEventRouter being used when it cant handle route {url}"); + } + } +} diff --git a/Core/Routers/Static/RagfairStaticRouter.cs b/Core/Routers/Static/RagfairStaticRouter.cs new file mode 100644 index 00000000..3dee68e9 --- /dev/null +++ b/Core/Routers/Static/RagfairStaticRouter.cs @@ -0,0 +1,88 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Ragfair; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class RagfairStaticRouter : StaticRouter +{ + protected static RagfairCallbacks _ragfairCallbacks; + + public RagfairStaticRouter( + JsonUtil jsonUtil, + RagfairCallbacks ragfairCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/ragfair/search", + ( + url, + info, + sessionID, + output + ) => _ragfairCallbacks.Search(url, info as SearchRequestData, sessionID), + typeof(SearchRequestData)), + new RouteAction( + "/client/ragfair/find", + ( + url, + info, + sessionID, + output + ) => _ragfairCallbacks.Search(url, info as SearchRequestData, sessionID), + typeof(SearchRequestData)), + new RouteAction( + "/client/ragfair/itemMarketPrice", + ( + url, + info, + sessionID, + output + ) => _ragfairCallbacks.GetMarketPrice(url, info as GetMarketPriceRequestData, sessionID), + typeof(GetMarketPriceRequestData)), + new RouteAction( + "/client/ragfair/offerfees", + ( + url, + info, + sessionID, + output + ) => _ragfairCallbacks.StorePlayerOfferTaxAmount(url, info as StorePlayerOfferTaxAmountRequestData, sessionID), + typeof(StorePlayerOfferTaxAmountRequestData)), + new RouteAction( + "/client/reports/ragfair/send", + ( + url, + info, + sessionID, + output + ) => _ragfairCallbacks.SendReport(url, info as SendRagfairReportRequestData, sessionID), + typeof(SendRagfairReportRequestData)), + new RouteAction( + "/client/items/prices", + ( + url, + info, + sessionID, + output + ) => _ragfairCallbacks.GetFleaPrices(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/ragfair/offer/findbyid", + ( + url, + info, + sessionID, + output + ) => _ragfairCallbacks.GetFleaOfferById(url, info as GetRagfairOfferByIdRequest, sessionID), + typeof(GetRagfairOfferByIdRequest)) + ] + ) + { + _ragfairCallbacks = ragfairCallbacks; + } +} diff --git a/Core/Routers/Static/WeatherStaticRouter.cs b/Core/Routers/Static/WeatherStaticRouter.cs new file mode 100644 index 00000000..882bb3d1 --- /dev/null +++ b/Core/Routers/Static/WeatherStaticRouter.cs @@ -0,0 +1,41 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class WeatherStaticRouter : StaticRouter +{ + protected static WeatherCallbacks _weatherCallbacks; + + public WeatherStaticRouter( + JsonUtil jsonUtil, + WeatherCallbacks weatherCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "", + ( + url, + info, + sessionID, + output + ) => _weatherCallbacks.GetWeather(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "", + ( + url, + info, + sessionID, + output + ) => _weatherCallbacks.GetLocalWeather(url, info as EmptyRequestData, sessionID)), + ] + ) + { + _weatherCallbacks = weatherCallbacks; + } +} From a8ef6655d7a987b2f1d27c6afa5531bfde0b1125 Mon Sep 17 00:00:00 2001 From: CWX Date: Sun, 12 Jan 2025 16:48:26 +0000 Subject: [PATCH 11/12] fix encoding --- Core/Callbacks/AchievementCallbacks.cs | 4 +++- Core/Generators/WeatherGenerator.cs | 2 +- Core/Helpers/WeightedRandomHelper.cs | 9 +++++---- Core/Models/Spt/Config/WeatherConfig.cs | 2 +- Core/Services/RaidWeatherService.cs | 2 +- Core/Utils/TimeUtil.cs | 2 +- 6 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Core/Callbacks/AchievementCallbacks.cs b/Core/Callbacks/AchievementCallbacks.cs index e809f24c..096cec94 100644 --- a/Core/Callbacks/AchievementCallbacks.cs +++ b/Core/Callbacks/AchievementCallbacks.cs @@ -1,4 +1,5 @@ -using Core.Controllers; +using Core.Annotations; +using Core.Controllers; using Core.Models.Eft.Common; using Core.Models.Eft.HttpResponse; using Core.Models.Eft.Profile; @@ -6,6 +7,7 @@ using Core.Utils; namespace Core.Callbacks; +[Injectable(InjectableTypeOverride = typeof(AchievementCallbacks))] public class AchievementCallbacks { protected AchievementController _achievementController; diff --git a/Core/Generators/WeatherGenerator.cs b/Core/Generators/WeatherGenerator.cs index 8631667a..bd254ace 100644 --- a/Core/Generators/WeatherGenerator.cs +++ b/Core/Generators/WeatherGenerator.cs @@ -1,4 +1,4 @@ -using Core.Annotations; +using Core.Annotations; using Core.Helpers; using Core.Models.Eft.Weather; using Core.Models.Enums; diff --git a/Core/Helpers/WeightedRandomHelper.cs b/Core/Helpers/WeightedRandomHelper.cs index 4bbf62b1..87127248 100644 --- a/Core/Helpers/WeightedRandomHelper.cs +++ b/Core/Helpers/WeightedRandomHelper.cs @@ -1,5 +1,6 @@ -using Core.Annotations; +using Core.Annotations; using Core.Models.Spt.Helper; +using ILogger = Core.Models.Utils.ILogger; namespace Core.Helpers; @@ -42,17 +43,17 @@ public class WeightedRandomHelper { if (items.Count == 0) { - _logger.LogError("Items must not be empty"); + _logger.Error("Items must not be empty"); } if (weights.Count == 0) { - _logger.LogError("Item weights must not be empty"); + _logger.Error("Item weights must not be empty"); } if (items.Count != weights.Count) { - _logger.LogError("Items and weight inputs must be of the same length"); + _logger.Error("Items and weight inputs must be of the same length"); } // Preparing the cumulative weights list. diff --git a/Core/Models/Spt/Config/WeatherConfig.cs b/Core/Models/Spt/Config/WeatherConfig.cs index aa553dd7..f64fe8ab 100644 --- a/Core/Models/Spt/Config/WeatherConfig.cs +++ b/Core/Models/Spt/Config/WeatherConfig.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; using Core.Models.Common; using Core.Models.Enums; using Core.Utils.Json.Converters; diff --git a/Core/Services/RaidWeatherService.cs b/Core/Services/RaidWeatherService.cs index 992bd6ae..b2464eb2 100644 --- a/Core/Services/RaidWeatherService.cs +++ b/Core/Services/RaidWeatherService.cs @@ -1,4 +1,4 @@ -using Core.Annotations; +using Core.Annotations; using Core.Generators; using Core.Helpers; using Core.Models.Eft.Weather; diff --git a/Core/Utils/TimeUtil.cs b/Core/Utils/TimeUtil.cs index 16440e2b..af167958 100644 --- a/Core/Utils/TimeUtil.cs +++ b/Core/Utils/TimeUtil.cs @@ -1,4 +1,4 @@ -using Core.Annotations; +using Core.Annotations; namespace Core.Utils; From c171bfe76c6887785d0ed1ed7b5a5a76b3ff9b75 Mon Sep 17 00:00:00 2001 From: CWX Date: Sun, 12 Jan 2025 16:53:46 +0000 Subject: [PATCH 12/12] fix injections, fix logging --- Core/Callbacks/DialogueCallbacks.cs | 1 + Core/Callbacks/InsuranceCallbacks.cs | 1 + Core/Callbacks/RagfairCallbacks.cs | 1 + Core/Controllers/WeatherController.cs | 1 + Core/Services/RaidWeatherService.cs | 1 + 5 files changed, 5 insertions(+) diff --git a/Core/Callbacks/DialogueCallbacks.cs b/Core/Callbacks/DialogueCallbacks.cs index c9a189de..b6180142 100644 --- a/Core/Callbacks/DialogueCallbacks.cs +++ b/Core/Callbacks/DialogueCallbacks.cs @@ -9,6 +9,7 @@ using Core.Utils; namespace Core.Callbacks; [Injectable(InjectableTypeOverride = typeof(OnUpdate), TypePriority = OnUpdateOrder.DialogCallbacks)] +[Injectable(InjectableTypeOverride = typeof(DialogueCallbacks))] public class DialogueCallbacks : OnUpdate { protected HashUtil _hashUtil; diff --git a/Core/Callbacks/InsuranceCallbacks.cs b/Core/Callbacks/InsuranceCallbacks.cs index 40a5426f..c1bb90e5 100644 --- a/Core/Callbacks/InsuranceCallbacks.cs +++ b/Core/Callbacks/InsuranceCallbacks.cs @@ -14,6 +14,7 @@ using Core.Utils; namespace Core.Callbacks; [Injectable(InjectableTypeOverride = typeof(OnUpdate), TypePriority = OnUpdateOrder.InsuranceCallbacks)] +[Injectable(InjectableTypeOverride = typeof(InsuranceCallbacks))] public class InsuranceCallbacks : OnUpdate { protected InsuranceController _insuranceController; diff --git a/Core/Callbacks/RagfairCallbacks.cs b/Core/Callbacks/RagfairCallbacks.cs index abca089d..e42c0f7d 100644 --- a/Core/Callbacks/RagfairCallbacks.cs +++ b/Core/Callbacks/RagfairCallbacks.cs @@ -14,6 +14,7 @@ namespace Core.Callbacks; [Injectable(InjectableTypeOverride = typeof(OnLoad), TypePriority = OnLoadOrder.RagfairCallbacks)] [Injectable(InjectableTypeOverride = typeof(OnUpdate), TypePriority = OnUpdateOrder.RagfairCallbacks)] +[Injectable(InjectableTypeOverride = typeof(RagfairCallbacks))] public class RagfairCallbacks : OnLoad, OnUpdate { protected HttpResponseUtil _httpResponseUtil; diff --git a/Core/Controllers/WeatherController.cs b/Core/Controllers/WeatherController.cs index c80d6f1d..8cc014d3 100644 --- a/Core/Controllers/WeatherController.cs +++ b/Core/Controllers/WeatherController.cs @@ -7,6 +7,7 @@ using Core.Models.Spt.Config; using Core.Models.Spt.Weather; using Core.Servers; using Core.Services; +using ILogger = Core.Models.Utils.ILogger; namespace Core.Controllers; diff --git a/Core/Services/RaidWeatherService.cs b/Core/Services/RaidWeatherService.cs index b2464eb2..6ad3e87f 100644 --- a/Core/Services/RaidWeatherService.cs +++ b/Core/Services/RaidWeatherService.cs @@ -6,6 +6,7 @@ using Core.Models.Enums; using Core.Models.Spt.Config; using Core.Servers; using Core.Utils; +using ILogger = Core.Models.Utils.ILogger; namespace Core.Services;