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
+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()");
}
}