change to prim Ctors
This commit is contained in:
@@ -7,7 +7,7 @@ namespace Core.Controllers;
|
||||
[Injectable]
|
||||
public class AchievementController(
|
||||
DatabaseService _databaseService
|
||||
)
|
||||
)
|
||||
{
|
||||
public GetAchievementsResponse GetAchievements(string sessionID)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,9 @@ using Core.Models.Eft.Match;
|
||||
namespace Core.Controllers;
|
||||
|
||||
[Injectable]
|
||||
public class MatchController
|
||||
public class MatchController(
|
||||
|
||||
)
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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,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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -6,7 +6,9 @@ using Core.Models.Eft.Repair;
|
||||
namespace Core.Controllers;
|
||||
|
||||
[Injectable]
|
||||
public class RepairController
|
||||
public class RepairController(
|
||||
|
||||
)
|
||||
{
|
||||
/// <summary>
|
||||
/// Handle TraderRepair event
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user