51 lines
1.6 KiB
C#
51 lines
1.6 KiB
C#
using Core.Annotations;
|
|
using Core.Models.Spt.Config;
|
|
using Core.Models.Utils;
|
|
using Core.Utils;
|
|
using Core.Utils.Cloners;
|
|
using Core.Utils.Collections;
|
|
|
|
namespace Core.Helpers;
|
|
|
|
[Injectable]
|
|
public class RepeatableQuestHelper
|
|
{
|
|
protected ISptLogger<RepeatableQuestHelper> _logger;
|
|
protected ICloner _cloner;
|
|
protected MathUtil _mathUtil;
|
|
|
|
public RepeatableQuestHelper(
|
|
ISptLogger<RepeatableQuestHelper> logger,
|
|
ICloner cloner,
|
|
MathUtil mathUtil
|
|
)
|
|
{
|
|
_logger = logger;
|
|
_cloner = cloner;
|
|
_mathUtil = mathUtil;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get the relevant elimination config based on the current players PMC level
|
|
/// </summary>
|
|
/// <param name="pmcLevel">Level of PMC character</param>
|
|
/// <param name="repeatableConfig">Main repeatable config</param>
|
|
/// <returns>EliminationConfig</returns>
|
|
public EliminationConfig? GetEliminationConfigByPmcLevel(int pmcLevel, RepeatableQuestConfig repeatableConfig)
|
|
{
|
|
return repeatableConfig.QuestConfig.Elimination.FirstOrDefault(
|
|
(x) => pmcLevel >= x.LevelRange.Min && pmcLevel <= x.LevelRange.Max
|
|
);
|
|
}
|
|
|
|
public ProbabilityObjectArray<K, V>
|
|
ProbabilityObjectArray<K, V>(
|
|
List<ProbabilityObject<K, V>> configArrayInput
|
|
) // TODO: ProbabilityObjectArray<K, V> for return type , param type was List<ProbabilityObject<K, V>>
|
|
{
|
|
var configArray = _cloner.Clone(configArrayInput);
|
|
var probabilityArray = new ProbabilityObjectArray<K, V>(_mathUtil, _cloner, configArray);
|
|
return probabilityArray;
|
|
}
|
|
}
|