From 5c5a42b53546ccfa52fbc6c51f2ceccfd84b8aee Mon Sep 17 00:00:00 2001 From: CWX Date: Sat, 18 Jan 2025 19:17:35 +0000 Subject: [PATCH] change to prim Ctors --- Core/Controllers/AchievementController.cs | 2 +- Core/Controllers/CustomizationController.cs | 134 ++++++------ Core/Controllers/DialogueController.cs | 156 +++++++------- Core/Controllers/GameController.cs | 168 ++++++---------- Core/Controllers/HideoutController.cs | 99 +++------ Core/Controllers/InRaidController.cs | 57 ++---- Core/Controllers/InsuranceController.cs | 39 ++-- Core/Controllers/InventoryController.cs | 90 +++------ Core/Controllers/LauncherController.cs | 87 ++++---- Core/Controllers/LocationController.cs | 27 +-- Core/Controllers/MatchController.cs | 4 +- Core/Controllers/NoteController.cs | 12 +- Core/Controllers/NotifierController.cs | 16 +- Core/Controllers/PresetController.cs | 26 +-- Core/Controllers/PrestigeController.cs | 78 +++---- Core/Controllers/ProfileController.cs | 92 +++------ Core/Controllers/QuestController.cs | 28 +-- Core/Controllers/RagfairController.cs | 4 +- Core/Controllers/RepairController.cs | 4 +- Core/Controllers/RepeatableQuestController.cs | 190 ++++++++---------- Core/Controllers/TradeController.cs | 75 ++----- Core/Controllers/TraderController.cs | 78 ++----- Core/Controllers/WeatherController.cs | 36 +--- Core/Controllers/WishlistController.cs | 12 +- UnitTests/Mock/MockLogger.cs | 10 + 25 files changed, 551 insertions(+), 973 deletions(-) diff --git a/Core/Controllers/AchievementController.cs b/Core/Controllers/AchievementController.cs index f240d8c7..86e94d16 100644 --- a/Core/Controllers/AchievementController.cs +++ b/Core/Controllers/AchievementController.cs @@ -7,7 +7,7 @@ namespace Core.Controllers; [Injectable] public class AchievementController( DatabaseService _databaseService - ) +) { public GetAchievementsResponse GetAchievements(string sessionID) { diff --git a/Core/Controllers/CustomizationController.cs b/Core/Controllers/CustomizationController.cs index 5be7be9f..a858c839 100644 --- a/Core/Controllers/CustomizationController.cs +++ b/Core/Controllers/CustomizationController.cs @@ -12,42 +12,21 @@ using Core.Routers; using Core.Servers; using Core.Services; using Core.Utils.Cloners; - using Product = Core.Models.Eft.ItemEvent.Product; namespace Core.Controllers; [Injectable] -public class CustomizationController +public class CustomizationController( + ISptLogger _logger, + EventOutputHolder _eventOutputHolder, + DatabaseService _databaseService, + SaveServer _saveServer, + LocalisationService _localisationService, + ProfileHelper _profileHelper, + ICloner _cloner +) { - protected ISptLogger _logger; - protected EventOutputHolder _eventOutputHolder; - protected DatabaseService _databaseService; - protected SaveServer _saveServer; - protected LocalisationService _localisationService; - protected ProfileHelper _profileHelper; - protected ICloner _cloner; - - public CustomizationController - ( - ISptLogger logger, - EventOutputHolder eventOutputHolder, - DatabaseService databaseService, - SaveServer saveServer, - LocalisationService localisationService, - ProfileHelper profileHelper, - ICloner cloner - ) - { - _logger = logger; - _eventOutputHolder = eventOutputHolder; - _databaseService = databaseService; - _saveServer = saveServer; - _localisationService = localisationService; - _profileHelper = profileHelper; - _cloner = cloner; - } - /// /// Get purchasable clothing items from trader that match players side (usec/bear) /// @@ -95,14 +74,18 @@ public class CustomizationController if (OutfitAlreadyPurchased(suitId, sessionId)) { var suitDetails = _databaseService.GetCustomization()[suitId]; - _logger.Error(_localisationService.GetText("customisation-item_already_purchased", new - { - itemId = suitDetails?.Id, - itemName = suitDetails?.Name, - })); - - return output; - + _logger.Error( + _localisationService.GetText( + "customisation-item_already_purchased", + new + { + itemId = suitDetails?.Id, + itemName = suitDetails?.Name, + } + ) + ); + + return output; } // Charge player for buying item @@ -112,7 +95,7 @@ public class CustomizationController // TODO - remove now they're stored in profile.CustomisationUnlocks? profile.Suits.Add(suitId); - + //TODO: Merge with function _profileHelper.addHideoutCustomisationUnlock var rewardToStore = new CustomisationStorage { @@ -121,7 +104,7 @@ public class CustomizationController Type = CustomisationType.SUITE }; profile.CustomisationUnlocks.Add(rewardToStore); - + return output; } @@ -173,37 +156,43 @@ public class CustomizationController if (paymentItemDetails?.Del != null) { - output?.ProfileChanges[sessionId]?.Items?.DeletedItems?.Add(new Product - { - Id = inventoryItem?.Id, - Template = inventoryItem?.Template, - ParentId = inventoryItem?.ParentId, - SlotId = inventoryItem?.SlotId, - Location = (ItemLocation)inventoryItem?.Location, - Upd = inventoryItem?.Upd - }); + output?.ProfileChanges[sessionId] + ?.Items?.DeletedItems?.Add( + new Product + { + Id = inventoryItem?.Id, + Template = inventoryItem?.Template, + ParentId = inventoryItem?.ParentId, + SlotId = inventoryItem?.SlotId, + Location = (ItemLocation)inventoryItem?.Location, + Upd = inventoryItem?.Upd + } + ); pmcData?.Inventory?.Items?.Remove(inventoryItem); } if (inventoryItem?.Upd == null) inventoryItem.Upd = new() { StackObjectsCount = 1 }; - + if (inventoryItem?.Upd?.StackObjectsCount == null) inventoryItem.Upd.StackObjectsCount = 1; if (inventoryItem?.Upd?.StackObjectsCount == paymentItemDetails?.Count) { - output?.ProfileChanges[sessionId]?.Items?.DeletedItems?.Add(new Product - { - Id = inventoryItem?.Id, - Template = inventoryItem?.Template, - ParentId = inventoryItem?.ParentId, - SlotId = inventoryItem?.SlotId, - Location = (ItemLocation)inventoryItem?.Location, - Upd = inventoryItem?.Upd - }); - + output?.ProfileChanges[sessionId] + ?.Items?.DeletedItems?.Add( + new Product + { + Id = inventoryItem?.Id, + Template = inventoryItem?.Template, + ParentId = inventoryItem?.ParentId, + SlotId = inventoryItem?.SlotId, + Location = (ItemLocation)inventoryItem?.Location, + Upd = inventoryItem?.Upd + } + ); + pmcData?.Inventory?.Items?.Remove(inventoryItem); return; } @@ -211,15 +200,18 @@ public class CustomizationController if (inventoryItem.Upd.StackObjectsCount > paymentItemDetails?.Count) { inventoryItem.Upd.StackObjectsCount -= paymentItemDetails?.Count; - output?.ProfileChanges[sessionId]?.Items?.ChangedItems.Add(new Product - { - Id = inventoryItem?.Id, - Template = inventoryItem?.Template, - ParentId = inventoryItem?.ParentId, - SlotId = inventoryItem?.SlotId, - Location = (ItemLocation)inventoryItem?.Location, - Upd = inventoryItem?.Upd - }); + output?.ProfileChanges[sessionId] + ?.Items?.ChangedItems.Add( + new Product + { + Id = inventoryItem?.Id, + Template = inventoryItem?.Template, + ParentId = inventoryItem?.ParentId, + SlotId = inventoryItem?.SlotId, + Location = (ItemLocation)inventoryItem?.Location, + Upd = inventoryItem?.Upd + } + ); } } @@ -238,7 +230,7 @@ public class CustomizationController if (trader.Value.Base.CustomizationSeller.Value) result.AddRange(GetTraderSuits(trader.Key, sessionId)); } - + return result; } @@ -271,7 +263,7 @@ public class CustomizationController return customisationResultsClone; } - + customisationResultsClone.AddRange(profile.CustomisationUnlocks ?? new()); return customisationResultsClone; diff --git a/Core/Controllers/DialogueController.cs b/Core/Controllers/DialogueController.cs index 6bef46c5..f60efda9 100644 --- a/Core/Controllers/DialogueController.cs +++ b/Core/Controllers/DialogueController.cs @@ -13,42 +13,20 @@ using Core.Utils; namespace Core.Controllers; [Injectable] -public class DialogueController +public class DialogueController( + ISptLogger _logger, + TimeUtil _timeUtil, + DialogueHelper _dialogueHelper, + ProfileHelper _profileHelper, + ConfigServer _configServer, + SaveServer _saveServer, + LocalisationService _localisationService, + MailSendService _mailSendService, + IEnumerable dialogueChatBots +) { - protected ISptLogger _logger; - protected TimeUtil _timeUtil; - protected DialogueHelper _dialogueHelper; - protected ProfileHelper _profileHelper; - protected ConfigServer _configServer; - protected SaveServer _saveServer; - protected LocalisationService _localisationService; - protected MailSendService _mailSendService; - protected List _dialogueChatBots; - protected CoreConfig _coreConfig; - - public DialogueController( - ISptLogger logger, - TimeUtil timeUtil, - DialogueHelper dialogueHelper, - ProfileHelper profileHelper, - ConfigServer configServer, - SaveServer saveServer, - LocalisationService localisationService, - MailSendService mailSendService, - IEnumerable dialogueChatBots) - { - _logger = logger; - _timeUtil = timeUtil; - _dialogueHelper = dialogueHelper; - _profileHelper = profileHelper; - _configServer = configServer; - _saveServer = saveServer; - _localisationService = localisationService; - _mailSendService = mailSendService; - _dialogueChatBots = dialogueChatBots.ToList(); - - _coreConfig = _configServer.GetConfig(); - } + protected CoreConfig _coreConfig = _configServer.GetConfig(); + protected List _dialogueChatBots = dialogueChatBots.ToList(); /// /// @@ -56,13 +34,14 @@ public class DialogueController /// public void RegisterChatBot(IDialogueChatBot chatBot) // TODO: this is in with the helper types { - if (_dialogueChatBots.Any((cb) => cb.GetChatBot().Id == chatBot.GetChatBot().Id)) + if (_dialogueChatBots.Any(cb => cb.GetChatBot().Id == chatBot.GetChatBot().Id)) { _logger.Error(_localisationService.GetText("dialog-chatbot_id_already_exists", chatBot.GetChatBot().Id)); } + _dialogueChatBots.Add(chatBot); } - + /// /// Handle onUpdate spt event @@ -70,7 +49,8 @@ public class DialogueController public void Update() { var profiles = _saveServer.GetProfiles(); - foreach (var kvp in profiles) { + foreach (var kvp in profiles) + { RemoveExpiredItemsFromMessages(kvp.Key); } } @@ -89,16 +69,19 @@ public class DialogueController var profile = _profileHelper.GetFullProfile(sessionId); if (profile?.FriendProfileIds is not null) { - foreach (var friendId in profile.FriendProfileIds) { + foreach (var friendId in profile.FriendProfileIds) + { var friendProfile = _profileHelper.GetChatRoomMemberFromSessionId(friendId); if (friendProfile is not null) { - friends.Add(new UserDialogInfo - { - Id = friendProfile.Id, - Aid = friendProfile.Aid, - Info = friendProfile.Info, - } ); + friends.Add( + new UserDialogInfo + { + Id = friendProfile.Id, + Aid = friendProfile.Aid, + Info = friendProfile.Info, + } + ); } } } @@ -116,11 +99,12 @@ public class DialogueController var activeBots = new List(); var chatBotConfig = _coreConfig.Features.ChatbotFeatures; - + foreach (var bot in _dialogueChatBots) { var botData = bot.GetChatBot(); - if (chatBotConfig.EnabledBots.ContainsKey(botData.Id)) { + if (chatBotConfig.EnabledBots.ContainsKey(botData.Id)) + { activeBots.Add(botData); } } @@ -159,7 +143,8 @@ public class DialogueController var dialogs = _dialogueHelper.GetDialogsForProfile(sessionId); var dialogue = dialogs.GetValueOrDefault(dialogueId); - var result = new DialogueInfo { + var result = new DialogueInfo + { Id = dialogueId, Type = dialogue.Type ?? MessageType.NPC_TRADER, Message = _dialogueHelper.GetMessagePreview(dialogue), @@ -193,19 +178,21 @@ public class DialogueController // Nullguard dialog.Users ??= []; - dialog.Users.Add( new UserDialogInfo - { - Id = profile.CharacterData.PmcData.SessionId, - Aid = profile.CharacterData.PmcData.Aid, - Info = new UserDialogDetails + dialog.Users.Add( + new UserDialogInfo { - Level = profile.CharacterData.PmcData.Info.Level, - Nickname = profile.CharacterData.PmcData.Info.Nickname, - Side = profile.CharacterData.PmcData.Info.Side, - MemberCategory = profile.CharacterData.PmcData.Info.MemberCategory, - SelectedMemberCategory = profile.CharacterData.PmcData.Info.SelectedMemberCategory, - }, - }); + Id = profile.CharacterData.PmcData.SessionId, + Aid = profile.CharacterData.PmcData.Aid, + Info = new UserDialogDetails + { + Level = profile.CharacterData.PmcData.Info.Level, + Nickname = profile.CharacterData.PmcData.Info.Nickname, + Side = profile.CharacterData.PmcData.Info.Side, + MemberCategory = profile.CharacterData.PmcData.Info.MemberCategory, + SelectedMemberCategory = profile.CharacterData.PmcData.Info.SelectedMemberCategory, + }, + } + ); } return dialog.Users; @@ -234,7 +221,8 @@ public class DialogueController // Set number of new attachments, but ignore those that have expired. dialogue.AttachmentsNew = GetUnreadMessagesWithAttachmentsCount(sessionId, dialogueId); - return new GetMailDialogViewResponseData{ + return new GetMailDialogViewResponseData + { Messages = dialogue.Messages, Profiles = GetProfilesForMail(fullProfile, dialogue.Users), HasMessagesWithRewards = MessagesHaveUncollectedRewards(dialogue.Messages), @@ -253,7 +241,8 @@ public class DialogueController { if (!profile.DialogueRecords.ContainsKey(request.DialogId)) { - profile.DialogueRecords[request.DialogId] = new Dialogue{ + profile.DialogueRecords[request.DialogId] = new Dialogue + { Id = request.DialogId, AttachmentsNew = 0, Pinned = false, @@ -299,18 +288,21 @@ public class DialogueController { // Player doesn't exist, add them in before returning var pmcProfile = fullProfile.CharacterData.PmcData; - result.Add( new UserDialogInfo{ - Id = fullProfile.ProfileInfo.ProfileId, - Aid = fullProfile.ProfileInfo.Aid, - Info = new UserDialogDetails + result.Add( + new UserDialogInfo { - Nickname = pmcProfile.Info.Nickname, - Side = pmcProfile.Info.Side, - Level = pmcProfile.Info.Level, - MemberCategory = pmcProfile.Info.MemberCategory, - SelectedMemberCategory = pmcProfile.Info.SelectedMemberCategory, + Id = fullProfile.ProfileInfo.ProfileId, + Aid = fullProfile.ProfileInfo.Aid, + Info = new UserDialogDetails + { + Nickname = pmcProfile.Info.Nickname, + Side = pmcProfile.Info.Side, + Level = pmcProfile.Info.Level, + MemberCategory = pmcProfile.Info.MemberCategory, + SelectedMemberCategory = pmcProfile.Info.SelectedMemberCategory, + } } - }); + ); } return result; @@ -328,7 +320,8 @@ public class DialogueController { var newAttachmentCount = 0; var activeMessages = GetActiveMessagesFromDialog(sessionId, dialogueId); - foreach (var message in activeMessages) { + foreach (var message in activeMessages) + { if (message.HasRewards.GetValueOrDefault(false) && !message.RewardCollected.GetValueOrDefault(false)) { newAttachmentCount++; @@ -344,11 +337,12 @@ public class DialogueController * @param dialogueId Dialog to get mail attachments from * @returns Message array */ - protected List GetActiveMessagesFromDialog(string sessionId, string dialogueId) { + protected List GetActiveMessagesFromDialog(string sessionId, string dialogueId) + { var timeNow = _timeUtil.GetTimeStamp(); var dialogs = _dialogueHelper.GetDialogsForProfile(sessionId); - return dialogs[dialogueId].Messages.Where((message) => timeNow timeNow < message.DateTime + (message.MaxStorageTime ?? 0)).ToList(); } /// @@ -430,7 +424,8 @@ public class DialogueController return ( _dialogueChatBots .FirstOrDefault((cb) => cb.GetChatBot().Id == request.DialogId) - ?.HandleMessage(sessionId, request) ?? request.DialogId + ?.HandleMessage(sessionId, request) ?? + request.DialogId ); } @@ -463,7 +458,8 @@ public class DialogueController /// Session id private void RemoveExpiredItemsFromMessages(string sessionId) { - foreach (var dialogueId in _dialogueHelper.GetDialogsForProfile(sessionId)) { + foreach (var dialogueId in _dialogueHelper.GetDialogsForProfile(sessionId)) + { RemoveExpiredItemsFromMessage(sessionId, dialogueId.Key); } } @@ -483,7 +479,8 @@ public class DialogueController return; } - foreach (var message in dialog.Messages) { + foreach (var message in dialog.Messages) + { if (MessageHasExpired(message)) { message.Items = new MessageItems(); @@ -496,7 +493,8 @@ public class DialogueController * @param message Message to check expiry of * @returns true or false */ - protected bool MessageHasExpired(Message message) { + protected bool MessageHasExpired(Message message) + { return _timeUtil.GetTimeStamp() > message.DateTime + (message.MaxStorageTime ?? 0); } diff --git a/Core/Controllers/GameController.cs b/Core/Controllers/GameController.cs index 291928d2..a9d1fa0e 100644 --- a/Core/Controllers/GameController.cs +++ b/Core/Controllers/GameController.cs @@ -20,96 +20,36 @@ using Server; namespace Core.Controllers; [Injectable] -public class GameController +public class GameController( + ISptLogger _logger, + ConfigServer _configServer, + DatabaseService _databaseService, + TimeUtil _timeUtil, + HttpServerHelper _httpServerHelper, + InventoryHelper _inventoryHelper, + RandomUtil _randomUtil, + HideoutHelper _hideoutHelper, + ProfileHelper _profileHelper, + ProfileFixerService _profileFixerService, + LocalisationService _localisationService, + PostDbLoadService _postDbLoadService, + CustomLocationWaveService _customLocationWaveService, + OpenZoneService _openZoneService, + SeasonalEventService _seasonalEventService, + ItemBaseClassService _itemBaseClassService, + GiftService _giftService, + RaidTimeAdjustmentService _raidTimeAdjustmentService, + ProfileActivityService _profileActivityService, + CreateProfileService _createProfileService, + ApplicationContext _applicationContext, + ICloner _cloner +) { - protected ISptLogger _logger; - protected ConfigServer _configServer; - protected DatabaseService _databaseService; - - protected TimeUtil _timeUtil; - - // protected PreSptModLoader _preSptModLoader; - protected HttpServerHelper _httpServerHelper; - protected InventoryHelper _inventoryHelper; - protected RandomUtil _randomUtil; - protected HideoutHelper _hideoutHelper; - protected ProfileHelper _profileHelper; - protected ProfileFixerService _profileFixerService; - protected LocalisationService _localisationService; - protected PostDbLoadService _postDbLoadService; - protected CustomLocationWaveService _customLocationWaveService; - protected OpenZoneService _openZoneService; - protected SeasonalEventService _seasonalEventService; - protected ItemBaseClassService _itemBaseClassService; - protected GiftService _giftService; - protected RaidTimeAdjustmentService _raidTimeAdjustmentService; - protected ProfileActivityService _profileActivityService; - protected CreateProfileService _createProfileService; - - protected ApplicationContext _applicationContext; - //protected PreSptModLoader preSptModLoader - protected ICloner _cloner; - - protected CoreConfig _coreConfig; - protected HttpConfig _httpConfig; - protected RagfairConfig _ragfairConfig; - protected HideoutConfig _hideoutConfig; - protected BotConfig _botConfig; - - public GameController( - ISptLogger logger, - ConfigServer configServer, - DatabaseService databaseService, - TimeUtil timeUtil, - HttpServerHelper httpServerHelper, - InventoryHelper inventoryHelper, - RandomUtil randomUtil, - HideoutHelper hideoutHelper, - ProfileHelper profileHelper, - ProfileFixerService profileFixerService, - LocalisationService localisationService, - PostDbLoadService postDbLoadService, - CustomLocationWaveService customLocationWaveService, - OpenZoneService openZoneService, - SeasonalEventService seasonalEventService, - ItemBaseClassService itemBaseClassService, - GiftService giftService, - RaidTimeAdjustmentService raidTimeAdjustmentService, - ProfileActivityService profileActivityService, - CreateProfileService createProfileService, - ApplicationContext applicationContext, - ICloner cloner - ) - { - _logger = logger; - _configServer = configServer; - _databaseService = databaseService; - _timeUtil = timeUtil; - _httpServerHelper = httpServerHelper; - _inventoryHelper = inventoryHelper; - _randomUtil = randomUtil; - _hideoutHelper = hideoutHelper; - _profileHelper = profileHelper; - _profileFixerService = profileFixerService; - _localisationService = localisationService; - _postDbLoadService = postDbLoadService; - _customLocationWaveService = customLocationWaveService; - _openZoneService = openZoneService; - _seasonalEventService = seasonalEventService; - _itemBaseClassService = itemBaseClassService; - _giftService = giftService; - _raidTimeAdjustmentService = raidTimeAdjustmentService; - _profileActivityService = profileActivityService; - _createProfileService = createProfileService; - _applicationContext = applicationContext; - _cloner = cloner; - - _coreConfig = configServer.GetConfig(); - _httpConfig = configServer.GetConfig(); - _ragfairConfig = configServer.GetConfig(); - _hideoutConfig = configServer.GetConfig(); - _botConfig = configServer.GetConfig(); - } + protected CoreConfig _coreConfig = _configServer.GetConfig(); + protected HttpConfig _httpConfig = _configServer.GetConfig(); + protected RagfairConfig _ragfairConfig = _configServer.GetConfig(); + protected HideoutConfig _hideoutConfig = _configServer.GetConfig(); + protected BotConfig _botConfig = _configServer.GetConfig(); /// /// Handle client/game/start @@ -158,7 +98,7 @@ public class GameController // Flag as migrated fullProfile.SptData.Migrations["310x"] = _timeUtil.GetTimeStamp(); - _logger.Success($"Migration of 3.10.x profile: ${ fullProfile.ProfileInfo.Username} completed successfully"); + _logger.Success($"Migration of 3.10.x profile: ${fullProfile.ProfileInfo.Username} completed successfully"); } // with our method of converting type from array for this prop, we *might* not need this? @@ -243,9 +183,13 @@ public class GameController public GameConfigResponse GetGameConfig(string sessionId) { var profile = _profileHelper.GetPmcProfile(sessionId); - var gameTime = profile?.Stats?.Eft?.OverallCounters?.Items?.FirstOrDefault(c => - c.Key.Contains("LifeTime") && - c.Key.Contains("Pmc"))?.Value ?? 0D; + var gameTime = profile?.Stats?.Eft?.OverallCounters?.Items?.FirstOrDefault( + c => + c.Key.Contains("LifeTime") && + c.Key.Contains("Pmc") + ) + ?.Value ?? + 0D; var config = new GameConfigResponse { @@ -275,7 +219,7 @@ public class GameController IsArenaPurchased = false } }; - + return config; } @@ -310,7 +254,6 @@ public class GameController Ip = _httpConfig.BackendIp, Port = _httpConfig.BackendPort } - ]; } @@ -350,7 +293,7 @@ public class GameController public GameKeepAliveResponse GetKeepAlive(string sessionId) { _profileActivityService.SetActivityTimestamp(sessionId); - return new GameKeepAliveResponse(){ Message = "OK", UtcTime = _timeUtil.GetTimeStamp() }; + return new GameKeepAliveResponse() { Message = "OK", UtcTime = _timeUtil.GetTimeStamp() }; } /// @@ -451,19 +394,21 @@ public class GameController { bodyPart.Health.Current += Math.Round(hpRegenPerHour * (diffSeconds.Value / 3600)); } + if (bodyPart.Health.Current > bodyPart.Health.Maximum) { bodyPart.Health.Current = bodyPart.Health.Maximum; } - + if (bodyPart.Effects is null || bodyPart.Effects.Count == 0) { continue; } // Look for effects - foreach (var effectKvP in bodyPart.Effects) { + foreach (var effectKvP in bodyPart.Effects) + { // remove effects below 1, .e.g. bleeds at -1 if (effectKvP.Value.Time < 1) { @@ -489,7 +434,6 @@ public class GameController // Update both values as they've both been updated pmcProfile.Health.UpdateTime = currentTimeStamp; } - } /// @@ -531,26 +475,31 @@ public class GameController _logger.Error("NOT IMPLEMENTED - _preSptModLoader SaveActiveModsToProfile()"); //var activeMods = _preSptModLoader.GetImportedModDetails(); //TODO IMPLEMENT _preSptModLoader var activeMods = new Dictionary(); - foreach (var modKvP in activeMods) { + foreach (var modKvP in activeMods) + { var modDetails = modKvP.Value; if ( fullProfile.SptData.Mods.Any( (mod) => mod.Author == modDetails.Author && - mod.Name == modDetails.Name && - mod.Version == modDetails.Version)) + mod.Name == modDetails.Name && + mod.Version == modDetails.Version + )) { // Exists already, skip continue; } - fullProfile.SptData.Mods.Add( new ModDetails{ - Author = modDetails.Author, - DateAdded = _timeUtil.GetTimeStamp(), - Name = modDetails.Name, - Version = modDetails.Version, - Url = modDetails.Url, - }); + fullProfile.SptData.Mods.Add( + new ModDetails + { + Author = modDetails.Author, + DateAdded = _timeUtil.GetTimeStamp(), + Name = modDetails.Name, + Version = modDetails.Version, + Url = modDetails.Url, + } + ); } } @@ -596,7 +545,6 @@ public class GameController /// Profile to check for dialog in private void CheckForAndRemoveUndefinedDialogues(SptProfile fullProfile) { - if (fullProfile.DialogueRecords.TryGetValue("undefined", out var undefinedDialog)) { fullProfile.DialogueRecords.Remove("undefined"); diff --git a/Core/Controllers/HideoutController.cs b/Core/Controllers/HideoutController.cs index c81b40cd..47efba4c 100644 --- a/Core/Controllers/HideoutController.cs +++ b/Core/Controllers/HideoutController.cs @@ -16,81 +16,32 @@ using Core.Utils.Cloners; namespace Core.Controllers; [Injectable] -public class HideoutController +public class HideoutController( + ISptLogger _logger, + HashUtil _hashUtil, + TimeUtil _timeUtil, + DatabaseService _databaseService, + RandomUtil _randomUtil, + InventoryHelper _inventoryHelper, + ItemHelper _itemHelper, + SaveServer _saveServer, + PlayerService _playerService, + PresetHelper _presetHelper, + PaymentHelper _paymentHelper, + EventOutputHolder _eventOutputHolder, + HttpResponseUtil _httpResponseUtil, + ProfileHelper _profileHelper, + HideoutHelper _hideoutHelper, + ScavCaseRewardGenerator _scavCaseRewardGenerator, + LocalisationService _localisationService, + ProfileActivityService _profileActivityService, + FenceService _fenceService, + CircleOfCultistService _circleOfCultistService, + ICloner _cloner, + ConfigServer _configServer +) { - protected ISptLogger _logger; - protected HashUtil _hashUtil; - protected TimeUtil _timeUtil; - protected DatabaseService _databaseService; - protected RandomUtil _randomUtil; - protected InventoryHelper _inventoryHelper; - protected ItemHelper _itemHelper; - protected SaveServer _saveServer; - protected PlayerService _playerService; - protected PresetHelper _presetHelper; - protected PaymentHelper _paymentHelper; - protected EventOutputHolder _eventOutputHolder; - protected HttpResponseUtil _httpResponseUtil; - protected ProfileHelper _profileHelper; - protected HideoutHelper _hideoutHelper; - protected ScavCaseRewardGenerator _scavCaseRewardGenerator; - protected LocalisationService _localisationService; - protected ProfileActivityService _profileActivityService; - protected FenceService _fenceService; - protected CircleOfCultistService _circleOfCultistService; - protected ICloner _cloner; - protected ConfigServer _configServer; - protected HideoutConfig _hideoutConfig; - - public HideoutController( - ISptLogger logger, - HashUtil hashUtil, - TimeUtil timeUtil, - DatabaseService databaseService, - RandomUtil randomUtil, - InventoryHelper inventoryHelper, - ItemHelper itemHelper, - SaveServer saveServer, - PlayerService playerService, - PresetHelper presetHelper, - PaymentHelper paymentHelper, - EventOutputHolder eventOutputHolder, - HttpResponseUtil httpResponseUtil, - ProfileHelper profileHelper, - HideoutHelper hideoutHelper, - ScavCaseRewardGenerator scavCaseRewardGenerator, - LocalisationService localisationService, - ProfileActivityService profileActivityService, - FenceService fenceService, - CircleOfCultistService circleOfCultistService, - ICloner cloner, - ConfigServer configServer) - { - _logger = logger; - _hashUtil = hashUtil; - _timeUtil = timeUtil; - _databaseService = databaseService; - _randomUtil = randomUtil; - _inventoryHelper = inventoryHelper; - _itemHelper = itemHelper; - _saveServer = saveServer; - _playerService = playerService; - _presetHelper = presetHelper; - _paymentHelper = paymentHelper; - _eventOutputHolder = eventOutputHolder; - _httpResponseUtil = httpResponseUtil; - _profileHelper = profileHelper; - _hideoutHelper = hideoutHelper; - _scavCaseRewardGenerator = scavCaseRewardGenerator; - _localisationService = localisationService; - _profileActivityService = profileActivityService; - _fenceService = fenceService; - _circleOfCultistService = circleOfCultistService; - _cloner = cloner; - _configServer = configServer; - - _hideoutConfig = _configServer.GetConfig(); - } + protected HideoutConfig _hideoutConfig = _configServer.GetConfig(); public void StartUpgrade(PmcData pmcData, HideoutUpgradeRequestData info, string sessionId, ItemEventRouterResponse output) { diff --git a/Core/Controllers/InRaidController.cs b/Core/Controllers/InRaidController.cs index 82929ad3..a34fb5c4 100644 --- a/Core/Controllers/InRaidController.cs +++ b/Core/Controllers/InRaidController.cs @@ -2,7 +2,6 @@ using Core.Annotations; using Core.Context; using Core.Helpers; using Core.Models.Eft.InRaid; -using Core.Models.Enums; using Core.Models.Spt.Config; using Core.Models.Utils; using Core.Servers; @@ -12,46 +11,24 @@ using Core.Services; namespace Core.Controllers; [Injectable] -public class InRaidController +public class InRaidController( + ISptLogger _logger, + SaveServer _saveServer, + ProfileHelper _profileHelper, + LocalisationService _localisationService, + ApplicationContext _applicationContext, + ConfigServer _configServer +) { - protected ISptLogger _logger; - protected SaveServer _saveServer; - protected ProfileHelper _profileHelper; - protected LocalisationService _localisationService; - protected ApplicationContext _applicationContext; - protected ConfigServer _configServer; - - protected InRaidConfig _inRaidConfig; - protected BotConfig _botConfig; - - public InRaidController - ( - ISptLogger logger, - SaveServer saveServer, - ProfileHelper profileHelper, - LocalisationService localisationService, - ApplicationContext applicationContext, - ConfigServer configServer - ) - { - _logger = logger; - _saveServer = saveServer; - _profileHelper = profileHelper; - _localisationService = localisationService; - _applicationContext = applicationContext; - _configServer = configServer; - _inRaidConfig = configServer.GetConfig(); - _botConfig = configServer.GetConfig(); - } + protected InRaidConfig _inRaidConfig = _configServer.GetConfig(); + protected BotConfig _botConfig = _configServer.GetConfig(); /// /// Save locationId to active profiles in-raid object AND app context /// /// Session id /// Register player request - public void AddPlayer( - string sessionId, - RegisterPlayerRequestData info) + public void AddPlayer(string sessionId, RegisterPlayerRequestData info) { throw new NotImplementedException(); } @@ -63,9 +40,7 @@ public class InRaidController /// /// /// - public void SavePostRaidProfileForScav( - ScavSaveRequestData offRaidProfileData, - string sessionId) + public void SavePostRaidProfileForScav(ScavSaveRequestData offRaidProfileData, string sessionId) { throw new NotImplementedException(); } @@ -84,9 +59,7 @@ public class InRaidController /// /// /// - public double GetTraitorScavHostileChance( - string url, - string sessionId) + public double GetTraitorScavHostileChance(string url, string sessionId) { throw new NotImplementedException(); } @@ -97,9 +70,7 @@ public class InRaidController /// /// /// - public List GetBossConvertSettings( - string url, - string sessionId) + public List GetBossConvertSettings(string url, string sessionId) { return _botConfig.AssaultToBossConversion.BossesToConvertToWeights.Keys.ToList(); } diff --git a/Core/Controllers/InsuranceController.cs b/Core/Controllers/InsuranceController.cs index b4ab2a56..ca6faa02 100644 --- a/Core/Controllers/InsuranceController.cs +++ b/Core/Controllers/InsuranceController.cs @@ -10,28 +10,15 @@ using Core.Services; namespace Core.Controllers; [Injectable] -public class InsuranceController +public class InsuranceController( + ISptLogger _logger, + ProfileHelper _profileHelper, + InsuranceService _insuranceService, + ConfigServer _configServer +) { - private readonly ISptLogger _logger; - private readonly ProfileHelper _profileHelper; - private readonly InsuranceService _insuranceService; - private readonly ConfigServer _configServer; - private readonly InsuranceConfig _insuranceConfig; + protected InsuranceConfig _insuranceConfig = _configServer.GetConfig(); - public InsuranceController( - ISptLogger logger, - ProfileHelper profileHelper, - InsuranceService insuranceService, - ConfigServer configServer - ) - { - _logger = logger; - _profileHelper = profileHelper; - _insuranceService = insuranceService; - _configServer = configServer; - - _insuranceConfig = _configServer.GetConfig(); - } /** * Handle client/insurance/items/list/cost @@ -47,23 +34,27 @@ public class InsuranceController var pmcData = _profileHelper.GetPmcProfile(sessionId); var inventoryItemsHash = new Dictionary(); - foreach (var item in pmcData.Inventory.Items) { + foreach (var item in pmcData.Inventory.Items) + { inventoryItemsHash[item.Id] = item; } // Loop over each trader in request - foreach(var trader in request.Traders) + foreach (var trader in request.Traders) { var items = new Dictionary(); - foreach (var itemId in request.Items) { + foreach (var itemId in request.Items) + { // Ensure hash has item in it if (!inventoryItemsHash.ContainsKey(itemId)) { _logger.Debug("Item with id: ${ itemId} missing from player inventory, skipping"); continue; } - items[inventoryItemsHash[itemId].Template] = _insuranceService.GetRoublePriceToInsureItemWithTrader(pmcData, inventoryItemsHash[itemId], trader); + + items[inventoryItemsHash[itemId].Template] = + _insuranceService.GetRoublePriceToInsureItemWithTrader(pmcData, inventoryItemsHash[itemId], trader); } response[trader] = items; diff --git a/Core/Controllers/InventoryController.cs b/Core/Controllers/InventoryController.cs index f5b72a1b..8d69abc2 100644 --- a/Core/Controllers/InventoryController.cs +++ b/Core/Controllers/InventoryController.cs @@ -14,73 +14,29 @@ using Core.Utils.Cloners; namespace Core.Controllers; [Injectable] -public class InventoryController +public class InventoryController( + ISptLogger _logger, + HashUtil _hashUtil, + RandomUtil _randomUtil, + HttpResponseUtil _httpResponseUtil, + PresetHelper _presetHelper, + InventoryHelper _inventoryHelper, + QuestHelper _questHelper, + HideoutHelper _hideoutHelper, + ProfileHelper _profileHelper, + PaymentHelper _paymentHelper, + TraderHelper _traderHelper, + DatabaseService _databaseService, + FenceService _fenceService, + RagfairOfferService _ragfairOfferService, + MapMarkerService _mapMarkerService, + LocalisationService _localisationService, + PlayerService _playerService, + LootGenerator _lootGenerator, + EventOutputHolder _eventOutputHolder, + ICloner _cloner +) { - protected ISptLogger _logger; - protected HashUtil _hashUtil; - protected RandomUtil _randomUtil; - protected HttpResponseUtil _httpResponseUtil; - protected PresetHelper _presetHelper; - protected InventoryHelper _inventoryHelper; - protected QuestHelper _questHelper; - protected HideoutHelper _hideoutHelper; - protected ProfileHelper _profileHelper; - protected PaymentHelper _paymentHelper; - protected TraderHelper _traderHelper; - protected DatabaseService _databaseService; - protected FenceService _fenceService; - protected RagfairOfferService _ragfairOfferService; - protected MapMarkerService _mapMarkerService; - protected LocalisationService _localisationService; - protected PlayerService _playerService; - protected LootGenerator _lootGenerator; - protected EventOutputHolder _eventOutputHolder; - - public InventoryController( - ISptLogger logger, - HashUtil hashUtil, - RandomUtil randomUtil, - HttpResponseUtil httpResponseUtil, - PresetHelper presetHelper, - InventoryHelper inventoryHelper, - QuestHelper questHelper, - HideoutHelper hideoutHelper, - ProfileHelper profileHelper, - PaymentHelper paymentHelper, - TraderHelper traderHelper, - DatabaseService databaseService, - FenceService fenceService, - RagfairOfferService ragfairOfferService, - MapMarkerService mapMarkerService, - LocalisationService localisationService, - PlayerService playerService, - LootGenerator lootGenerator, - EventOutputHolder eventOutputHolder, - - ICloner cloner - ) - { - _logger = logger; - _hashUtil = hashUtil; - _randomUtil = randomUtil; - _httpResponseUtil = httpResponseUtil; - _presetHelper = presetHelper; - _inventoryHelper = inventoryHelper; - _questHelper = questHelper; - _hideoutHelper = hideoutHelper; - _profileHelper = profileHelper; - _paymentHelper = paymentHelper; - _traderHelper = traderHelper; - _databaseService = databaseService; - _fenceService = fenceService; - _ragfairOfferService = ragfairOfferService; - _mapMarkerService = mapMarkerService; - _localisationService = localisationService; - _playerService = playerService; - _lootGenerator = lootGenerator; - _eventOutputHolder = eventOutputHolder; - } - public void MoveItem(PmcData pmcData, InventoryMoveRequestData moveRequest, string sessionID, ItemEventRouterResponse output) { if (output.Warnings.Count > 0) @@ -118,7 +74,7 @@ public class InventoryController } // Item is moving into or out of place of fame dogtag slot - if (moveRequest.To.Container.StartsWith("dogtag") || originalLocationSlotId.StartsWith("dogtag")) + if (moveRequest.To.Container.StartsWith("dogtag") || originalLocationSlotId.StartsWith("dogtag")) { _hideoutHelper.ApplyPlaceOfFameDogtagBonus(pmcData); } diff --git a/Core/Controllers/LauncherController.cs b/Core/Controllers/LauncherController.cs index e63ed81b..8238d82e 100644 --- a/Core/Controllers/LauncherController.cs +++ b/Core/Controllers/LauncherController.cs @@ -4,7 +4,6 @@ using Core.Helpers; using Core.Models.Eft.Common.Tables; using Core.Models.Eft.Launcher; using Core.Models.Eft.Profile; -using Core.Models.Enums; using Core.Models.Spt.Config; using Core.Models.Spt.Mod; using Core.Models.Utils; @@ -12,51 +11,25 @@ using Core.Servers; using Core.Services; using Core.Utils; using Core.Utils.Extensions; - using Info = Core.Models.Eft.Profile.Info; namespace Core.Controllers; [Injectable] -public class LauncherController +public class LauncherController( + ISptLogger _logger, + HashUtil _hashUtil, + TimeUtil _timeUtil, + RandomUtil _randomUtil, + SaveServer _saveServer, + HttpServerHelper _httpServerHelper, + ProfileHelper _profileHelper, + DatabaseService _databaseService, + LocalisationService _localisationService, + ConfigServer _configServer +) { - protected CoreConfig _coreConfig; - - protected ISptLogger _logger; - protected HashUtil _hashUtil; - protected TimeUtil _timeUtil; - protected RandomUtil _randomUtil; - protected SaveServer _saveServer; - protected HttpServerHelper _httpServerHelper; - protected ProfileHelper _profileHelper; - protected DatabaseService _databaseService; - protected LocalisationService _localisationService; - - - public LauncherController( - ISptLogger logger, - HashUtil hashUtil, - TimeUtil timeUtil, - RandomUtil randomUtil, - SaveServer saveServer, - HttpServerHelper httpServerHelper, - ProfileHelper profileHelper, - DatabaseService databaseService, - LocalisationService localisationService, - // TODO => PreSptModLoader preSptModLoader, - ConfigServer configServer - ) { - _logger = logger; - _hashUtil = hashUtil; - _timeUtil = timeUtil; - _randomUtil = randomUtil; - _saveServer = saveServer; - _httpServerHelper = httpServerHelper; - _profileHelper = profileHelper; - _databaseService = databaseService; - _localisationService = localisationService; - _coreConfig = configServer.GetConfig(); - } + protected CoreConfig _coreConfig = _configServer.GetConfig(); public ConnectResponse Connect() { @@ -68,7 +41,8 @@ public class LauncherController .Where(profileName => !_coreConfig.Features.CreateNewProfileTypesBlacklist.Contains(profileName)) .ToList(); - return new ConnectResponse(){ + return new ConnectResponse() + { BackendUrl = _httpServerHelper.GetBackendUrl(), Name = _coreConfig.ServerName, Editions = profiles, @@ -87,7 +61,8 @@ public class LauncherController foreach (var templatesProperty in typeof(ProfileTemplates).GetProperties().Where(p => p.CanWrite)) { var propertyValue = templatesProperty.GetValue(dbProfiles); - if (propertyValue == null) { + if (propertyValue == null) + { _logger.Warning(_localisationService.GetText("launcher-missing_property", templatesProperty)); continue; } @@ -106,9 +81,11 @@ public class LauncherController public string? Login(LoginRequestData? info) { - foreach (var kvp in _saveServer.GetProfiles()) { + foreach (var kvp in _saveServer.GetProfiles()) + { var account = _saveServer.GetProfile(kvp.Key).ProfileInfo; - if (info?.Username == account?.Username) { + if (info?.Username == account?.Username) + { return kvp.Key; } } @@ -118,8 +95,10 @@ public class LauncherController public string Register(RegisterData info) { - foreach (var kvp in _saveServer.GetProfiles()) { - if (info.Username == _saveServer.GetProfile(kvp.Key).ProfileInfo.Username) { + foreach (var kvp in _saveServer.GetProfiles()) + { + if (info.Username == _saveServer.GetProfile(kvp.Key).ProfileInfo.Username) + { return ""; } } @@ -131,7 +110,8 @@ public class LauncherController { var profileId = GenerateProfileId(); var scavId = GenerateProfileId(); - var newProfileDetails = new Info{ + var newProfileDetails = new Info + { ProfileId = profileId, ScavengerId = scavId, Aid = _hashUtil.GenerateAccountId(), @@ -157,7 +137,6 @@ public class LauncherController protected string FormatID(long timeStamp, long counter) { - var timeStampStr = Convert.ToString(timeStamp, 16).PadLeft(8, '0'); var counterStr = Convert.ToString(counter, 16).PadLeft(16, '0'); @@ -168,7 +147,8 @@ public class LauncherController { var sessionID = Login(info); - if (!string.IsNullOrEmpty(sessionID)) { + if (!string.IsNullOrEmpty(sessionID)) + { _saveServer.GetProfile(sessionID).ProfileInfo.Username = info.Change; } @@ -179,7 +159,8 @@ public class LauncherController { var sessionID = Login(info); - if (!string.IsNullOrEmpty(sessionID)) { + if (!string.IsNullOrEmpty(sessionID)) + { _saveServer.GetProfile(sessionID).ProfileInfo.Password = info.Change; } @@ -193,13 +174,15 @@ public class LauncherController */ public string? Wipe(RegisterData info) { - if (!_coreConfig.AllowProfileWipe) { + if (!_coreConfig.AllowProfileWipe) + { return null; } var sessionID = Login(info); - if (!string.IsNullOrEmpty(sessionID)) { + if (!string.IsNullOrEmpty(sessionID)) + { var profileInfo = _saveServer.GetProfile(sessionID).ProfileInfo; profileInfo.Edition = info.Edition; profileInfo.IsWiped = true; diff --git a/Core/Controllers/LocationController.cs b/Core/Controllers/LocationController.cs index ab727ca8..e7d067dd 100644 --- a/Core/Controllers/LocationController.cs +++ b/Core/Controllers/LocationController.cs @@ -10,24 +10,13 @@ using Core.Utils.Cloners; namespace Core.Controllers; [Injectable] -public class LocationController +public class LocationController( + ISptLogger _logger, + DatabaseService _databaseService, + AirdropService _airdropService, + ICloner _cloner +) { - protected ISptLogger _logger; - protected DatabaseService _databaseService; - protected AirdropService _airdropService; - protected ICloner _cloner; - - public LocationController( - ISptLogger logger, - DatabaseService databaseService, - AirdropService airdropService, - ICloner cloner) - { - _logger = logger; - _databaseService = databaseService; - _airdropService = airdropService; - _cloner = cloner; - } /// /// Handle client/locations @@ -74,9 +63,9 @@ public class LocationController { if (request.ContainerId is not null) { - return this._airdropService.GenerateCustomAirdropLoot(request); + return _airdropService.GenerateCustomAirdropLoot(request); } - return this._airdropService.GenerateAirdropLoot(); + return _airdropService.GenerateAirdropLoot(); } } diff --git a/Core/Controllers/MatchController.cs b/Core/Controllers/MatchController.cs index ea380088..a0d35023 100644 --- a/Core/Controllers/MatchController.cs +++ b/Core/Controllers/MatchController.cs @@ -4,7 +4,9 @@ using Core.Models.Eft.Match; namespace Core.Controllers; [Injectable] -public class MatchController +public class MatchController( + +) { /// /// diff --git a/Core/Controllers/NoteController.cs b/Core/Controllers/NoteController.cs index 8d77d662..bc4d3f5a 100644 --- a/Core/Controllers/NoteController.cs +++ b/Core/Controllers/NoteController.cs @@ -7,16 +7,10 @@ using Core.Routers; namespace Core.Controllers; [Injectable] -public class NoteController +public class NoteController( + EventOutputHolder _eventOutputHolder +) { - protected EventOutputHolder _eventOutputHolder; - - public NoteController( - EventOutputHolder eventOutputHolder) - { - _eventOutputHolder = eventOutputHolder; - } - /// /// /// diff --git a/Core/Controllers/NotifierController.cs b/Core/Controllers/NotifierController.cs index ad6cb10c..5386a344 100644 --- a/Core/Controllers/NotifierController.cs +++ b/Core/Controllers/NotifierController.cs @@ -5,19 +5,11 @@ using Core.Models.Eft.Notifier; namespace Core.Controllers; [Injectable] -public class NotifierController +public class NotifierController( + HttpServerHelper _httpServerHelper, + NotifierHelper _notifierHelper +) { - protected HttpServerHelper _httpServerHelper; - protected NotifierHelper _notifierHelper; - - public NotifierController( - HttpServerHelper httpServerHelper, - NotifierHelper notifierHelper) - { - _httpServerHelper = httpServerHelper; - _notifierHelper = notifierHelper; - } - /// /// Resolve an array of session notifications. /// diff --git a/Core/Controllers/PresetController.cs b/Core/Controllers/PresetController.cs index e02a930b..045d3ae8 100644 --- a/Core/Controllers/PresetController.cs +++ b/Core/Controllers/PresetController.cs @@ -8,23 +8,12 @@ using Core.Services; namespace Core.Controllers; [Injectable] -public class PresetController +public class PresetController( + ISptLogger _logger, + PresetHelper _presetHelper, + DatabaseService _databaseService +) { - protected ISptLogger _logger; - protected PresetHelper _presetHelper; - protected DatabaseService _databaseService; - - public PresetController( - ISptLogger logger, - PresetHelper presetHelper, - DatabaseService databaseService - ) - { - _logger = logger; - _presetHelper = presetHelper; - _databaseService = databaseService; - } - /// /// /// @@ -36,7 +25,7 @@ public class PresetController { if (key != preset.Id) { - this._logger.Error( + _logger.Error( $"Preset for template tpl: '{preset.Items[0].Template} {preset.Name}' has invalid key: ({key} != {preset.Id}). Skipping" ); @@ -48,10 +37,11 @@ public class PresetController { reverse[tpl] = []; } + reverse.TryGetValue(tpl, out var listToAddTo); listToAddTo?.Add(preset.Id); } - this._presetHelper.HydratePresetStore(reverse); + _presetHelper.HydratePresetStore(reverse); } } diff --git a/Core/Controllers/PrestigeController.cs b/Core/Controllers/PrestigeController.cs index de714e3b..7291f559 100644 --- a/Core/Controllers/PrestigeController.cs +++ b/Core/Controllers/PrestigeController.cs @@ -16,42 +16,18 @@ using Core.Utils.Cloners; namespace Core.Controllers; [Injectable] -public class PrestigeController +public class PrestigeController( + ISptLogger _logger, + TimeUtil _timeUtil, + InventoryHelper _inventoryHelper, + ProfileHelper _profileHelper, + EventOutputHolder _eventOutputHolder, + CreateProfileService _createProfileService, + DatabaseService _databaseService, + SaveServer _saveServer, + ICloner _cloner +) { - protected ISptLogger _logger; - protected TimeUtil _timeUtil; - protected InventoryHelper _inventoryHelper; - protected ProfileHelper _profileHelper; - protected EventOutputHolder _eventOutputHolder; - protected CreateProfileService _createProfileService; - private DatabaseService _databaseService; - private readonly SaveServer _saveServer; - protected ICloner _cloner; - - public PrestigeController - ( - ISptLogger logger, - TimeUtil timeUtil, - InventoryHelper inventoryHelper, - ProfileHelper profileHelper, - EventOutputHolder eventOutputHolder, - CreateProfileService createProfileService, - DatabaseService databaseService, - SaveServer saveServer, - ICloner cloner - ) - { - _logger = logger; - _timeUtil = timeUtil; - _inventoryHelper = inventoryHelper; - _profileHelper = profileHelper; - _eventOutputHolder = eventOutputHolder; - _createProfileService = createProfileService; - _databaseService = databaseService; - _saveServer = saveServer; - _cloner = cloner; - } - /// /// Handle /client/prestige/list /// @@ -77,12 +53,16 @@ public class PrestigeController { var prePrestigeProfileClone = _cloner.Clone(_profileHelper.GetFullProfile(sessionId)); var prePrestigePmc = prePrestigeProfileClone.CharacterData.PmcData; - var createRequest = new ProfileCreateRequestData { + var createRequest = new ProfileCreateRequestData + { Side = prePrestigePmc.Info.Side, Nickname = prePrestigePmc.Info.Nickname, HeadId = prePrestigePmc.Customization.Head, - VoiceId = _databaseService.GetTemplates().Customization.FirstOrDefault( - (customisation) => customisation.Value.Name == prePrestigePmc.Info.Voice).Value.Id, + VoiceId = _databaseService.GetTemplates() + .Customization.FirstOrDefault( + (customisation) => customisation.Value.Name == prePrestigePmc.Info.Voice + ) + .Value.Id, SptForcePrestigeLevel = prePrestigeProfileClone.CharacterData.PmcData.Info.PrestigeLevel.GetValueOrDefault(0) + 1, // Current + 1 }; @@ -95,7 +75,8 @@ public class PrestigeController // Skill copy // TODO - Find what skills should be prestiged over var commonSkillsToCopy = prePrestigePmc.Skills.Common; - foreach (var skillToCopy in commonSkillsToCopy) { + foreach (var skillToCopy in commonSkillsToCopy) + { // Set progress to max level 20 skillToCopy.Progress = Math.Min(skillToCopy.Progress.Value, 2000); var existingSkill = newProfile.CharacterData.PmcData.Skills.Common.FirstOrDefault((skill) => skill.Id == skillToCopy.Id); @@ -110,11 +91,13 @@ public class PrestigeController } var masteringSkillsToCopy = prePrestigePmc.Skills.Mastering; - foreach (var skillToCopy in masteringSkillsToCopy) { + foreach (var skillToCopy in masteringSkillsToCopy) + { // Set progress to max level 20 skillToCopy.Progress = Math.Min(skillToCopy.Progress.Value, 2000); var existingSkill = newProfile.CharacterData.PmcData.Skills.Mastering.FirstOrDefault( - (skill) => skill.Id == skillToCopy.Id); + (skill) => skill.Id == skillToCopy.Id + ); if (existingSkill is not null) { existingSkill.Progress = skillToCopy.Progress; @@ -128,7 +111,8 @@ public class PrestigeController // Assumes Prestige data is in descending order var indexOfPrestigeObtained = (int)Math.Min(createRequest.SptForcePrestigeLevel.Value - 1, 1); // Index starts at 0 var currentPrestigeData = _databaseService.GetTemplates().Prestige.Elements[indexOfPrestigeObtained]; - var prestigeRewards = _databaseService.GetTemplates().Prestige.Elements.Slice(0, indexOfPrestigeObtained + 1) + var prestigeRewards = _databaseService.GetTemplates() + .Prestige.Elements.Slice(0, indexOfPrestigeObtained + 1) .SelectMany((prestige) => prestige.Rewards); @@ -138,9 +122,11 @@ public class PrestigeController newProfile.CharacterData.PmcData.Prestige[currentPrestigeData.Id] = _timeUtil.GetTimeStamp(); // Copy transferred items - foreach (var transferRequest in request) { + foreach (var transferRequest in request) + { var item = prePrestigePmc.Inventory.Items.FirstOrDefault((item) => item.Id == transferRequest.Id); - var addItemRequest = new AddItemDirectRequest { + var addItemRequest = new AddItemDirectRequest + { ItemWithModsToAdd = [item], FoundInRaid = item.Upd?.SpawnedInSession, UseSortingTable = false, @@ -150,7 +136,8 @@ public class PrestigeController sessionId, addItemRequest, newProfile.CharacterData.PmcData, - _eventOutputHolder.GetOutput(sessionId)); + _eventOutputHolder.GetOutput(sessionId) + ); } // Add "Prestigious" achievement @@ -167,5 +154,4 @@ public class PrestigeController { _logger.Error("NOT IMPLEMENTED AddPrestigeRewardsToProfile()"); } - } diff --git a/Core/Controllers/ProfileController.cs b/Core/Controllers/ProfileController.cs index aa0926d1..56c1d2e3 100644 --- a/Core/Controllers/ProfileController.cs +++ b/Core/Controllers/ProfileController.cs @@ -18,74 +18,27 @@ using System.Collections.Generic; namespace Core.Controllers; [Injectable] -public class ProfileController +public class ProfileController( + ISptLogger _logger, + HashUtil _hashUtil, + ICloner _cloner, + TimeUtil _timeUtil, + SaveServer _saveServer, + DatabaseService _databaseService, + ItemHelper _itemHelper, + ProfileFixerService _profileFixerService, + LocalisationService _localisationService, + CreateProfileService _createProfileService, + SeasonalEventService _seasonalEventService, + PlayerScavGenerator _playerScavGenerator, + EventOutputHolder _eventOutputHolder, + TraderHelper _traderHelper, + DialogueHelper _dialogueHelper, + QuestHelper _questHelper, + QuestRewardHelper _questRewardHelper, + ProfileHelper _profileHelper +) { - protected ISptLogger _logger; - - protected HashUtil _hashUtil; - protected ICloner _cloner; - protected TimeUtil _timeUtil; - protected SaveServer _saveServer; - protected DatabaseService _databaseService; - protected ItemHelper _itemHelper; - protected ProfileFixerService _profileFixerService; - protected LocalisationService _localisationService; - protected CreateProfileService _createProfileService; - - protected SeasonalEventService _seasonalEventService; - - // TODO: MailSendService mailSendService: MailSendService - protected PlayerScavGenerator _playerScavGenerator; - protected EventOutputHolder _eventOutputHolder; - - protected TraderHelper _traderHelper; - protected DialogueHelper _dialogueHelper; - protected QuestHelper _questHelper; - protected QuestRewardHelper _questRewardHelper; - protected ProfileHelper _profileHelper; - - public ProfileController( - ISptLogger logger, - HashUtil hashUtil, - ICloner cloner, - TimeUtil timeUtil, - SaveServer saveServer, - DatabaseService databaseService, - ItemHelper itemHelper, - ProfileFixerService profileFixerService, - LocalisationService localisationService, - CreateProfileService createProfileService, - SeasonalEventService seasonalEventService, - // TODO: MailSendService mailSendService, - PlayerScavGenerator playerScavGenerator, - EventOutputHolder eventOutputHolder, - TraderHelper traderHelper, - DialogueHelper dialogueHelper, - QuestHelper questHelper, - QuestRewardHelper questRewardHelper, - ProfileHelper profileHelper - ) - { - _logger = logger; - _cloner = cloner; - _hashUtil = hashUtil; - _timeUtil = timeUtil; - _saveServer = saveServer; - _databaseService = databaseService; - _itemHelper = itemHelper; - _profileFixerService = profileFixerService; - _localisationService = localisationService; - _createProfileService = createProfileService; - _seasonalEventService = seasonalEventService; - _playerScavGenerator = playerScavGenerator; - _eventOutputHolder = eventOutputHolder; - _traderHelper = traderHelper; - _dialogueHelper = dialogueHelper; - _questHelper = questHelper; - _questRewardHelper = questRewardHelper; - _profileHelper = profileHelper; - } - /** * Handle /launcher/profiles */ @@ -290,7 +243,8 @@ public class ProfileController // Find hideout items e.g. posters var hideoutRootItems = profileToViewPmc.Inventory.Items.Where(x => hideoutKeys.Contains(x.Id)); var itemsToReturn = new List(); - foreach (var rootItems in hideoutRootItems) { + foreach (var rootItems in hideoutRootItems) + { // Check each root items for children and add var itemWithChildren = _itemHelper.FindAndReturnChildrenAsItems(profileToViewPmc.Inventory.Items, rootItems.Id); itemsToReturn.AddRange(itemWithChildren); @@ -345,7 +299,7 @@ public class ProfileController Hideout = profileToViewPmc.Hideout, CustomizationStash = profileToViewPmc.Inventory.HideoutCustomizationStashId, HideoutAreaStashes = profileToViewPmc.Inventory.HideoutAreaStashes, - Items = itemsToReturn + Items = itemsToReturn }; } diff --git a/Core/Controllers/QuestController.cs b/Core/Controllers/QuestController.cs index ddc46aa1..74a1f8bd 100644 --- a/Core/Controllers/QuestController.cs +++ b/Core/Controllers/QuestController.cs @@ -11,28 +11,14 @@ using Core.Utils; namespace Core.Controllers; [Injectable] -public class QuestController +public class QuestController( + ISptLogger _logger, + TimeUtil _timeUtil, + HttpResponseUtil _httpResponseUtil, + QuestHelper _questHelper, + QuestRewardHelper _questRewardHelper +) { - protected ISptLogger _logger; - protected TimeUtil _timeUtil; - protected HttpResponseUtil _httpResponseUtil; - protected QuestHelper _questHelper; - protected QuestRewardHelper _questRewardHelper; - - public QuestController( - ISptLogger logger, - TimeUtil timeUtil, - HttpResponseUtil httpResponseUtil, - QuestHelper questHelper, - QuestRewardHelper questRewardHelper) - { - _logger = logger; - _timeUtil = timeUtil; - _httpResponseUtil = httpResponseUtil; - _questHelper = questHelper; - _questRewardHelper = questRewardHelper; - } - // TODO public ItemEventRouterResponse CompleteQuest(PmcData pmcData, CompleteQuestRequestData info, string sessionId) { throw new NotImplementedException(); diff --git a/Core/Controllers/RagfairController.cs b/Core/Controllers/RagfairController.cs index 9a52f1d3..328d3c92 100644 --- a/Core/Controllers/RagfairController.cs +++ b/Core/Controllers/RagfairController.cs @@ -6,7 +6,9 @@ using Core.Models.Eft.Ragfair; namespace Core.Controllers; [Injectable] -public class RagfairController +public class RagfairController( + + ) { // TODO public GetOffersResult GetOffers(string sessionId, SearchRequestData info) diff --git a/Core/Controllers/RepairController.cs b/Core/Controllers/RepairController.cs index c8a16fa7..88dea410 100644 --- a/Core/Controllers/RepairController.cs +++ b/Core/Controllers/RepairController.cs @@ -6,7 +6,9 @@ using Core.Models.Eft.Repair; namespace Core.Controllers; [Injectable] -public class RepairController +public class RepairController( + + ) { /// /// Handle TraderRepair event diff --git a/Core/Controllers/RepeatableQuestController.cs b/Core/Controllers/RepeatableQuestController.cs index fef4e76c..5b59fda1 100644 --- a/Core/Controllers/RepeatableQuestController.cs +++ b/Core/Controllers/RepeatableQuestController.cs @@ -19,63 +19,26 @@ using Core.Utils.Extensions; namespace Core.Controllers; [Injectable] -public class RepeatableQuestController +public class RepeatableQuestController( + ISptLogger _logger, + TimeUtil _timeUtil, + HashUtil _hashUtil, + RandomUtil _randomUtil, + HttpResponseUtil _responseUtil, + ProfileHelper _profileHelper, + ProfileFixerService _profileFixerService, + LocalisationService _localisationService, + EventOutputHolder _eventOutputHolder, + PaymentService _paymentService, + RepeatableQuestGenerator _repeatableQuestGenerator, + RepeatableQuestHelper _repeatableQuestHelper, + QuestHelper _questHelper, + DatabaseService _databaseService, + ConfigServer _configServer, + ICloner _cloner +) { - protected ISptLogger _logger; - protected TimeUtil _timeUtil; - protected HashUtil _hashUtil; - protected RandomUtil _randomUtil; - protected HttpResponseUtil _responseUtil; - protected ProfileHelper _profileHelper; - protected ProfileFixerService _profileFixerService; - protected LocalisationService _localisationService; - protected EventOutputHolder _eventOutputHolder; - protected PaymentService _paymentService; - protected RepeatableQuestGenerator _repeatableQuestGenerator; - protected RepeatableQuestHelper _repeatableQuestHelper; - protected QuestHelper _questHelper; - protected DatabaseService _databaseService; - protected ConfigServer _configServer; - protected ICloner _cloner; - protected QuestConfig _questConfig; - - public RepeatableQuestController( - ISptLogger logger, - TimeUtil timeUtil, - HashUtil hashUtil, - RandomUtil randomUtil, - HttpResponseUtil responseUtil, - ProfileHelper profileHelper, - ProfileFixerService profileFixerService, - LocalisationService localisationService, - EventOutputHolder eventOutputHolder, - PaymentService paymentService, - RepeatableQuestGenerator repeatableQuestGenerator, - RepeatableQuestHelper repeatableQuestHelper, - QuestHelper questHelper, - DatabaseService databaseService, - ConfigServer configServer, - ICloner cloner) - { - _logger = logger; - _timeUtil = timeUtil; - _hashUtil = hashUtil; - _randomUtil = randomUtil; - _responseUtil = responseUtil; - _profileHelper = profileHelper; - _profileFixerService = profileFixerService; - _localisationService = localisationService; - _eventOutputHolder = eventOutputHolder; - _paymentService = paymentService; - _repeatableQuestGenerator = repeatableQuestGenerator; - _repeatableQuestHelper = repeatableQuestHelper; - _questHelper = questHelper; - _databaseService = databaseService; - _configServer = configServer; - _cloner = cloner; - - _questConfig = _configServer.GetConfig(); - } + protected QuestConfig _questConfig = _configServer.GetConfig(); public ItemEventRouterResponse ChangeRepeatableQuest(PmcData pmcData, RepeatableQuestChangeRequest info, string sessionId) { @@ -90,7 +53,8 @@ public class RepeatableQuestController var currentTime = _timeUtil.GetTimeStamp(); // Daily / weekly / Daily_Savage - foreach (var repeatableConfig in _questConfig.RepeatableQuests) { + foreach (var repeatableConfig in _questConfig.RepeatableQuests) + { // Get daily/weekly data from profile, add empty object if missing var generatedRepeatables = GetRepeatableQuestSubTypeFromProfile(repeatableConfig, pmcData); var repeatableTypeLower = repeatableConfig.Name.ToLower(); @@ -107,7 +71,7 @@ public class RepeatableQuestController { returnData.Add(generatedRepeatables); - _logger.Debug($"[Quest Check] { repeatableTypeLower} quests are still valid."); + _logger.Debug($"[Quest Check] {repeatableTypeLower} quests are still valid."); continue; } @@ -117,7 +81,7 @@ public class RepeatableQuestController // Set endtime to be now + new duration generatedRepeatables.EndTime = currentTime + repeatableConfig.ResetTime; generatedRepeatables.InactiveQuests = []; - _logger.Debug($"Generating new { repeatableTypeLower}"); + _logger.Debug($"Generating new {repeatableTypeLower}"); // Put old quests to inactive (this is required since only then the client makes them fail due to non-completion) // Also need to push them to the "inactiveQuests" list since we need to remove them from offraidData.profile.Quests @@ -136,11 +100,12 @@ public class RepeatableQuestController while (quest.Id is null && questTypePool.Types.Count > 0) { quest = _repeatableQuestGenerator.GenerateRepeatableQuest( - sessionID, + sessionID, pmcData.Info.Level ?? 0, pmcData.TradersInfo, questTypePool, - repeatableConfig); + repeatableConfig + ); lifeline++; if (lifeline > 10) { @@ -155,6 +120,7 @@ public class RepeatableQuestController { break; } + quest.Side = repeatableConfig.Side; generatedRepeatables.ActiveQuests.Add(quest); } @@ -167,8 +133,10 @@ public class RepeatableQuestController fullProfile.SptData.FreeRepeatableRefreshUsedCount[repeatableTypeLower] = 0; // Create stupid redundant change requirements from quest data - foreach (var quest in generatedRepeatables.ActiveQuests) { - generatedRepeatables.ChangeRequirement[quest.Id] = new ChangeRequirement{ + foreach (var quest in generatedRepeatables.ActiveQuests) + { + generatedRepeatables.ChangeRequirement[quest.Id] = new ChangeRequirement + { ChangeCost = quest.ChangeCost, ChangeStandingCost = _randomUtil.GetArrayValue([0, 0.01]), // Randomise standing cost to replace }; @@ -178,16 +146,19 @@ public class RepeatableQuestController generatedRepeatables.FreeChanges = repeatableConfig.FreeChanges; generatedRepeatables.FreeChangesAvailable = repeatableConfig.FreeChanges; - returnData.Add( new PmcDataRepeatableQuest{ - Id = repeatableConfig.Id, - Name = generatedRepeatables.Name, - EndTime = generatedRepeatables.EndTime, - ActiveQuests = generatedRepeatables.ActiveQuests, - InactiveQuests = generatedRepeatables.InactiveQuests, - ChangeRequirement = generatedRepeatables.ChangeRequirement, - FreeChanges = generatedRepeatables.FreeChanges, - FreeChangesAvailable = generatedRepeatables.FreeChanges, - }); + returnData.Add( + new PmcDataRepeatableQuest + { + Id = repeatableConfig.Id, + Name = generatedRepeatables.Name, + EndTime = generatedRepeatables.EndTime, + ActiveQuests = generatedRepeatables.ActiveQuests, + InactiveQuests = generatedRepeatables.InactiveQuests, + ChangeRequirement = generatedRepeatables.ChangeRequirement, + FreeChanges = generatedRepeatables.FreeChanges, + FreeChangesAvailable = generatedRepeatables.FreeChanges, + } + ); } return returnData; @@ -197,20 +168,22 @@ public class RepeatableQuestController { // Get from profile, add if missing var repeatableQuestDetails = pmcData.RepeatableQuests.FirstOrDefault( - (repeatable) => repeatable.Name == repeatableConfig.Name); + (repeatable) => repeatable.Name == repeatableConfig.Name + ); if (repeatableQuestDetails is not null) { // Not in profile, generate var hasAccess = _profileHelper.HasAccessToRepeatableFreeRefreshSystem(pmcData); - repeatableQuestDetails = new PmcDataRepeatableQuest(){ + repeatableQuestDetails = new PmcDataRepeatableQuest() + { Id = repeatableConfig.Id, - Name= repeatableConfig.Name, - ActiveQuests= [], - InactiveQuests= [], - EndTime= 0, - ChangeRequirement= { }, - FreeChanges= hasAccess? repeatableConfig.FreeChanges: 0, - FreeChangesAvailable= hasAccess? repeatableConfig.FreeChangesAvailable: 0, + Name = repeatableConfig.Name, + ActiveQuests = [], + InactiveQuests = [], + EndTime = 0, + ChangeRequirement = { }, + FreeChanges = hasAccess ? repeatableConfig.FreeChanges : 0, + FreeChangesAvailable = hasAccess ? repeatableConfig.FreeChangesAvailable : 0, }; // Add base object that holds repeatable data to profile @@ -265,7 +238,8 @@ public class RepeatableQuestController private void ProcessExpiredQuests(PmcDataRepeatableQuest generatedRepeatables, PmcData pmcData) { var questsToKeep = new List(); - foreach (var activeQuest in generatedRepeatables.ActiveQuests) { + foreach (var activeQuest in generatedRepeatables.ActiveQuests) + { var questStatusInProfile = pmcData.Quests.FirstOrDefault((quest) => quest.QId == activeQuest.Id); if (questStatusInProfile is null) { @@ -276,7 +250,7 @@ public class RepeatableQuestController if (questStatusInProfile.Status == QuestStatusEnum.AvailableForFinish) { questsToKeep.Add(activeQuest); - _logger.Debug($"Keeping repeatable quest: ${ activeQuest.Id} in activeQuests since it is available to hand in"); + _logger.Debug($"Keeping repeatable quest: ${activeQuest.Id} in activeQuests since it is available to hand in"); continue; } @@ -302,7 +276,8 @@ public class RepeatableQuestController var locations = GetAllowedLocationsForPmcLevel(repeatableConfig.Locations, pmcLevel.Value); // Populate Exploration and Pickup quest locations - foreach (var (location, value) in locations) { + foreach (var (location, value) in locations) + { if (location != ELocationName.any) { questPool.Pool.Exploration.Locations[location] = value; @@ -317,13 +292,14 @@ public class RepeatableQuestController var targetsConfig = _repeatableQuestHelper.ProbabilityObjectArray(eliminationConfig.Targets); // Populate Elimination quest targets and their locations - foreach (var targetKvP in targetsConfig) { + foreach (var targetKvP in targetsConfig) + { // Target is boss if (targetKvP.Data.IsBoss.GetValueOrDefault(false)) { questPool.Pool.Elimination.Targets.TryGetValue(targetKvP.Key, out var targets); - targets.Locations.Clear(); - targets.Locations.Add("any"); + targets.Locations.Clear(); + targets.Locations.Add("any"); } else { @@ -333,10 +309,10 @@ public class RepeatableQuestController questPool.Pool.Elimination.Targets.TryGetValue(targetKvP.Key, out var targets); var targetsClone = _cloner.Clone(targets); var allowedLocations = targetKvP.Key == "Savage" - ? targetsClone.Locations.Where((location) => location != "laboratory") // Exclude labs for Savage targets. - : targetsClone.Locations; + ? targetsClone.Locations.Where((location) => location != "laboratory") // Exclude labs for Savage targets. + : targetsClone.Locations; + - targets.Locations.Clear(); targets.Locations.AddRange(allowedLocations); } @@ -372,9 +348,11 @@ public class RepeatableQuestController { var allowedLocation = new Dictionary>(); - foreach (var (location, value) in locations) { + foreach (var (location, value) in locations) + { var locationNames = new List(); - foreach (var locationName in value) { + foreach (var locationName in value) + { if (IsPmcLevelAllowedOnLocation(locationName, pmcLevel)) { locationNames.Add(locationName); @@ -390,20 +368,23 @@ public class RepeatableQuestController return allowedLocation; } - /** - * Return true if the given pmcLevel is allowed on the given location - * @param location The location name to check - * @param pmcLevel The level of the pmc - * @returns True if the given pmc level is allowed to access the given location - */ - protected bool IsPmcLevelAllowedOnLocation(string location, int pmcLevel) { + /** + * Return true if the given pmcLevel is allowed on the given location + * @param location The location name to check + * @param pmcLevel The level of the pmc + * @returns True if the given pmc level is allowed to access the given location + */ + protected bool IsPmcLevelAllowedOnLocation(string location, int pmcLevel) + { // All PMC levels are allowed for 'any' location requirement - if (location == ELocationName.any.ToString()) { + if (location == ELocationName.any.ToString()) + { return true; } var locationBase = _databaseService.GetLocation(location.ToLower())?.Base; - if (locationBase is not null) { + if (locationBase is not null) + { return true; } @@ -425,9 +406,8 @@ public class RepeatableQuestController } // Add elite bonus to daily quests - if (repeatableConfig.Name.ToLower() == "daily" - && _profileHelper.HasEliteSkillLevel(SkillTypes.Charisma, pmcData) - ) + if (repeatableConfig.Name.ToLower() == "daily" && _profileHelper.HasEliteSkillLevel(SkillTypes.Charisma, pmcData) + ) { // Elite charisma skill gives extra daily quest(s) questCount += _databaseService diff --git a/Core/Controllers/TradeController.cs b/Core/Controllers/TradeController.cs index 2a42b204..f71c64e3 100644 --- a/Core/Controllers/TradeController.cs +++ b/Core/Controllers/TradeController.cs @@ -17,64 +17,25 @@ using Core.Utils; namespace Core.Controllers; [Injectable] -public class TradeController +public class TradeController( + ISptLogger _logger, + DatabaseService _databaseService, + EventOutputHolder _eventOutputHolder, + TradeHelper _tradeHelper, + TimeUtil _timeUtil, + HashUtil _hashUtil, + ItemHelper _itemHelper, + ProfileHelper _profileHelper, + RagfairOfferHelper _ragfairOfferHelper, + TraderHelper _traderHelper, + HttpResponseUtil _httpResponseUtil, + LocalisationService _localisationService, + RagfairPriceService _ragfairPriceService, + ConfigServer _configServer +) { - protected ISptLogger _logger; - protected DatabaseService _databaseService; - protected EventOutputHolder _eventOutputHolder; - protected TradeHelper _tradeHelper; - protected TimeUtil _timeUtil; - protected HashUtil _hashUtil; - protected ItemHelper _itemHelper; - protected ProfileHelper _profileHelper; - protected RagfairOfferHelper _ragfairOfferHelper; - protected TraderHelper _traderHelper; - // protected RagfairServer _ragfairServer; - protected HttpResponseUtil _httpResponseUtil; - protected LocalisationService _localisationService; - protected RagfairPriceService _ragfairPriceService; - // protected MailSendService _mailSendService; - protected ConfigServer _configServer; - - protected RagfairConfig _ragfairConfig; - protected TraderConfig _traderConfig; - - public TradeController - ( - ISptLogger logger, - DatabaseService databaseService, - EventOutputHolder eventOutputHolder, - TradeHelper tradeHelper, - TimeUtil timeUtil, - HashUtil hashUtil, - ItemHelper itemHelper, - ProfileHelper profileHelper, - RagfairOfferHelper ragfairOfferHelper, - TraderHelper traderHelper, - HttpResponseUtil httpResponseUtil, - LocalisationService localisationService, - RagfairPriceService ragfairPriceService, - ConfigServer configServer - ) - { - _logger = logger; - _databaseService = databaseService; - _eventOutputHolder = eventOutputHolder; - _tradeHelper = tradeHelper; - _timeUtil = timeUtil; - _hashUtil = hashUtil; - _itemHelper = itemHelper; - _profileHelper = profileHelper; - _ragfairOfferHelper = ragfairOfferHelper; - _traderHelper = traderHelper; - _httpResponseUtil = httpResponseUtil; - _localisationService = localisationService; - _ragfairPriceService = ragfairPriceService; - _configServer = configServer; - - _ragfairConfig = _configServer.GetConfig(); - _traderConfig = _configServer.GetConfig(); - } + protected RagfairConfig _ragfairConfig = _configServer.GetConfig(); + protected TraderConfig _traderConfig = _configServer.GetConfig(); /// /// Handle TradingConfirm event diff --git a/Core/Controllers/TraderController.cs b/Core/Controllers/TraderController.cs index b7d9e43a..c2a4bc80 100644 --- a/Core/Controllers/TraderController.cs +++ b/Core/Controllers/TraderController.cs @@ -16,60 +16,24 @@ using Core.Utils.Cloners; namespace Core.Controllers; [Injectable] -public class TraderController +public class TraderController( + ISptLogger _logger, + TimeUtil _timeUtil, + DatabaseService _databaseService, + TraderAssortHelper _traderAssortHelper, + TraderAssortService _traderAssortService, + ProfileHelper _profileHelper, + TraderHelper _traderHelper, + PaymentHelper _paymentHelper, + RagfairPriceService _ragfairPriceService, + TraderPurchasePersisterService _traderPurchasePersisterService, + FenceService _fenceService, + FenceBaseAssortGenerator _fenceBaseAssortGenerator, + ConfigServer _configServer, + ICloner _cloner +) { - private ISptLogger _logger; - private TimeUtil _timeUtil; - private DatabaseService _databaseService; - private TraderAssortHelper _traderAssortHelper; - private TraderAssortService _traderAssortService; - private ProfileHelper _profileHelper; - private TraderHelper _traderHelper; - private PaymentHelper _paymentHelper; - private RagfairPriceService _ragfairPriceService; - private TraderPurchasePersisterService _traderPurchasePersisterService; - private FenceService _fenceService; - private FenceBaseAssortGenerator _fenceBaseAssortGenerator; - private ConfigServer _configServer; - private ICloner _cloner; - - private TraderConfig _traderConfig; - - public TraderController - ( - ISptLogger logger, - TimeUtil timeUtil, - DatabaseService databaseService, - TraderAssortHelper traderAssortHelper, - TraderAssortService traderAssortService, - ProfileHelper profileHelper, - TraderHelper traderHelper, - PaymentHelper paymentHelper, - RagfairPriceService ragfairPriceService, - TraderPurchasePersisterService traderPurchasePersisterService, - FenceService fenceService, - FenceBaseAssortGenerator fenceBaseAssortGenerator, - ConfigServer configServer, - ICloner cloner - ) - { - _logger = logger; - _timeUtil = timeUtil; - _databaseService = databaseService; - _traderAssortHelper = traderAssortHelper; - _traderAssortService = traderAssortService; - _profileHelper = profileHelper; - _traderHelper = traderHelper; - _paymentHelper = paymentHelper; - _ragfairPriceService = ragfairPriceService; - _traderPurchasePersisterService = traderPurchasePersisterService; - _fenceService = fenceService; - _fenceBaseAssortGenerator = fenceBaseAssortGenerator; - _configServer = configServer; - _cloner = cloner; - - _traderConfig = configServer.GetConfig(); - } + protected TraderConfig _traderConfig = _configServer.GetConfig(); /// /// Runs when onLoad event is fired @@ -114,9 +78,9 @@ public class TraderController var assortsClone = _cloner.Clone(trader.Value.Assort); _traderAssortService.SetPristineTraderAssort(trader.Key, assortsClone); } - + _traderPurchasePersisterService.RemoveStalePurchasesFromProfiles(trader.Key); - + // Set to next hour on clock or current time + 60 mins trader.Value.Base.NextResupply = traderResetStartsWithServer ? _traderHelper.GetNextUpdateTimestamp(trader.Value.Base.Id) : nextHourTimestamp; } @@ -140,7 +104,7 @@ public class TraderController { if (_fenceService.NeedsPartialRefresh()) _fenceService.GenerateFenceAssorts(); - + continue; } } @@ -149,7 +113,7 @@ public class TraderController if (_traderAssortHelper.TraderAssortsHaveExpired(traderId)) { _traderAssortHelper.ResetExpiredTrader(data); - + // Reset purchase data per trader as they have independent reset times _traderPurchasePersisterService.ResetTraderPurchasesStoredInProfile(traderId); } diff --git a/Core/Controllers/WeatherController.cs b/Core/Controllers/WeatherController.cs index 7b6023dc..e3950cb0 100644 --- a/Core/Controllers/WeatherController.cs +++ b/Core/Controllers/WeatherController.cs @@ -13,35 +13,17 @@ using Core.Services; namespace Core.Controllers; [Injectable] -public class WeatherController +public class WeatherController( + ISptLogger _logger, + WeatherGenerator _weatherGenerator, + SeasonalEventService _seasonalEventService, + RaidWeatherService _raidWeatherService, + WeatherHelper _weatherHelper, + ConfigServer _configServer +) { - protected ISptLogger _logger; - protected WeatherGenerator _weatherGenerator; - protected SeasonalEventService _seasonalEventService; - protected RaidWeatherService _raidWeatherService; - protected WeatherHelper _weatherHelper; - protected ConfigServer _configServer; + protected WeatherConfig _weatherConfig = _configServer.GetConfig(); - protected WeatherConfig _weatherConfig; - - public WeatherController( - ISptLogger logger, - WeatherGenerator weatherGenerator, - SeasonalEventService seasonalEventService, - RaidWeatherService raidWeatherService, - WeatherHelper weatherHelper, - ConfigServer configServer - ) - { - _logger = logger; - _weatherGenerator = weatherGenerator; - _seasonalEventService = seasonalEventService; - _raidWeatherService = raidWeatherService; - _weatherHelper = weatherHelper; - _configServer = configServer; - - _weatherConfig = _configServer.GetConfig(); - } /// /// Handle client/weather diff --git a/Core/Controllers/WishlistController.cs b/Core/Controllers/WishlistController.cs index 6558046b..2e268dbc 100644 --- a/Core/Controllers/WishlistController.cs +++ b/Core/Controllers/WishlistController.cs @@ -7,16 +7,10 @@ using Core.Routers; namespace Core.Controllers; [Injectable] -public class WishlistController +public class WishlistController( + EventOutputHolder _eventOutputHolder +) { - protected EventOutputHolder _eventOutputHolder; - - public WishlistController( - EventOutputHolder eventOutputHolder) - { - _eventOutputHolder = eventOutputHolder; - } - /// /// Handle AddToWishList /// diff --git a/UnitTests/Mock/MockLogger.cs b/UnitTests/Mock/MockLogger.cs index be786b86..a43b2458 100644 --- a/UnitTests/Mock/MockLogger.cs +++ b/UnitTests/Mock/MockLogger.cs @@ -15,6 +15,11 @@ public class MockLogger : ISptLogger Console.WriteLine(data); } + public void LogWithColor(string data, LogTextColor? textColor = null, LogBackgroundColor? backgroundColor = null, Exception? ex = null) + { + throw new NotImplementedException(); + } + public void Success(string data, Exception? ex = null) { Console.WriteLine(data); @@ -45,6 +50,11 @@ public class MockLogger : ISptLogger Console.WriteLine(data); } + public void WriteToLogFile(string body) + { + throw new NotImplementedException(); + } + public void WriteToLogFile(object body) { Console.WriteLine(body);