change to prim Ctors

This commit is contained in:
CWX
2025-01-18 19:17:35 +00:00
parent 41d2bfa1d9
commit 5c5a42b535
25 changed files with 551 additions and 973 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ namespace Core.Controllers;
[Injectable]
public class AchievementController(
DatabaseService _databaseService
)
)
{
public GetAchievementsResponse GetAchievements(string sessionID)
{
+63 -71
View File
@@ -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<CustomizationController> _logger,
EventOutputHolder _eventOutputHolder,
DatabaseService _databaseService,
SaveServer _saveServer,
LocalisationService _localisationService,
ProfileHelper _profileHelper,
ICloner _cloner
)
{
protected ISptLogger<CustomizationController> _logger;
protected EventOutputHolder _eventOutputHolder;
protected DatabaseService _databaseService;
protected SaveServer _saveServer;
protected LocalisationService _localisationService;
protected ProfileHelper _profileHelper;
protected ICloner _cloner;
public CustomizationController
(
ISptLogger<CustomizationController> 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;
}
/// <summary>
/// Get purchasable clothing items from trader that match players side (usec/bear)
/// </summary>
@@ -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;
+77 -79
View File
@@ -13,42 +13,20 @@ using Core.Utils;
namespace Core.Controllers;
[Injectable]
public class DialogueController
public class DialogueController(
ISptLogger<DialogueController> _logger,
TimeUtil _timeUtil,
DialogueHelper _dialogueHelper,
ProfileHelper _profileHelper,
ConfigServer _configServer,
SaveServer _saveServer,
LocalisationService _localisationService,
MailSendService _mailSendService,
IEnumerable<IDialogueChatBot> dialogueChatBots
)
{
protected ISptLogger<DialogueController> _logger;
protected TimeUtil _timeUtil;
protected DialogueHelper _dialogueHelper;
protected ProfileHelper _profileHelper;
protected ConfigServer _configServer;
protected SaveServer _saveServer;
protected LocalisationService _localisationService;
protected MailSendService _mailSendService;
protected List<IDialogueChatBot> _dialogueChatBots;
protected CoreConfig _coreConfig;
public DialogueController(
ISptLogger<DialogueController> logger,
TimeUtil timeUtil,
DialogueHelper dialogueHelper,
ProfileHelper profileHelper,
ConfigServer configServer,
SaveServer saveServer,
LocalisationService localisationService,
MailSendService mailSendService,
IEnumerable<IDialogueChatBot> dialogueChatBots)
{
_logger = logger;
_timeUtil = timeUtil;
_dialogueHelper = dialogueHelper;
_profileHelper = profileHelper;
_configServer = configServer;
_saveServer = saveServer;
_localisationService = localisationService;
_mailSendService = mailSendService;
_dialogueChatBots = dialogueChatBots.ToList();
_coreConfig = _configServer.GetConfig<CoreConfig>();
}
protected CoreConfig _coreConfig = _configServer.GetConfig<CoreConfig>();
protected List<IDialogueChatBot> _dialogueChatBots = dialogueChatBots.ToList();
/// <summary>
///
@@ -56,13 +34,14 @@ public class DialogueController
/// <param name="chatBot"></param>
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);
}
/// <summary>
/// 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<UserDialogInfo>();
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<Message> GetActiveMessagesFromDialog(string sessionId, string dialogueId) {
protected List<Message> GetActiveMessagesFromDialog(string sessionId, string dialogueId)
{
var timeNow = _timeUtil.GetTimeStamp();
var dialogs = _dialogueHelper.GetDialogsForProfile(sessionId);
return dialogs[dialogueId].Messages.Where((message) => timeNow<message.DateTime + (message.MaxStorageTime ?? 0)).ToList();
return dialogs[dialogueId].Messages.Where((message) => timeNow < message.DateTime + (message.MaxStorageTime ?? 0)).ToList();
}
/// <summary>
@@ -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
/// <param name="sessionId">Session id</param>
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);
}
+58 -110
View File
@@ -20,96 +20,36 @@ using Server;
namespace Core.Controllers;
[Injectable]
public class GameController
public class GameController(
ISptLogger<GameController> _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<GameController> _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<GameController> 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<CoreConfig>();
_httpConfig = configServer.GetConfig<HttpConfig>();
_ragfairConfig = configServer.GetConfig<RagfairConfig>();
_hideoutConfig = configServer.GetConfig<HideoutConfig>();
_botConfig = configServer.GetConfig<BotConfig>();
}
protected CoreConfig _coreConfig = _configServer.GetConfig<CoreConfig>();
protected HttpConfig _httpConfig = _configServer.GetConfig<HttpConfig>();
protected RagfairConfig _ragfairConfig = _configServer.GetConfig<RagfairConfig>();
protected HideoutConfig _hideoutConfig = _configServer.GetConfig<HideoutConfig>();
protected BotConfig _botConfig = _configServer.GetConfig<BotConfig>();
/// <summary>
/// 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() };
}
/// <summary>
@@ -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;
}
}
/// <summary>
@@ -531,26 +475,31 @@ public class GameController
_logger.Error("NOT IMPLEMENTED - _preSptModLoader SaveActiveModsToProfile()");
//var activeMods = _preSptModLoader.GetImportedModDetails(); //TODO IMPLEMENT _preSptModLoader
var activeMods = new Dictionary<string, ModDetails>();
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
/// <param name="fullProfile">Profile to check for dialog in</param>
private void CheckForAndRemoveUndefinedDialogues(SptProfile fullProfile)
{
if (fullProfile.DialogueRecords.TryGetValue("undefined", out var undefinedDialog))
{
fullProfile.DialogueRecords.Remove("undefined");
+25 -74
View File
@@ -16,81 +16,32 @@ using Core.Utils.Cloners;
namespace Core.Controllers;
[Injectable]
public class HideoutController
public class HideoutController(
ISptLogger<HideoutController> _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<HideoutController> _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<HideoutController> 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<HideoutConfig>();
}
protected HideoutConfig _hideoutConfig = _configServer.GetConfig<HideoutConfig>();
public void StartUpgrade(PmcData pmcData, HideoutUpgradeRequestData info, string sessionId, ItemEventRouterResponse output)
{
+14 -43
View File
@@ -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<InRaidController> _logger,
SaveServer _saveServer,
ProfileHelper _profileHelper,
LocalisationService _localisationService,
ApplicationContext _applicationContext,
ConfigServer _configServer
)
{
protected ISptLogger<InRaidController> _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<InRaidController> 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<InRaidConfig>();
_botConfig = configServer.GetConfig<BotConfig>();
}
protected InRaidConfig _inRaidConfig = _configServer.GetConfig<InRaidConfig>();
protected BotConfig _botConfig = _configServer.GetConfig<BotConfig>();
/// <summary>
/// Save locationId to active profiles in-raid object AND app context
/// </summary>
/// <param name="sessionId">Session id</param>
/// <param name="info">Register player request</param>
public void AddPlayer(
string sessionId,
RegisterPlayerRequestData info)
public void AddPlayer(string sessionId, RegisterPlayerRequestData info)
{
throw new NotImplementedException();
}
@@ -63,9 +40,7 @@ public class InRaidController
/// </summary>
/// <param name="offRaidProfileData"></param>
/// <param name="sessionId"></param>
public void SavePostRaidProfileForScav(
ScavSaveRequestData offRaidProfileData,
string sessionId)
public void SavePostRaidProfileForScav(ScavSaveRequestData offRaidProfileData, string sessionId)
{
throw new NotImplementedException();
}
@@ -84,9 +59,7 @@ public class InRaidController
/// <param name="url"></param>
/// <param name="sessionId"></param>
/// <returns></returns>
public double GetTraitorScavHostileChance(
string url,
string sessionId)
public double GetTraitorScavHostileChance(string url, string sessionId)
{
throw new NotImplementedException();
}
@@ -97,9 +70,7 @@ public class InRaidController
/// <param name="url"></param>
/// <param name="sessionId"></param>
/// <returns></returns>
public List<string> GetBossConvertSettings(
string url,
string sessionId)
public List<string> GetBossConvertSettings(string url, string sessionId)
{
return _botConfig.AssaultToBossConversion.BossesToConvertToWeights.Keys.ToList();
}
+15 -24
View File
@@ -10,28 +10,15 @@ using Core.Services;
namespace Core.Controllers;
[Injectable]
public class InsuranceController
public class InsuranceController(
ISptLogger<InsuranceController> _logger,
ProfileHelper _profileHelper,
InsuranceService _insuranceService,
ConfigServer _configServer
)
{
private readonly ISptLogger<InsuranceController> _logger;
private readonly ProfileHelper _profileHelper;
private readonly InsuranceService _insuranceService;
private readonly ConfigServer _configServer;
private readonly InsuranceConfig _insuranceConfig;
protected InsuranceConfig _insuranceConfig = _configServer.GetConfig<InsuranceConfig>();
public InsuranceController(
ISptLogger<InsuranceController> logger,
ProfileHelper profileHelper,
InsuranceService insuranceService,
ConfigServer configServer
)
{
_logger = logger;
_profileHelper = profileHelper;
_insuranceService = insuranceService;
_configServer = configServer;
_insuranceConfig = _configServer.GetConfig<InsuranceConfig>();
}
/**
* Handle client/insurance/items/list/cost
@@ -47,23 +34,27 @@ public class InsuranceController
var pmcData = _profileHelper.GetPmcProfile(sessionId);
var inventoryItemsHash = new Dictionary<string, Item>();
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<string, double>();
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;
+23 -67
View File
@@ -14,73 +14,29 @@ using Core.Utils.Cloners;
namespace Core.Controllers;
[Injectable]
public class InventoryController
public class InventoryController(
ISptLogger<InventoryController> _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<InventoryController> _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<InventoryController> 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);
}
+35 -52
View File
@@ -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<LauncherController> _logger,
HashUtil _hashUtil,
TimeUtil _timeUtil,
RandomUtil _randomUtil,
SaveServer _saveServer,
HttpServerHelper _httpServerHelper,
ProfileHelper _profileHelper,
DatabaseService _databaseService,
LocalisationService _localisationService,
ConfigServer _configServer
)
{
protected CoreConfig _coreConfig;
protected ISptLogger<LauncherController> _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<LauncherController> 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<CoreConfig>();
}
protected CoreConfig _coreConfig = _configServer.GetConfig<CoreConfig>();
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;
+8 -19
View File
@@ -10,24 +10,13 @@ using Core.Utils.Cloners;
namespace Core.Controllers;
[Injectable]
public class LocationController
public class LocationController(
ISptLogger<LocationController> _logger,
DatabaseService _databaseService,
AirdropService _airdropService,
ICloner _cloner
)
{
protected ISptLogger<LocationController> _logger;
protected DatabaseService _databaseService;
protected AirdropService _airdropService;
protected ICloner _cloner;
public LocationController(
ISptLogger<LocationController> logger,
DatabaseService databaseService,
AirdropService airdropService,
ICloner cloner)
{
_logger = logger;
_databaseService = databaseService;
_airdropService = airdropService;
_cloner = cloner;
}
/// <summary>
/// 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();
}
}
+3 -1
View File
@@ -4,7 +4,9 @@ using Core.Models.Eft.Match;
namespace Core.Controllers;
[Injectable]
public class MatchController
public class MatchController(
)
{
/// <summary>
///
+3 -9
View File
@@ -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;
}
/// <summary>
///
/// </summary>
+4 -12
View File
@@ -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;
}
/// <summary>
/// Resolve an array of session notifications.
///
+8 -18
View File
@@ -8,23 +8,12 @@ using Core.Services;
namespace Core.Controllers;
[Injectable]
public class PresetController
public class PresetController(
ISptLogger<PresetController> _logger,
PresetHelper _presetHelper,
DatabaseService _databaseService
)
{
protected ISptLogger<PresetController> _logger;
protected PresetHelper _presetHelper;
protected DatabaseService _databaseService;
public PresetController(
ISptLogger<PresetController> logger,
PresetHelper presetHelper,
DatabaseService databaseService
)
{
_logger = logger;
_presetHelper = presetHelper;
_databaseService = databaseService;
}
/// <summary>
///
/// </summary>
@@ -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);
}
}
+32 -46
View File
@@ -16,42 +16,18 @@ using Core.Utils.Cloners;
namespace Core.Controllers;
[Injectable]
public class PrestigeController
public class PrestigeController(
ISptLogger<PrestigeController> _logger,
TimeUtil _timeUtil,
InventoryHelper _inventoryHelper,
ProfileHelper _profileHelper,
EventOutputHolder _eventOutputHolder,
CreateProfileService _createProfileService,
DatabaseService _databaseService,
SaveServer _saveServer,
ICloner _cloner
)
{
protected ISptLogger<PrestigeController> _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<PrestigeController> 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;
}
/// <summary>
/// Handle /client/prestige/list
/// </summary>
@@ -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()");
}
}
+23 -69
View File
@@ -18,74 +18,27 @@ using System.Collections.Generic;
namespace Core.Controllers;
[Injectable]
public class ProfileController
public class ProfileController(
ISptLogger<ProfileController> _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<ProfileController> _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<ProfileController> 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<Item>();
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
};
}
+7 -21
View File
@@ -11,28 +11,14 @@ using Core.Utils;
namespace Core.Controllers;
[Injectable]
public class QuestController
public class QuestController(
ISptLogger<QuestController> _logger,
TimeUtil _timeUtil,
HttpResponseUtil _httpResponseUtil,
QuestHelper _questHelper,
QuestRewardHelper _questRewardHelper
)
{
protected ISptLogger<QuestController> _logger;
protected TimeUtil _timeUtil;
protected HttpResponseUtil _httpResponseUtil;
protected QuestHelper _questHelper;
protected QuestRewardHelper _questRewardHelper;
public QuestController(
ISptLogger<QuestController> 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();
+3 -1
View File
@@ -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)
+3 -1
View File
@@ -6,7 +6,9 @@ using Core.Models.Eft.Repair;
namespace Core.Controllers;
[Injectable]
public class RepairController
public class RepairController(
)
{
/// <summary>
/// Handle TraderRepair event
+85 -105
View File
@@ -19,63 +19,26 @@ using Core.Utils.Extensions;
namespace Core.Controllers;
[Injectable]
public class RepeatableQuestController
public class RepeatableQuestController(
ISptLogger<RepeatableQuestChangeRequest> _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<RepeatableQuestChangeRequest> _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<RepeatableQuestChangeRequest> 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<QuestConfig>();
}
protected QuestConfig _questConfig = _configServer.GetConfig<QuestConfig>();
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<RepeatableQuest>();
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<Target, string, BossInfo>(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<ELocationName, List<string>>();
foreach (var (location, value) in locations) {
foreach (var (location, value) in locations)
{
var locationNames = new List<string>();
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
+18 -57
View File
@@ -17,64 +17,25 @@ using Core.Utils;
namespace Core.Controllers;
[Injectable]
public class TradeController
public class TradeController(
ISptLogger<TradeController> _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<TradeController> _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<TradeController> 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<RagfairConfig>();
_traderConfig = _configServer.GetConfig<TraderConfig>();
}
protected RagfairConfig _ragfairConfig = _configServer.GetConfig<RagfairConfig>();
protected TraderConfig _traderConfig = _configServer.GetConfig<TraderConfig>();
/// <summary>
/// Handle TradingConfirm event
+21 -57
View File
@@ -16,60 +16,24 @@ using Core.Utils.Cloners;
namespace Core.Controllers;
[Injectable]
public class TraderController
public class TraderController(
ISptLogger<TraderController> _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<TraderController> _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<TraderController> 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<TraderConfig>();
}
protected TraderConfig _traderConfig = _configServer.GetConfig<TraderConfig>();
/// <summary>
/// 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);
}
+9 -27
View File
@@ -13,35 +13,17 @@ using Core.Services;
namespace Core.Controllers;
[Injectable]
public class WeatherController
public class WeatherController(
ISptLogger<WeatherController> _logger,
WeatherGenerator _weatherGenerator,
SeasonalEventService _seasonalEventService,
RaidWeatherService _raidWeatherService,
WeatherHelper _weatherHelper,
ConfigServer _configServer
)
{
protected ISptLogger<WeatherController> _logger;
protected WeatherGenerator _weatherGenerator;
protected SeasonalEventService _seasonalEventService;
protected RaidWeatherService _raidWeatherService;
protected WeatherHelper _weatherHelper;
protected ConfigServer _configServer;
protected WeatherConfig _weatherConfig = _configServer.GetConfig<WeatherConfig>();
protected WeatherConfig _weatherConfig;
public WeatherController(
ISptLogger<WeatherController> 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<WeatherConfig>();
}
/// <summary>
/// Handle client/weather
+3 -9
View File
@@ -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;
}
/// <summary>
/// Handle AddToWishList
/// </summary>
+10
View File
@@ -15,6 +15,11 @@ public class MockLogger<T> : ISptLogger<T>
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<T> : ISptLogger<T>
Console.WriteLine(data);
}
public void WriteToLogFile(string body)
{
throw new NotImplementedException();
}
public void WriteToLogFile(object body)
{
Console.WriteLine(body);